EDA二 4位加法计数器设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6)可调时钟输出单元
底板上ADJ_CLK为4位拨码开关SW17--SW20来控制输出40M分频后的可调时钟具体对应如下
SW20 SW19 SW18 SW17 ADJ_CLK
1 1 1 1 1Hz
0 1 1 1 5Hz
1 0 1 1 10Hz
0 0 1 1 25Hz
1 1 0 1 50Hz
0 1 0 1 500Hz
1 0 0 1 1KHz
0 0 0 1 2.5KHz
1 1 1 0 10KHz
0 1 1 0 20KHz
1 0 1 0 50KHz
0 0 1 0 200KHz
1 1 0 0 500KHz
0 1 0 0 2MHz
1 0 0 0 5MHz
0 0 0 0 20MHz
CLK1 10MHz固定时钟(40MHz分频产生)
CLK2 1MHz
CLK3 100KHz
CLK4 5KHz
CLK5 100Hz
实验四 4位加法计数器设计
一、实验目的
学习时序逻辑电路的设计、仿真和硬件测试;加深理解VHDL设计技术。
二、实验原理
图4-4-1是一含计数使能、异步复位和计数值并行预置功能的4位加法计数器,其VHDL描述参见例4-4-1。由图4-4-1所示,图中间是4位锁存器(即D触发器);RST是异步清零信号,高电平有效;CLK是锁存信号;D[3..0]是4位数据输入端;PST是同步并行预置信号,高电平有效,置数值为Data[3:0];Outy[3:0]是计数值输出;Cout是计数溢出信号。
① RST为异步清零信号,高电平有效,一旦RST=1,4位锁存器输出状态复位为“0000”;
② ENA为同步计数使能信号,当CLK为上升沿时
z当ENA=“1”时,加法计数,CQI= CQI+1;
z当ENA=“0”时,保持原数,CQI= CQI;
③ PST为同步并行预置信号,当CLK为上升沿时
图4-4-1含计数使能、异步复位和计数值并行预置功能的4位加法计数器
三、实验内容
(1)对例4-4-1含计数使能、异步复位和计数值并行预置功能的4位加法计数器的VHDL设计,说明例中各语句的作用,并详细描述示例的功能特点。
(2)在例4-4-1的基础上进行修改,完成含异步清0和同步时钟使能功能的十进制加法计数器的VHDL设计,在Quartus II上对其进行编辑、编译、综合、适配、时序仿真、引脚锁定以及硬件下载,并且进行元件封装入库。
引脚锁定以及硬件下载测试:功能选择位M[3..0]状态为0001,即16位拨码SW1—SW16被选中输出到总线D[15..0],用SW1(D0)控制ENA;用SW2(D1)控制RST;Outy是计数输
出,对应IO12—IO9(用导线连接L1—L4,高位靠左),计数溢出Cout对应IO13,(用导线连接L5);时钟CLK对应IO3,用导线将ADJ_CLK与IO3相连,调节拨码SW17—SW20使输出1Hz 信号。引脚锁定后进行重新编译、下载和硬件测试实验。
四、预习要求
(1)阅读附录2,掌握时序逻辑电路的VHDL设计;
(2)完成实验内容(1)、(2)的VHDL源程序的编写,并逐行加以注释。
五、报告要求
(1)实验原理、设计过程、编译仿真波形和分析结果,以及硬件测试实验结果写进实验报告。
(2)附加实验内容的VHDL设计。
七、思考题
(1)在例4-4-1中是否可以不定义信号 CQI,而直接用输出端口信号完成加法运算,即: OUTY <= OUTY + 1 ?
(2)修改例4-4-1,用进程实现进位信号的检出。
八、参考程序
【例4-4-1】
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT4B IS
PORT (CLK : IN STD_LOGIC;
RST : IN STD_LOGIC;
ENA : IN STD_LOGIC;
PST : IN STD_LOGIC;
DATA : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ;
OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT : OUT STD_LOGIC;
M : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
);
END CNT4B;
ARCHITECTURE behav OF CNT4B IS
SIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
M<= "0001";
P_REG: PROCESS(CLK, RST, ENA, PST)
BEGIN
IF RST = '1' THEN CQI <= "0000";
ELSIF CLK'EVENT AND CLK = '1' THEN
IF PST = '1' THEN CQI <= DATA;
ELSIF ENA = '1' THEN CQI <= CQI + 1;
ELSE CQI <= CQI;
END IF;
END IF;
OUTY <= CQI ;
END PROCESS P_REG ;
COUT<=CQI(0) AND CQI(1) AND CQI(2) AND CQI(3); --进位输出
END behav;
实验2范例:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10 IS
PORT(CLK : IN STD_LOGIC;
RST : IN STD_LOGIC;
ENA : IN STD_LOGIC;
OUTY :OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT :OUT STD_LOGIC ;
M : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)
);
END CNT10;
ARCHITECTURE behav OF CNT10 IS
SIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
M<= "0001";
P_REG :PROCESS(CLK,RST,ENA)
BEGIN
IF RST='1' THEN CQI<="0000";
ELSIF CLK'EVENT AND CLK='1'THEN
IF ENA='1' THEN
IF CQI<"1001" THEN CQI<=CQI+1;
ELSE CQI <="0000";
END IF;
END IF;
END IF;
OUTY<=CQI;
END PROCESS P_REG;
COUT<=CQI(0) AND CQI(3);
END behav;
用SW1(D0)控制ENA;PIN_B3
用SW2(D1)控制RST;PIN_A4
Outy是计数输出,对应IO12—IO9(用导线连接L1—L4,高位靠左),计数溢出Cout对应
IO13,(用导线连接L5);
Outy[3]- PIN_T14、Outy[2]- PIN_T15、Outy[1]- PIN_T12、Outy[0]- PIN_T13、Cout- PIN_F13时钟CLK对应IO3:PIN_T11,用导线将ADJ_CLK与IO3相连,调节拨码SW17—SW20使输出1Hz信号。