数字钟EDA综合课程设计.docx
- 文档编号:24009277
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:20
- 大小:113.22KB
数字钟EDA综合课程设计.docx
《数字钟EDA综合课程设计.docx》由会员分享,可在线阅读,更多相关《数字钟EDA综合课程设计.docx(20页珍藏版)》请在冰豆网上搜索。
数字钟EDA综合课程设计
北华航天工业学院
《EDA技术综合设计》
课程设计报告
报告题目:
数字钟
作者所在系部:
电子工程系
作者所在专业:
自动化专业
作者所在班级:
作者姓名:
指导教师姓名:
完成时间:
2010—12—03
内容摘要
VHDL是VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage的缩写,意思是超高速集成电路硬件描述语言。
对于复杂的数字系统的设计,它有独特的作用。
它的硬件描述能力强,能轻易的描述出硬件的结构和功能。
这种语言的应用至少意味着两种重大的改变:
电路的设计竟然可以通过文字描述的方式完成;电子电路可以当作文件一样来存储。
随着现代技术的发展,这种语言的效益与作用日益明显,每年均能够以超过30%的速度快速成长。
这次毕业设计的内容是在简要介绍了VHDL语言的一些基本语法和概念后,进一步应用VHDL,在MAX+plusII的环境下设计一个数字钟,最后通过仿真出时序图实现预定功能。
数字钟的时间显示用到了七段数码管(或称七段显示器)的电路设计,内部的时间控制输出则用到了各种设计,包括:
加法计数器,扫描电路,控制秒、分、时的分频电路,各种数制的转换。
关键词:
VHDL,数字钟,MAX+plusII,时序仿真图。
目录
1、实验目的……………………………………………………………………………1
二、硬件要求……………………………………………………………………………1
三、实验原理……………………………………………………………………………1
四、模块说明……………………………………………………………………………1
1.秒计数器………………………………………………………………………………1
2.分计数器………………………………………………………………………………2
3.小时计数器……………………………………………………………………………3
4.报警模块………………………………………………………………………………4
5.扫描模块………………………………………………………………………………5
6.译码模块………………………………………………………………………………6
7.顶层文件………………………………………………………………………………8
五、整体连接图…………………………………………………………………………9
六、实验步骤……………………………………………………………………………10
七、实验结果……………………………………………………………………………10
八、实验总结……………………………………………………………………………10
九、参考文献……………………………………………………………………………10
课程设计任务书
课题名称
数字钟
完成时间
2010-12-03
指导教师
职称
学生姓名
班级
总体设计要求和技术要点
利用VHDL进行数字钟设计,主要完成以下功能:
1.具有时、分、秒计数显示功能,以24小时循环计时。
2.具有清零,调节小时、分钟功能。
3.具有整点报时功能,整点报时的同时LED灯花样显示。
工作内容及时间进度安排
周5:
硬件仿真
周6:
验收答辩
课程设计成果
1.与设计内容对应的软件程序
2.课程设计报告书
3.成果使用说明书
4.设计工作量要求
一、实验目的
(1)掌握多位计数器相连的设计方法。
(2)掌握十进制、六进制、二十四进制计数器的设计方法。
(3)巩固多位共阴极扫描显示数码管的驱动及编码。
(4)掌握扬声器的驱动。
(5)LED灯的花样显示。
(6)掌握EDA技术的层次化设计方法。
二、硬件要求
(1)主芯片EPF10K10LC84-4。
(2)8个LED灯。
(3)蜂鸣器。
(4)8位八段扫描共阴极数码显示管。
(5)三个按键开关(清零,调小时,调分钟)。
三、实验原理
在同一芯片EPF10K10上集成了如下电路模块:
(1)时钟计数:
秒——60进制BCD码计数;
分——60进制BCD码计数;
时——24进制BCD码计数;
同时整个计数器有清零,调分,调时功能。
在接近整数时间能提供报时信号。
(2)具有驱动8位八段共阴扫描数码管的片选驱动信号输出和八段字形译码输出。
(3)蜂鸣器在整点时有报时驱动信号产生。
(4)LED灯在整点时有花样显示信号产生。
四、模块说明
时钟的设计共化分为6个模块:
秒计数器(count60),分计数器(count601),小时计数器(count24),报警电路(bs),扫描电路(set),译码电路(led7)。
下面具体分析各个模块的原理、内容和功能。
1.秒计数器(count60)
能够实现60进制循环计数,带有复位端reset、手动调分功能端setmin和向分进位端c,受时钟上升沿信号控制,其文本语言(文件名:
count60.vhd)为底层文本,图1为秒计数器的仿真波形图。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCOUNT60IS
PORT(CLK,RESET,SETMIN:
INSTD_LOGIC;
SEC0,SEC1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
C:
OUTSTD_LOGIC);
1
ENDCOUNT60;
ARCHITECTUREONEOFCOUNT60IS
SIGNALSEC0_T,SEC1_T:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALE_1,E_2:
STD_LOGIC;
BEGIN
SEC0<=SEC0_T;SEC1<=SEC1_T;
E_2<=(NOTSETMINandCLK);
C<=(E_1orE_2);
PROCESS(CLK,RESET,SETMIN)
BEGIN
IFRESET='0'THEN
SEC0_T<="0000";SEC1_T<="0000";
ELSIFCLK'EVENTANDCLK='1'THEN
IFSEC0_T="1001"THEN
SEC0_T<="0000";SEC1_T<=SEC1_T+1;
ELSE
SEC0_T<=SEC0_T+1;
ENDIF;
IFSEC0_T="1001"ANDSEC1_T="0101"THEN
SEC0_T<="0000";SEC1_T<="0000";E_1<='1';
ELSEE_1<='0';
ENDIF;
ENDIF;
ENDPROCESS;
ENDONE;
图1.六十进制秒计数器的仿真波形
2.分计数器(COUNT601)
能够实现60进制循环计数,带有带有复位端reset、手动调小时功能端sethour和向分进位端CO,受时钟上升沿信号控制。
其文本语言(文件名:
COUNT601.vhd)为底层文本,图2为分计数器的仿真波形图
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCOUNT601IS
PORT(CLK,RESET,CLK1,SETHOUR:
INSTD_LOGIC;
2
MIN0,MIN1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
CO:
OUTSTD_LOGIC);
ENDCOUNT601;
ARCHITECTUREONEOFCOUNT601IS
SIGNALMIN0_T,MIN1_T:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALENHOUR_1,ENHOUR_2:
STD_LOGIC;
BEGIN
MIN0<=MIN0_T;MIN1<=MIN1_T;
ENHOUR_2<=(NOTSETHOURandCLK1);
CO<=(ENHOUR_1orENHOUR_2);
PROCESS(CLK,RESET,SETHOUR)
BEGIN
IFRESET='0'THEN
MIN0_T<="0000";MIN1_T<="0000";
ELSIFCLK'EVENTANDCLK='1'THEN
IFMIN0_T="1001"THEN
MIN0_T<="0000";MIN1_T<=MIN1_T+1;
ELSEMIN0_T<=MIN0_T+1;
ENDIF;
IFMIN0_T="1001"ANDMIN1_T="0101"THEN
MIN0_T<="0000";MIN1_T<="0000";
ENHOUR_1<='1';
ELSEENHOUR_1<='0';
ENDIF;
ENDIF;
ENDPROCESS;
ENDONE;
图2.六十进制分计数器的仿真波形
3.小时计数器(COUNT24)
能够实现24进制循环计数,带有复位端reset,受时钟上升沿信号控制。
其文本语言(文件名:
COUNT24.vhd)为底层文本,图3为分计数器的仿真波形图。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCOUNT24IS
PORT(CLK,RESET:
INSTD_LOGIC;
3
H0,H1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDCOUNT24;
ARCHITECTUREONEOFCOUNT24IS
SIGNALH0_T,H1_T:
STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
H0<=H0_T;H1<=H1_T;
PROCESS(CLK,RESET)
BEGIN
IFRESET='0'THEN
H0_T<="0000";H1_T<="0000";
ELSIFCLK'EVENTANDCLK='1'THEN
IFH0_T="1001"THEN
H0_T<="0000";H1_T<=H1_T+1;
ELSE
H0_T<=H0_T+1;
ENDIF;
IFH0_T="0011"ANDH1_T="0010"THEN
H0_T<="0000";H1_T<="0000";
ENDIF;
ENDIF;
ENDPROCESS;
ENDONE;
图3.小时计数器的仿真波形
4.报警模块(BS)
能够实现整点报时和循环点亮3只LED灯,工作时受时钟上升沿控制。
其文本语言(文件名:
BS.vhd)为底层文本,图4为其仿真波形。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYBSIS
PORT(CLK:
INSTD_LOGIC;
M0,M1:
INSTD_LOGIC_VECTOR(3DOWNTO0);
SPEAK:
OUTSTD_LOGIC;
4
LAMP:
OUTSTD_LOGIC_VECTOR(2DOWNTO0));
ENDBS;
ARCHITECTUREONEOFBSIS
SIGNALCOUNT:
STD_LOGIC_VECTOR(1DOWNTO0);
SIGNALCOUNT1:
STD_LOGIC_VECTOR(1DOWNTO0);
BEGIN
SPEAKER:
PROCESS(CLK)
BEGIN
SPEAK<=COUNT1
(1);
IFCLK'EVENTANDCLK='1'THEN
IFM0="0000"ANDM1="0000"THEN
IFCOUNT1>="10"THEN
COUNT1<="00";
ELSECOUNT1<=COUNT1+1;
ENDIF;
ENDIF;
ENDIF;
ENDPROCESSSPEAKER;
LAMPER:
PROCESS(CLK)
BEGIN
IFCLK'EVENTANDCLK='1'THEN
IFCOUNT<="10"THEN
IFCOUNT<="00"THEN
LAMP<="001";
ELSIFCOUNT<="01"THEN
LAMP<="010";
ELSIFCOUNT<="10"THEN
LAMP<="100";
ENDIF;
COUNT<=COUNT+1;
ELSECOUNT<="00";
ENDIF;ENDIF;
ENDPROCESSLAMPER;
ENDONE;
图4.声光报警仿真波形
5
5.扫描模块(SET)
能够实现逐次扫描秒个位、秒十位、分个位、分十位、时个位、时十位,并输出扫描数据和相应位的点dp,带有复位端reset,受扫描时钟上升沿控制。
其文本语言(文件名:
SET.vhd)为底层文本,图5为其仿真波形。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYSETIS
PORT(CLK1,RESET:
INSTD_LOGIC;
SE0,SE1,MI0,MI1,HU0,HU1:
INSTD_LOGIC_VECTOR(3DOWNTO0);
DOUT:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
SEL:
OUTSTD_LOGIC_VECTOR(2DOWNTO0);
DP:
OUTSTD_LOGIC);
ENDSET;
ARCHITECTUREONEOFSETIS
SIGNALCOUNT:
STD_LOGIC_VECTOR(2DOWNTO0);
BEGIGSEL<=COUNT;
PROCESS(CLK1)
BEGIN
IFRESET='0'THENCOUNT<="000";
ELSIFCLK1'EVENTANDCLK1='1'THEN
IFCOUNT="101"THENCOUNT<="000";
ELSECOUNT<=COUNT+1;
ENDIF;
ENDIF;
CASECOUNTIS
WHEN"000"=>DOUT<=SE0;DP<='0';
WHEN"001"=>DOUT<=SE1;DP<='0';
WHEN"010"=>DOUT<=MI0;DP<='1';
WHEN"011"=>DOUT<=MI1;DP<='0';
WHEN"100"=>DOUT<=HU0;DP<='1';
WHENOTHERS=>DOUT<=HU1;DP<='0';
ENDCASE;
ENDPROCESS;
ENDONE;
6
图5.时间数据扫描分时选择模块的仿真波形
6.译码器模块(LED7)
能够实现译码功能,将扫描到的数据能够译码显示在7段数码管上,输出端led[6..0]分别对应数码管的a~g。
其文本语言(文件名:
LED7.vhd)为底层文本。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYLED7IS
PORT(DIN:
INSTD_LOGIC_VECTOR(3DOWNTO0);
DOUT:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDLED7;
ARCHITECTUREONEOFLED7IS
BEGINPROCESS(DIN)
BEGIN
CASEDINIS
WHEN"0000"=>DOUT<="1111110";
WHEN"0001"=>DOUT<="0110000";
WHEN"0010"=>DOUT<="1101101";
WHEN"0011"=>DOUT<="1111001";
WHEN"0100"=>DOUT<="0110011";
WHEN"0101"=>DOUT<="1011011";
WHEN"0110"=>DOUT<="1011111";
WHEN"0111"=>DOUT<="1110000";
WHEN"1000"=>DOUT<="1111111";
WHEN"1001"=>DOUT<="1111011";
WHENOTHERS=>DOUT<="0000000";
ENDCASE;
ENDPROCESS;
ENDONE;
7
7.顶层文件
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYCLOCK_TOPIS
PORT(CLK,RESET,CLKDSP,SETMIN,SETHOUR:
INSTD_LOGIC;
A,B,C,D,E,F,G:
OUTSTD_LOGIC;
LAMP,SEL:
OUTSTD_LOGIC_VECTOR(2DOWNTO0);
DP,SPEAKER:
OUTSTD_LOGIC);
ENDCLOCK_TOP;
ARCHITECTUREONEOFCLOCK_TOPIS
COMPONENTCOUNT60--秒计数器COUNT60的元件声明
PORT(CLK,RESET,SETMIN:
INSTD_LOGIC;
SEC0,SEC1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
C:
OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTCOUNT601--分计数器COUNT601的元件声明
PORT(CLK,RESET,CLK1,SETHOUR:
INSTD_LOGIC;
MIN0,MIN1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
CO:
OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTCOUNT24--时计数器COUNT24的元件声明
PORT(CLK,RESET:
INSTD_LOGIC;
H0,H1:
OUTSTD_LOGIC_VECTOR(3DOWNTO0));
ENDCOMPONENT;
COMPONENTSET--时间数据扫描分时选择SET的元件声明
PORT(SE0,SE1,MI0,MI1,HU0,HU1:
INSTD_LOGIC_VECTOR(3DOWNTO0);
RESET,CLK1:
INSTD_LOGIC;
DOUT:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
SEL:
OUTSTD_LOGIC_VECTOR(2DOWNTO0);
DP:
OUTSTD_LOGIC);
ENDCOMPONENT;
COMPONENTLED7--7段译码LED7的元件声明
PORT(DIN:
INSTD_LOGIC_VECTOR(3DOWNTO0);
DOUT:
OUTSTD_LOGIC_VECTOR(6DOWNTO0));
ENDCOMPONENT;
COMPONENTBS--报警单元BS的元件声明
PORT(CLK:
INSTD_LOGIC;
M0,M1:
INSTD_LOGIC_VECTOR(3DOWNTO0);
SPEAK:
OUTSTD_LOGIC;
LAMP:
OUTSTD_LOGIC_VECTOR(2DOWNTO0));
ENDCOMPONENT;
SIGNALSECOND_0,SECOND_1,MINUTE_0,
MINUTE_1,HOUR_0,HOUR_1,SELTIME:
STD_LOGIC_VECTOR(3DOWNTO0);
8
SIGNAL
JIN1,JIN2:
STD_LOGIC;
SIGNAL
LEDOUT:
STD_LOGIC_VECTOR(6DOWNTO0);
BEGIN
A<=LEDOUT(6);B<=LEDOUT(5);C<=LEDOUT(4);D<=LEDOUT(3);E<=LEDOUT
(2);F<=LEDOUT
(1);G<=LEDOUT(0);
U1:
COUNT60PORTMAP(RESET=>RESET,CLK=>CLK,--秒计数器元件例化
SETMIN=>SETMIN,
C=>JIN1,SEC0=>SECOND_0,
SEC1=>SECOND_1);
U2:
COUNT601PORTMAP(RESET=>RESET,CLK1=>CLK,--分计数器元件例化
SETHOUR=>SETHOUR,
CLK=>JIN1,CO=>JIN2,
MIN0=>MINUTE_0,MIN1=>MINUTE_1);
U3:
COUNT24PORTMAP(CLK=>JIN2,
RESET=>RESET,--时计数器元件例化
H0=>HOUR_0,H1=>HOUR_1);
U4:
SETPORTMAP(SE0=>SECOND_0,--时间数据扫描分时选择元件例化
SE1=>SECOND_1,
MI0=>MINUTE_0,MI1=>MINUTE_1,
HU0=>HOUR_0,HU1=>HOUR_1,
CLK1=>CLKDSP,RESET=>RESET,
DOUT=>SELTIME,SEL=>SEL,DP=>DP);
U5:
LED7PORTMAP(DIN=>SELTIME,--7段译码LED7的元件例化
DOUT=>LEDOUT);
U6:
BSPORTMAP(CLK=>CLK,M0=>MINUTE_0,--报警单元BS的元件例化
M1=>MINUTE_1,SPEAK=>SPEAKER,
LAMP=>LAMP);
ENDONE;
五、数字钟的整体连接图
9
图6.数字钟各个模块连接示意图
六、实验步骤
(1)安装MAX+plusⅡ软件,为本项设计建立文件夹。
(2)输入设计项目的各个模块,存盘检查,编译并仿真至无误。
(3)调用底层文件的各个模块,连接整体原理图,进行存盘检查,编译仿真至无误。
(4)将PC机与试验箱进
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 EDA 综合 课程设计