请教修改VHDL程序

来源:百度知道 编辑:UC知道 时间:2024/07/04 12:12:04
带时钟使能的计数器,程序如下
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY CNT10 IS
PORT(CLK: IN STD_LOGIC;计数时钟信号
CLR: IN STD_LOGIC;清零信号
ENA: IN STD_LOGIC;时钟使能
CQ:OUT INTEGER RANGE 0 TO 15;四位计数输出
CARRY_OUT: OUT STD_LOGIC);计数进位
END ENTITY CNT10;
ARCHITECTURE ART OF CNT10 IS
SIGNAL CQI:INTEGER RANGE 0 TO 15;
BEGIN
PROCESS(CLK,CLR,ENA)IS
BEGIN
IF CLR='1'THEN CQI<=0;
ELSIF CLK'EVENT AND CLK='1'THEN
IF ENA='1'THEN
IF CQI<9 THEN CQI<=CQI+1;
ELSE CQI<=0;END IF;
END IF;
END IF;
END PROCESS;
PROCESS(CQI)IS
BEGIN
IF CQI=9 THEN CARRY_OUT<='1';
ELSE CARRY_OUT<='0';END IF;
END PROCESS;
CQ<=CQI;
END ARCHITECTURE ART;
我想将CQ:OUT INTEGER RANGE 0 TO 15修改为STD_LOGIC_VECTOR.求教下面部分怎么修改,谢谢

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY CNT10 IS
PORT(CLK: IN STD_LOGIC;计数时钟信号
CLR: IN STD_LOGIC;清零信号
ENA: IN STD_LOGIC;时钟使能
CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);四位计数输出
CARRY_OUT: OUT STD_LOGIC);计数进位
END ENTITY CNT10;
ARCHITECTURE ART OF CNT10 IS
BEGIN
PROCESS(CLK,CLR,ENA)
VARIABLE CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF CLR='1'THEN CQI:=(OTHERS=>'0');
ELSIF CLK'EVENT AND CLK='1'THEN
IF ENA='1'THEN
IF CQI<9 THEN CQI:=CQI+1;
ELSE CQI:=(OTHERS=>'0');END IF;
END IF;
END IF;
IF CQI=9 THEN CARRY_OUT<='1';
ELSE CARRY_OUT<='0';END IF;
CQ<=CQI;
END PROCESS;
CQ<=CQI;
END ART;

其实你程序你的还是挺好的,只是语法方面有点马虎而已。这个东西教材上有,你可以自己看看,那个CQI也可以用信号,但是在这里用变量更好,因为变量是即时赋值的。