异步清零和同步时钟使能的4位加法计数器 下载本文

内容发布更新时间 : 2024/5/19 22:46:51星期一 下面是文章的全部内容请认真阅读。

Error (10482): VHDL error at CNT4.vhd(18): object \

declared异步清零和同步时钟使能的4位加法计数器

一、实验目的:

学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。

二、实验原理

本试验中所要设计的计数器,由4位带异步清零的加法计数器和一个4位锁

存器组成。其中,rst是异步清零信号,高电平有效;clk是计数时钟,同时也是锁存信号;ENA为计数器输出使能控制。当ENA为‘1’时,加法计数器的输出值加载于锁存器的数据端,;当ENA为‘0’时锁存器输出为高阻态。当计数器输出“1111”时,进位信号COUT为“1”。 三、

实验内容

1)画出该计数器的实体框图0

2)用VHDL语言完成上述计数器的行为级设计。

------------------------------------------------------------------------------------------------------- 程序: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT4 IS

PORT (RST,CLK,ENA:IN STD_LOGIC; COUT: OUT STD_LOGIC;

OUTY :OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END CNT4;

ARCHITECTURE behv OF CNT4 IS BEGIN

PROCESS (RST,ENA,CLK)

VARIABLE CQI :STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

IF RST='1' THEN CQI :=(OTHERS =>'0'); ELSIF CLK'EVENT AND CLK='1' THEN IF ENA ='1' THEN

IF CQI < 15 THEN CQI:=CQI+1; ELSE CQI :=(OTHERS =>'0'); END IF; END IF; END IF;

IF CQI =15 THEN COUT<='1'; ELSE COUT <='0'; END IF; OUTY <=CQI; END PROCESS; END behv;

3)用QuartusII对上述设计进行编译、综合、仿真,给出其所有信号的仿

真波形和时序分析数据。

--------------------------------------------------------------------------------------------------

仿真波形:

引脚锁定:

信号 clk rst ena Outy(3) Outy(2) Outy(1) Outy(0) cout 旧试验箱 管脚号 连接的器件 43 Clk1 35 开关2 30 开关1 29 LED12 28 LED11 27 LED10 25 LED9 23 LED7 新试验箱No.5 管脚号 连接的器件 153 CLK2 234 键2 233 键1 1 LED1 2 LED2 3 LED3 4 LED4 6 LED6 LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT4 IS

PORT (A,CLK,B:IN STD_LOGIC; COUT: OUT STD_LOGIC;

Y :OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END CNT4;

ARCHITECTURE behav OF CNT4 IS

SIGNAL CQI: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN

PROCESS (A,B,CLK) BEGIN

IF A='1' THEN CQI <= \ Y <= \ COUT<='0';

ELSIF CLK'EVENT AND CLK='1' THEN IF B ='1' THEN

CQI<=CQI+1; END IF; END IF; Y<=CQI;

COUT<=CQI(0) AND CQI(1) AND CQI (2) AND CQI (3); END PROCESS; END behav;