8位可逆计数器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、课程设计的目的与要求
1.设计目的
●熟悉MAXPLUS2/Quartus II软件,掌握软件的VHDL程序输入、程序编译和程序仿真操作;
●学习利用VHDL语言设计数字时序电路程序;
●了解可逆计数器电路的工作方式。
2.设计要求
●利用VHDL语言设计八位可逆计数器电路,并利用相关软件进行编译和仿真。并通过其波形输入
验证电路设计。
二、设计正文
1、功能及要求:
8位可逆计数器根据计数脉冲的不同,控制计数器在同步信号脉冲的作用下,进行加1或减1操
作。其真值表如下所示:
表1 8位可逆计数器真值表
CLR UPDOWN CLK Q0~Q7
1 X X 00000000
0 1 ↑加1
0 0 ↑减1
可逆计数器的计数方向,由特殊的控制端UPDOWN控制。
●当UPDOWN=1时,计数器进行加1操作;
●当UPDOWN=0时,计数器进行减1操作。
2、八位可逆计数器7VHDL源程序:
LIBRARY IEEE; ——库
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ——包含程序包std_logic_1164.all和std_logic_unsigned.all ENTITY count8 IS
PORT(clr, clk,updn: IN STD_LOGIC;
q0,q1,q2,q3,q4,q5,q6,q7: OUT STD_LOGIC); ——端口表:输入输出数据为标准逻辑型END count8;
ARCHITECTURE exam OF count8 IS ——定义名为exam的结构体
SIGNAL count_8 : STD_LOGIC_VECTOR (7 DOWNTO 0);——在结构体内部定义信号count_8标准逻辑矢量BEGIN
q0<=count_8(0); ——将输出端口分别传递给count_8
q1<=count_8(1);
q2<=count_8(2);
q3<=count_8(3);
q4<=count_8(4);
q5<=count_8(5);
q6<=count_8(6);
q7<=count_8(7);
PROCESS(clk,clr)
BEGIN ——进程开始
IF (clr='1')THEN
count_8<="00000000"; ——清零信号有效时输出为“00000000”
ELSIF (clk'event AND clk='1')THEN
IF (updn='1') THEN
count_8<=count_8+'1'; ——当上升沿到来时,控制信号updn=1时,加计数
ELSE
count_8<=count_8-'1'; ——当上升沿到来时,控制信号updn=0时,减计数
END IF;
END IF;
END PROCESS;
END exam;
三、课程设计总结
图1 八位可逆计数器增计数仿真波形图
1、由波形图1红色方框中清零信号clr=1有效,不管updn,clk为何值,此时输出端q1—q7均输出为0,与真值表clr功能相符;
2、当clr=0,updn=1时,图1中橙色部分出现输出延迟;在时钟脉冲作用下,由q0,q1,q2,q3,q4,q5,q6,q7分别输出依次为00000000,00000001,00000010,00000011,00000100,00000101和图中其他波形数据,符合增计数的加法计数功能。
图2 八位可逆计数器减计数仿真波形图
由波形图2看出当clr=0,updn=1时,从蓝线处t=7.31ns输出结果才开始出现,即延迟时间为t=7.31ns; ,图2中同图1一样出现输出延迟;由q0,q1,q2,q3,q4,q5,q6,q7分别输出依次为11111111,11111110,11111101,11111100等图2中其他数据,符合可逆计数器的减法计数功能。
表2 8位可逆计数器真值表
CLR UPDOWN CLK Q0~Q7
1 X X 00000000
0 1 ↑加1
0 0 ↑减1
根据仿真结果和真值表可知,该程序实现了八位可逆计数器的全部功能。