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

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条回答
abcd1369
2019-03-26 05:01
书上说的PROCESS里的并行你理解错了吧。
像上面的
if  A  then
end if;
if  B then
end if;
这里面两个if相对来说虽然在一个process里。但是他们也是并行的。 if里面的东西你可以理解为顺序的。 不同的process也是并行的。

一周热门 更多>