计数器及数码显示实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北华航天工业学院
课程设计报告(论文)
课设名称: EDA技术与应用
设计课题:计数器及数码显示综合设计
专业班级: B12241
学生姓名:白冬雪田尉均
指导教师:齐建玲
设计时间: 2014年 12月 15日
北华航天工业学院电子工程系
EDA 课程设计任务书
姓名:白冬雪田
尉均
专业:
测控技术与
仪器
班级:B12241
指导教师:齐建玲职称:教授
课程设计题目:计数器及数码显示综合设计
已知技术参数和设计要求:
①总体设计要求:设计一个能在7段数码管上动态刷新显示十进制、十二进制、六十进制、四位二进制计数器计数结果的VHDL语言程序并在EDA实验开发系统上实现该功能。
②技术要点:VHDL语言编辑程序、共阴7段数码管及FPGA可编程芯片的工作原理与连线。
所需仪器设备:实验箱,电脑
成果验收形式:实验报告,硬件实验结果
参考文献:
李国洪、胡辉、沈明山等编著《EDA技术与实验》—机械工业出版社出版。
时间安排
2014年12月14日-15日编辑VHDL语言程序
2014年12月16日硬件调试程序
2014年12月17日实验箱答辩验收
指导教师:齐建玲教研室主任:王晓
2014年 12月 17日
内容摘要
用VHDL语言在MAX+PLUS2环境下
设计一个带使能输入、进位输出及同步清零的十进制计数器。
设计一个带使能输入及同步清零的十二进制计数器。
设计一个带使能输入及同步清零的六十进制加法计数器。
设计一个四位二进制可逆计数器。
设计一个共阴7段数码管控制接口,在时钟信号的控制下,使六位数码管动态刷新显示上述计数器的计数结果。
最后在EDA实验开发系统实验操作。
目录
一、概述 (1)
二、方案设计与论证 (1)
三、单元电路设计与参数计算 (1)
1、十进制计数器 (1)
2、十二进制计数器 (2)
3、六十进制计数器 (3)
4、十六进制可逆计数器 (4)
5、六进制计数器 (5)
6、数据选择器 (6)
7、 4-7译码器 (7)
四、顶层文件截图 (8)
五、安装与调试 (8)
六、心得体会 (8)
1.实验注意事项 (8)
2.收获与体会 (9)
一、概述
用VHDL语言在MAX+PLUS2环境下
设计一个带使能输入、进位输出及同步清零的十进制计数器。
设计一个带使能输入及同步清零的十二进制计数器。
设计一个带使能输入及同步清零的六十进制加法计数器。
设计一个四位二进制可逆计数器。
设计一个共阴7段数码管控制接口,在时钟信号的控制下,使六位数码管动态刷新显示上述计数器的计数结果。
二、方案设计与论证
四个计数器同时开始计数,通过计数器的使能端可以随时控制计数器是否继
续工作,通过同步清零端可以随时把任何一个计数器清零重新开始计数。四位二
进制可逆计数器可以随时进行加计数或减计数。
通过六进制计数器扫描数码管和作为对其他4个计数器的选择信号,再通过
一个数据选择器选择出计数器的输出信号,通过4-7译码器的输出信号在数码
当时钟信号频率足够大时可以实现六个数码管“同时”显示各计数器的计数
结果。因为人的眼睛分辨不出各数码管的快速跳变。所以能实现所要求的同步计
数的目的。
三、单元电路设计与参数计算
1、十进制计数器
①代码:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY JINZHI10 IS
PORT( CLK,en,rst:IN STD_LOGIC;
ci :OUT STD_LOGIC;
dout :BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) );
END JINZHI10;
ARCHITECTURE ABC OF JINZHI10 IS
BEGIN
ci<='1' WHEN dout="1001" AND en='1' ELSE '0';
PROCESS(CLK,en,rst)
BEGIN
IF RISING_EDGE(CLK) THEN
IF rst='1' THEN dout<=(OTHERS=>'0');
ELSIF en='1' THEN
IF dout="1001" THEN dout<="0000";
ELSE dout<=dout+1;
END IF;
END IF;
END IF;
END PROCESS;
END ABC;
②仿真结果:
2、十二进制计数器
①代码:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY JINZHI12 IS
PORT( CLK,en,rst:IN STD_LOGIC;
dout :BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); END JINZHI12;
ARCHITECTURE ABC OF JINZHI12 IS
BEGIN
PROCESS(CLK,en,rst)
BEGIN
if RISING_EDGE(CLK) THEN
if rst='1'then dout<=(others=>'0');
ELSIF en='1' THEN
IF dout="1011" THEN dout<="0000";
ELSE dout<=dout+1;
END IF;
END IF;
END IF;
END PROCESS;
END ABC;
②仿真结果