打印

vhdl: 变量change没有初始化,这段代码能实现计数功能吗?

[复制链接]
2124|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yfm1202|  楼主 | 2007-11-5 11:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
--代码如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity counter is
port (data :in std_logic_vector (7 downto 0);
      a,clk,clr,en :in std_logic;
      mm :out std_logic_vector (7 downto 0));
end;

architecture AA of counter is
signal hold: std_logic_vector (7 downto 0);
begin
    process(clk)
        variable change :std_logic_vector (7 downto 0);
    begin

        if (clk'event and clk='1') then
            if clr='0' then
                change:="00000000";
            elsif en='1' then
            
                if a='1' then
                    change:=change+data;    --其初始值为如何?
                        
                    if ((change(3)='1') and ((change(2)='1') or
                       (change(1)='1'))) or 
                       (not(hold(7 downto 4)=change(7 downto 4)-data(7 downto 4))) then
                        change:=change+6;
                    end if;
                    
                    if ((change(7)='1') and ((change(6)='1') or (change(5)='1'))) then
                        change:="00000000";
                    end if;

                else
                    change:=change-data;
                    
                    if ((change(3)='1') and ((change(2)='1') or (change(1)='1'))) or (not(hold(7 downto 4)=change(7 downto 4)-data(7 downto 4)))  then
                        change:=change-6;
                    end if;
                    
                    if ((change(7)='1') and ((change(6)='1') or (change(5)='1'))) then
                        change:="00000000";
                    end if;
                end if;
            end if;
        end if;
        mm<=change;    --如果是不允许呢?change 即:variable 的初始值如何?
        hold<=change;
    end process;
end aa;

相关帖子

沙发
yfm1202|  楼主 | 2007-11-5 14:19 | 只看该作者

这是示例代码,理论上来讲,是没有错的。请指教,各位?

使用特权

评论回复
板凳
jzt369| | 2007-11-9 20:55 | 只看该作者

!

分两种情况来讲
1、仿真的话,不做初始化即为X,如果不置初值是不会计数的
2、综合器综合后的电路是会计数的,如果计数条件满足的话

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

15

帖子

0

粉丝