帮忙解释:一个VHDL语言描述的10进制计数器cnt10
十进制计数器cn10
cnt10的输入端口:
en——允许计数
clk--时钟;
reset--复位;
输出端口为:
q--计数值输出;
carry--进位输出;
具体描述如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY cnt10 IS
PORT(reset,en,clk:IN STD_LOGIC;
carry:OUT STD_ULOGIC;
q:OUT STD_ULOGIC_VECTOR(3 DOWNTO 0));
END cnt10;
ARCHITECTURE rtl OF cnt10 IS
SIGNAL qs:STD_LOGIC_VECTOR(3 DOWNTO O);
SIGNAL ca:STD_ULOGIC;
BEGIN
PROCESS(clk)
VARIABLE q10:INTEGER;
BEGIN
IF(clk'EVENT AND clk='1')THEN
IF(reset='1')THEN
q10:=0;
ELSIF(en='1')THEN
IF(q10=9)THEN
q10:=0
ca<='0'; ---(1)
ELSIF(q10=8)THEN
q10:=q10+1;
ca<='1'; ---(2)
ELSE
q10:=q10+1;
ca<='0';
END IF;
END IF;
END IF;
qs<=CONV_STD_LOGIC_VECTOR(q10,4);
q<=TO_STDULOGICVECTOR(qs);
END PROCESS;
PROCESS(ca,en)
BEGIN
carry<=ca AND en;
END PROCESS;
END rtl;
我初学vhdl,对这个描述有点问题:为什么当q10是9的时候,再加1,不进位,而是8的时候,加1就进位呢?就是上面的(1)(2)两个句子,按我的理解,难道不是应该当9加1的时候,carry不应该是1吗,8加1的时候,carry应该是0啊?