【小白求助】有关十进制加法计数器的问题~

2019-03-25 08:52发布

先上程序~

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10 IS
     PORT(CLK,RST,EN:IN STD_LOGIC;
                             CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
                          COUT:OUT STD_LOGIC);
END CNT10;
ARCHITECTURE behav OF CNT10 IS
BEGIN
     PROCESS(CLK,RST,EN)
          VARIABLE CQI :STD_LOGIC_VECTOR(3 DOWNTO 0);
     BEGIN
          IF RST='1' THEN
                  CQI:=(OTHERS=>'0');
          ELSIF CLK'EVENT AND CLK='1' THEN
                  IF EN='1' THEN
                         IF CQI<9 THEN
                                CQI:=CQI+1;
                        ELSE
                                CQI:=(OTHERS=>'0');
                        END IF;
                  END IF;
           END IF;
           IF CQI=9 THEN
                  COUT<='1';
           ELSE
                  COUT<='0';
          END IF;
          CQ<=CQI;
     END PROCESS;
END behav;

我们这学期正在学EDA,这是课本上的一段程序,我仿真过了,都没有问题~

我不懂的地方:
1、              IF CQI<9 THEN
                                CQI:=CQI+1;
                    ELSE
                                CQI:=(OTHERS=>'0');
                    END IF;
执行这个语句时,不是应该当检测到CQI=9时,就把CQI归零了吗?那么为什么下面还有一个
           IF CQI=9 THEN
                  COUT<='1';
           ELSE
                  COUT<='0';
          END IF;

CQI怎么还会等于9呢?

2、为什么比较时,可以写CQI<9,而赋值时就不能直接写CQI:=9呢?

求各路大神指教~~~先谢谢啦~~~ 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
8条回答
blue_bm
2019-03-26 07:03
嗯,我的理解方式出了问题,还是拿软件语言的思路去理解的...今天查阅了书上相关的内容,大致意思是说,PROCESS里面的语句是顺序执行的,但是完成对信号的赋值是在END PROCESS这个语句时才发生的,各个赋值语句之间的延时非常短,可以看成是并行~  这样理解是对的吗?

一周热门 更多>