7段数码管控制系统引脚.docx
- 文档编号:6227073
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:13
- 大小:64.92KB
7段数码管控制系统引脚.docx
《7段数码管控制系统引脚.docx》由会员分享,可在线阅读,更多相关《7段数码管控制系统引脚.docx(13页珍藏版)》请在冰豆网上搜索。
7段数码管控制系统引脚
《EDA技术综合设计》
课程设计报告
报告题目:
计数器7段数码管控制接口技术
作者所在系部:
作者所在专业:
作者所在班级:
作者姓名:
作者学号:
指导教师:
完成时间:
容摘要
掌握VHDL语言基本知识,并熟练运用VHDL语言来编写程序,来下载实践到硬件上,培养使用设计综合电路的能力,养成提供文档资料的习惯和规编程的思想。
利用VHDL语言设计一个七段数码管控制引脚,在时钟信号的控制下,使6位数码管动态刷新显示十进制计数器及其进位,十二进制计数器,四位二进制可逆计数器,六十进制计数器的计数结果,这期间需要seltime分频器来动态的给各个计数器分配数码管,并显示数字的变化。
关键词:
VHDL语言编程七段数码管控制引脚芯片
一概述………………………………………………………………………1
二方案设计与论证……………………………………………………………………1
三单元电路设计与参数计算…………………………………………………………1
3.1数码管译码器……………………………………………………………………1
3.2十进制计数器……………………………………………………………………2
3.3六十进制计数器…………………………………………………………………3
3.4四位二进制可逆计数器…………………………………………………………5
3.5时间数据扫描分时选择模块……………………………………………………6
3.6顶层文件…………………………………………………………………………8
四总的原理图…………………………………………………………………………9
五器件编程与下载……………………………………………………………………9
六性能测试与分析(要围绕设计要求中的各项指标进行)………………………10
七实验设备……………………………………………………………………………10
八心得体会……………………………………………………………………………10
九参考文献……………………………………………………………………………10
课程设计任务书
课题
名称
7段数码管控制引脚
完成
时间
2011.
12.12
指导
教师
胡辉
职称
副教授
学生
庄仲
班级
B09212
总体设计要求和技术要点
通过本课程的学习使学生掌握可编程器件、EDA开发系统软件、硬件描述语言和电子线路设计与技能训练等各方面知识;提高工程实践能力;学会应用EDA技术解决一些简单的电子设计问题。
具体要求:
1.设计一个共阴7段数码管控制接口,在硬件时钟电路的基础上,采用分频器,输出一个1S的时钟信号,同时显示2、3、4所要求的计数器。
2.设计一个带使能输入、进位输出及同步清0的增1十进制计数器。
3.设计一个带使能输入及同步清0的六十进制同步加法计数器;
4.设计一个四位二进制可逆计数器;
工作容及时间进度安排
第16周:
周一、周二:
设计项目的输入、编译、仿真
周三:
器件编程下载与硬件验证
周四:
成果验收与总结
周五:
撰写课程设计总结报告
课程设计成果
把编写好的程序下载到试验箱,使数码管能够按照编写的程序显示出正确的结果,实验成功。
一、概述
设计一个共阴7段数码管控制接口,在硬件时钟电路的基础上,采用分频器,输出一个1S的时钟信号。
一个带使能输入、进位输出及同步清0的增1十进制计数器。
一个带使能输入及同步清0的六十进制同步加法计数器和一个四位二进制可逆计数器。
要求:
在时钟信号的控制下,使6位数码管动态刷新显示上述计数器的计数结果。
二、方案设计与论证
首先VHDL语言编写底层文件和三个计数器的程序,再编写分频器和数码管的程序,最后用例化语句编写顶层文件,分别都调试在确认无误后把顶层文件下载到试验箱,连接导线,完成后实现在时钟信号的控制下,6位数码管动态刷新显示三个计数器的技术结果。
三、单元电路设计
1.数码管译码器程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitydeledis
port(num:
instd_logic_vector(3downto0);
led:
outstd_logic_vector(6downto0));
enddeled;
architecturefunofdeledis
begin
--abcdefg
led<="1111110"whennum="0000"else
"0110000"whennum="0001"else
"1101101"whennum="0010"else
"1111001"whennum="0011"else
"0110011"whennum="0100"else
"1011011"whennum="0101"else
"1011111"whennum="0110"else
"1110000"whennum="0111"else
"1111111"whennum="1000"else
"1111011"whennum="1001"else
"1110111"whennum="1010"else
"0011111"whennum="1011"else
"1001110"whennum="1100"else
"0111101"whennum="1101"else
"1001111"whennum="1110"else
"1000111"whennum="1111";
endfun;
原理图
2.十进制计数器程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityt10is
port(clk,clr,en:
instd_logic;
co:
outstd_logic;
q:
bufferstd_logic_vector(3downto0));
endt10;
architecturebehaveoft10is
begin
process(clk,clr,en)
begin
if(en='0')thenq<="0000";
elsif(clk'eventandclk='1')then
if(clr='1')thenq<="0000";
elsif(q=9)thenq<="0000";
co<='1';
elseq<=q+1;
co<='0';
endif;
endif;
endprocess;
endbehave;
原理图
仿真波形图
3.六十进制计数器程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYt60IS
PORT(clk,clr,en:
INSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDt60;
ARCHITECTUREbehaveOFt60IS
SIGNALqh,ql:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
PROCESS(clk,clr,en)
BEGIN
IF(en='1')THENql<="0000";qh<="0000";
ELSIF(clk'eventandclk='1')THEN
IF(clr='1')THENql<="0000";qh<="0000";
ELSIF(ql=9)THENql<="0000";
IF(qh=5)THENqh<="0000";
ELSEqh<=qh+1;
ENDIF;
ELSEql<=ql+1;
ENDIF;
ENDIF;
q<=qh&ql;
ENDPROCESS;
ENDbehave;
原理图
波形图
4.四位二进制可逆计数器程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitykn4is
port(clk,clr,plus_sub:
instd_logic;
q:
bufferstd_logic_vector(3downto0));
endkn4;
architecturebehaveofkn4is
begin
process(clk,clr,plus_sub)
begin
if(clk'eventandclk='1')then
if(clr='1')thenq<="0000";
elsif(plus_sub='1')then
if(q=15)thenq<="0000";
elseq<=q+1;
endif;
elsif(plus_sub='0')then
if(q=0)thenq<="1111";
elseq<=q-1;
endif;
endif;
endif;
endprocess;
endbehave;
原理图
波形图
5.时间数据扫描分时选择模块程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entityseltimeis
port(clk,reset,ci:
instd_logic;
Kn4,cnt10:
instd_logic_vector(3downto0);
t60:
instd_logic_vector(7downto0);
daout:
outstd_logic_vector(3downto0);
dp:
outstd_logic;
sel:
outstd_logic_vector(2downto0));
endseltime;
architecturefunofseltimeis
signalcount:
std_logic_vector(2downto0);
begin
sel<=count;
process(clk,reset)
begin
if(reset='0')then
count<="000";
elsif(clk'eventandclk='1')then
if(count>="101")then
count<="000";
else
count<=count+1;
endif;
endif;
casecountis
when"000"=>daout<=cnt10(3downto0);dp<='0';
when"001"=>daout(3downto1)<="000";
daout(0)<=ci;dp<='0';
when"010"=>daout<=kn4(3downto0);dp<='0';
when"011"=>daout<=cnt60(7downto4);dp<='0';
whenothers=>daout<=cnt60(3downto0);dp<='0';
endcase;
endprocess;
endfun;
原理图
6.顶层文件程序
libraryieee;
useieee.std_logic_1164.all;
entityss_topis
port(clk,clr,en,plus_sub,clkdsp:
instd_logic;
a,b,c,d,e,f,g,dpout:
outstd_logic;
sel:
outstd_logic_vector(2downto0));
endss_top;
architectureoneofss_topis
componentt60
port(clk,clr,en:
instd_logic;
q:
outstd_logic_vector(7downto0));
endcomponent;
componentkn4
port(clk,clr,plus_sub:
instd_logic;
q:
bufferstd_logic_vector(3downto0));
endcomponent;
componentt10
port(clk,clr,en:
instd_logic;
co:
outstd_logic;
q:
bufferstd_logic_vector(3downto0));
endcomponent;
componentdeled
PORT(num:
instd_logic_vector(3downto0);
led:
outstd_logic_vector(6downto0));
endcomponent;
componentseltime
port(clk,reset,ci:
instd_logic;
t60:
instd_logic_vector(7downto0);
kn4:
instd_logic_vector(3downto0);
t10:
instd_logic_vector(3downto0);
dp:
outstd_logic;
daout:
outstd_logic_vector(3downto0);
sel:
outstd_logic_vector(2downto0));
endcomponent;
signalt60_out:
std_logic_vector(7downto0);
signalkn4_out:
std_logic_vector(3downto0);
signalt10_out:
std_logic_vector(3downto0);
signalt10_co:
std_logic;
signalledout:
std_logic_vector(6downto0);
signalseltime_out:
std_logic_vector(3downto0);
Begin
a<=ledout(6);b<=ledout(5);c<=ledout(4);
d<=ledout(3);e<=ledout
(2);f<=ledout
(1);g<=ledout(0);
u1:
deledportmap(num=>seltime_out,led=>ledout);
u2:
cnt10portmap(clk=>clk,clr=>clr,en=>en,co=>cnt10_co,q=>cnt10_out);
u3:
cnt60portmap(clk=>clk,clr=>clr,en=>en,q=>cnt60_out);
u4:
kn4portmap(clk=>clk,clr=>clr,plus_sub=>plus_sub,q=>cnt16_out);
u5:
seltime
portmap(clk=>clkdsp,reset=>clr,ci=>cnt10_co,cnt60=>cnt60_out,
kn4=>kn4_out,cnt10=>cnt10_out,
daout=>seltime_out,dp=>dpout,sel=>sel);
endone;
4、总的原理图
五、器件编程与下载
用VHDL语言编译四种计数器的、译码器和分时器的程序,然后把他们用例化语句编译成顶层文件,仿真成功以后下载到试验箱通过数码管显示出结果,试验成功。
六、性能测试与分析
各个程序编译完成以后,通过波形图检测程序的正确性,当源程序en=1时程序才能运行,当clr=1时清零,等于零时工作,在两个都工作的情况下在clk的上升沿时数据进位,clk=0时保持,等于1时运行。
如果程序按以上所说正常循环说明程序正确。
七、实验设备
计算机一台,EDA实验箱一台,下载电缆一根,导线若干。
八、心得体会
通过一周的EDA课设实践,虽然时间不是很长,但是我学到了很多。
通过实践让我能够熟练的运用VHDL语言和Quartus‖软件,发现这个软件功能十分的强大,而且用途也很广。
在实践中我们遇到了挺多的困难,在开始的程序编写中其实还挺顺利的,但是把它编写到EDA试验箱中让它通过数码管显示出结果时,事实并不是想象中的那样,通过多次的更改和实验,最终实验成功。
到最后找到失败的原因时让我们都感到很惊讶,它仅仅是一个让我们所有人都忽略的小小的细节,这也让我明白了一个道理,做任何事,不管大小都要认真仔细,要集中百分之百的注意力在上面,保证没有一丝遗漏,才能把事情做好。
还有在遇到困难时要有不抛弃不放弃的劲头,要相信在任何时候办法总比困难多。
这次实践让我收获很多,为我以后的学习打下了坚实的基础,也为我以后的学习生活增添的信心。
九、参考文献
1.国洪,胡辉,明山《EDA技术与实验》机械工业
2.徐惠民,安德宁《数字逻辑设计与VHDL描述》机械工业
3.璇,臧春华《数字系统设计与PLD应用技术》电子工业
4.赜,朱如琪《在系统可编程技术实践教程》科学
5.曙光,郭万有等《可编程逻辑器件原理、开发与应用》电子科技大学出版
指导教师评语及设计成绩
评语
课程设计成绩:
指导教师:
日期:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数码管 控制系统 引脚
![提示](https://static.bdocx.com/images/bang_tan.gif)