《计数器7段数码管控制接口技术课程设计报告.doc》由会员分享,可在线阅读,更多相关《计数器7段数码管控制接口技术课程设计报告.doc(15页珍藏版)》请在三一办公上搜索。
1、EDA技术综合设计 课程设计报告报 告 题 目:计数器7段数码管控制接口技术作者所在系部: 作者所在专业: 作者所在班级: 作 者 姓 名 : 作 者 学 号 : 指导教师姓名: 完 成 时 间 : 内 容 摘 要掌握VHDL语言基本知识,并熟练运用VHDL语言来编写程序,来下载实践到硬件上,培养使用设计综合电路的能力,养成提供文档资料的习惯和规范编程的思想。利用VHDL语言设计一个七段数码管控制引脚,在时钟信号的控制下,使6位数码管动态刷新显示十进制计数器及其进位,十二进制计数器,四位二进制可逆计数器,六十进制计数器的计数结果,这期间需要seltime分频器来动态的给各个计数器分配数码管,并
2、显示数字的变化。关键词:VHDL语言 编程 七段数码管控制引脚 芯片目 录一 概 述 1二 方案设计与论证1三 单元电路设计与参数计算1 3.1数码管译码器13.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总体设计要求和技术要点通过本课程的学习使学生
3、掌握可编程器件、EDA开发系统软件、硬件描述语言和电子线路设计与技能训练等各方面知识;提高工程实践能力;学会应用EDA技术解决一些简单的电子设计问题。具体要求: 1设计一个共阴7段数码管控制接口,在硬件时钟电路的基础上,采用分频器,输出一个1S的时钟信号,同时显示2、3、4所要求的计数器。2设计一个带使能输入、进位输出及同步清0的增1十进制计数器。3设计一个带使能输入及同步清0的六十进制同步加法计数器; 4设计一个四位二进制可逆计数器;工作内容及时间进度安排第16周:周一、周二:设计项目的输入、编译、仿真周三:器件编程下载与硬件验证周四:成果验收与总结周五:撰写课程设计总结报告课程设计成果把编
4、写好的程序下载到试验箱,使数码管能够按照编写的程序显示出正确的结果,实验成功。一、概述 设计一个共阴7段数码管控制接口,在硬件时钟电路的基础上,采用分频器,输 出一个1S的时钟信号。一个带使能输入、进位输出及同步清0的增1十进制计数器。一个带使能输入及同步清0的六十进制同步加法计数器和一个四位二进制可逆计数器。要求:在时钟信号的控制下,使6位数码管动态刷新显示上述计数器的计数结果。二、方案设计与论证 首先VHDL语言编写底层文件和三个计数器的程序,再编写分频器和数码管的程序,最后用例化语句编写顶层文件,分别都调试在确认无误后把顶层文件下载到试验箱,连接导线,完成后实现在时钟信号的控制下,6位数
5、码管动态刷新显示三个计数器的技术结果。三、单元电路设计1.数码管译码器程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity deled is port(num:in std_logic_vector(3 downto 0); led:out std_logic_vector(6 downto 0);end deled;architecture fun of deled isbegin- abcdefgled=1111110when num=0000else 0110000when nu
6、m=0001else 1101101when num=0010else 1111001when num=0011else 0110011when num=0100else 1011011when num=0101else 1011111when num=0110else 1110000when num=0111else 1111111when num=1000else 1111011when num=1001else 1110111when num=1010else 0011111when num=1011else 1001110when num=1100else 0111101when nu
7、m=1101else 1001111when num=1110else 1000111when num=1111;end fun;原理图 2.十进制计数器程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt10 is port(clk,clr,en:in std_logic; co:out std_logic; q:buffer std_logic_vector(3 downto 0);end cnt10;architecture behave of cnt10 is begi
8、n process(clk,clr,en) begin if(en=0)then q=0000; elsif(clkevent and clk=1)then if(clr=1)then q=0000; elsif(q=9)then q=0000; co=1; else q=q+1; co=0; end if; end if; end process;end behave;原理图仿真波形图3.六十进制计数器程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt60 IS PORT(
9、clk,clr,en:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END cnt60;ARCHITECTURE behave OF cnt60 IS SIGNAL qh,ql:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(clk,clr,en) BEGIN IF(en=1)THEN ql=0000;qh=0000; ELSIF(clkevent and clk=1)THEN IF(clr=1)THEN ql=0000;qh=0000; ELSIF(ql=9)THEN ql=0000; IF(qh=5
10、)THEN qh=0000; ELSE qh=qh+1; END IF; ELSE ql=ql+1; END IF; END IF; q=qh&ql; END PROCESS; END behave;原理图波形图4.四位二进制可逆计数器程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity kn4 is port(clk,clr,plus_sub:in std_logic; q:buffer std_logic_vector(3 downto 0); end kn4;architectu
11、re behave of kn4 is begin process(clk,clr,plus_sub) begin if(clkevent and clk=1)then if(clr=1)then q=0000; elsif(plus_sub=1)then if(q=15)then q=0000; else q=q+1; end if; elsif(plus_sub=0)then if(q=0)then q=1111; else q=q-1; end if; end if; end if; end process;end behave;原理图波形图 5.时间数据扫描分时选择模块程序librar
12、y ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity seltime is port(clk,reset,ci:in std_logic; Kn4,cnt10:in std_logic_vector(3 downto 0); cnt60:in std_logic_vector(7 downto 0); daout:out std_logic_vector(3 downto 0); dp:out std_logic; sel:out std_lo
13、gic_vector(2 downto 0); end seltime;architecture fun of seltime is signal count:std_logic_vector(2 downto 0); begin sel=count; process(clk,reset) begin if(reset=0)then count=101)then count=000; else countdaout=cnt10(3 downto 0);dpdaout(3 downto 1)=000; daout(0)=ci;dpdaout=kn4(3 downto 0);dpdaout=cnt
14、60(7 downto 4);dpdaout=cnt60(3 downto 0);dp=0;end case;end process;end fun;原理图6.顶层文件程序library ieee;use ieee.std_logic_1164.all;entity ss_top isport(clk,clr,en,plus_sub,clkdsp:in std_logic; a,b,c,d,e,f,g,dpout:out std_logic; sel:out std_logic_vector(2 downto 0);end ss_top;architecture one of ss_top i
15、scomponent cnt60 port(clk,clr,en:in std_logic; q:out std_logic_vector(7 downto 0);end component;component kn4 port(clk,clr,plus_sub:in std_logic; q:buffer std_logic_vector(3 downto 0);end component;component cnt10 port(clk,clr,en:in std_logic; co:out std_logic; q:buffer std_logic_vector(3 downto 0);
16、end component;component deled PORT(num:in std_logic_vector(3 downto 0); led:out std_logic_vector(6 downto 0);end component;component seltime port(clk,reset,ci:in std_logic; cnt60:in std_logic_vector(7 downto 0); kn4:in std_logic_vector(3 downto 0); cnt10:in std_logic_vector(3 downto 0); dp:out std_l
17、ogic; daout:out std_logic_vector(3 downto 0); sel:out std_logic_vector(2 downto 0);end component;signal cnt60_out:std_logic_vector(7 downto 0);signal kn4_out:std_logic_vector(3 downto 0);signal cnt10_out:std_logic_vector(3 downto 0);signal cnt10_co:std_logic;signal ledout:std_logic_vector(6 downto 0
18、);signal seltime_out:std_logic_vector(3 downto 0);Begina=ledout(6);b=ledout(5);c=ledout(4);d=ledout(3);e=ledout(2);f=ledout(1);gseltime_out,led=ledout);u2:cnt10 port map(clk=clk,clr=clr,en=en,co=cnt10_co,q=cnt10_out);u3:cnt60 port map(clk=clk,clr=clr,en=en,q=cnt60_out);u4:kn4 port map(clk=clk,clr=cl
19、r,plus_sub=plus_sub,q=cnt16_out);u5:seltime port map(clk=clkdsp,reset=clr,ci=cnt10_co,cnt60=cnt60_out,kn4=kn4_out,cnt10=cnt10_out,daout=seltime_out,dp=dpout,sel=sel); end one;四、 总的原理图五、器件编程与下载 用VHDL语言编译四种计数器的、译码器和分时器的程序,然后把他们用例化语句编译成顶层文件,仿真成功以后下载到试验箱通过数码管显示出结果,试验成功。六、性能测试与分析 各个程序编译完成以后,通过波形图检测程序的正确性
20、,当源程序en=1时程序才能运行,当clr=1时清零,等于零时工作,在两个都工作的情况下在clk的上升沿时数据进位,clk=0时保持,等于1时运行。如果程序按以上所说正常循环说明程序正确。七、实验设备计算机一台,EDA实验箱一台,下载电缆一根,导线若干。八、心得体会通过一周的EDA课设实践,虽然时间不是很长,但是我学到了很多。通过实践让我能够熟练的运用VHDL语言和Quartus软件,发现这个软件功能十分的强大,而且用途也很广。在实践中我们遇到了挺多的困难,在开始的程序编写中其实还挺顺利的,但是把它编写到EDA试验箱中让它通过数码管显示出结果时,事实并不是想象中的那样,通过多次的更改和实验,最
21、终实验成功。到最后找到失败的原因时让我们都感到很惊讶,它仅仅是一个让我们所有人都忽略的小小的细节,这也让我明白了一个道理,做任何事,不管大小都要认真仔细,要集中百分之百的注意力在上面,保证没有一丝遗漏,才能把事情做好。还有在遇到困难时要有不抛弃不放弃的劲头,要相信在任何时候办法总比困难多。这次实践让我收获很多,为我以后的学习打下了坚实的基础,也为我以后的学习生活增添的信心。九、参考文献1. 李国洪,胡辉,沈明山EDA技术与实验机械工业出版社 2徐惠民,安德宁 数字逻辑设计与VHDL描述机械工业出版社3蒋璇,臧春华 数字系统设计与PLD应用技术电子工业出版社4陈赜,朱如琪 在系统可编程技术实践教程科学出版社5 赵曙光,郭万有等 可编程逻辑器件原理、开发与应用 西安电子 科技大学出版指导教师评语及设计成绩 评 语 课程设计成绩: 指导教师: 日期: 年 月 日