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

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-25 16:12
嗯,可是, CQI 的定义是     VARIABLE CQI :STD_LOGIC_VECTOR(3 DOWNTO 0); 是一个4位二进制的变量呀,为什么可以让CQI直接跟十进制数9做比较,而不能直接用十进制整数给它赋值呢?~~~

另外,你说的第二点,我不太懂...是说CQI<9和CQI=9的判断是并行的吗?可不可以讲得稍微详细点呐?

一周热门 更多>