多功能数字钟的设计EDA专业课程设计.docx
- 文档编号:25398715
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:15
- 大小:339.91KB
多功能数字钟的设计EDA专业课程设计.docx
《多功能数字钟的设计EDA专业课程设计.docx》由会员分享,可在线阅读,更多相关《多功能数字钟的设计EDA专业课程设计.docx(15页珍藏版)》请在冰豆网上搜索。
多功能数字钟的设计EDA专业课程设计
EDA课程设计报告书
课题名称
多功能数字钟设计
姓名
王兴俊
学号
院系
物理与电信工程系
专业
电子信息工程
指引教师
周来秀讲师
6月13日
一、设计任务及规定:
设计任务:
运用QuartusII软件设计一种多功能数字钟
设计规定:
所设计数字钟是基于现实基本上多功能数字钟,基本上能实现普通
多功能数字钟功能,涉及翻页显示时间和日期,调节时间及日期等等,运用QuartusII强大编程功能以及完整仿真系统进行仿真设计,通过仿真设计校正达到设计规定
指引教师签名:
年月日
二、指引教师评语:
指引教师签名:
年月日
三、成绩
验收盖章
年月日
多功能数字钟设计
王兴俊
(湖南都市学院物理与电信工程系电子信息工程专业,湖南益阳,41300)
1设计目
EDA是电子设计自动化缩写,在20世纪如年代初从计算机辅助设计、计算机辅助制造、计算机辅助测试和计算机辅助工程概念发展而来。
老式意义上或者狭义上EDA技术是指可编程技术,是以计算机为工具,融合了应用电子技术、计算机技术、智能化技术最新成果而开发出电子EDA通用软件包,设计者在EDA软件平台上,用硬件描述语言VHDL完毕设计文献,然后由计算机自动地完毕逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目的芯片适配编译、逻辑映射和编程下载等工作。
运用EDA技术进行电子系统设计,具备如下几种特性:
①用软件方式设计硬件;②用软件方式设计系统到硬件系统转换是由关于开发软件自动完毕;③设计过程中可用关于软件进行各种仿真;④系统可现场编程,在线升级;⑤整个系统可集成在一种芯片上,体积小、功耗低、可靠性高。
因而,EDA技术是当代电子设计发展趋。
运用EDA设计电子产品已经是势在必得了。
2设计重要内容和规定
a.数字钟可以显示年、月、天、小时、分钟、秒。
在数字钟正常工作时可以
对数字钟进行迅速校正,即拨动开关可对其进行校正,在数字钟正常工作
状况下,可以对其进行不断电复位,以使时、分、秒显示回零。
b.对数字钟采用层次化办法进行设计,规定设计层次清晰、合理,构成整个
设计功能模块既可采用原理图输入法实现,也可采用文本输入法实现。
c.对设计电路进行功能仿真。
d.将仿真通过逻辑电路下载到EDA实验系统,对其功能进行验证。
3整体设计方案
基本设计方案:
多功能数字钟具备时间显示和日历显示功能,而时间模块和日历模块有诸多相似地方,如果再进行细分,则她们都着类似模块。
因此采用模块设计将大大简化多功能数字钟程序设计。
图3.1数字钟整体设计方框图
4硬件电路设计
4.1分频器模块设计
图4.1分频器模块
由于实验箱上晶振为20MHz,对于秒表计时和进行数码管动态扫描来说,频率都太大了,因而要将20MHz进行分频解决,本次设计将提成1KHz和1Hz两个频率。
4.2计数器模块设计
图4.2计数器模块
在数字钟设计中,计数器模块是最常用和最为通用,在本次设计中用到了模为24,60,99,12和31五个计数器。
由于她们都是大同小异,因此这里只列出了模为24计数器(即小时计数器)
4.3动态扫描模块设计
图4.3动态显示模块
由于本次课程设计有多组数据要显示,显示方式为数码管动态显示。
比之于静态显示,动态显示有着不可代替长处:
占用数据线少,功耗小等特点。
4.4开关选取模块设计
图4.4开关选取模块
由于本次课程设计要实现两个功能:
时间显示和日历显示,通过开关KEY来切换。
4.5译码器模块设计
图4.5译码器模块
要想将时间或日历在数码管上显示出来,译码器模块必不可少,本次课程设计使用事共阴数码管。
5软件设计
5.1分频器模块设计源程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityFREQis
port(
Clk:
instd_logic;--时钟输入
CLK1KHZ,CLK1HZ:
bufferstd_logic
);
endFREQ;
architecturebehaveofFREQis
signalCLK1MHZ:
std_logic;--中转量
signalQ:
std_logic_vector(4downto0);
SIGNALQ1:
std_logic_vector(9downto0);
SIGNALQ2:
std_logic_vector(9downto0);
signalDir_Flag:
std_logic;--方向标志
begin
PROCESS(Clk)--把20MHZ频率变为1MHZ
BEGIN
IF(Clk'EVENTANDClk='1')THEN
IF(Q="10011")THEN
Q<="00000";
CLK1MHZ<='1';
ELSE
Q<=Q+1;
CLK1MHZ<='0';
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(CLK1MHZ)IS--把1MHZ频率变为1KHZ
BEGIN
IF(CLK1MHZ'EVENTANDCLK1MHZ='1')THEN
IF(Q1="")THEN
Q1<="";
CLK1KHZ<='1';
ELSE
Q1<=Q1+1;
CLK1KHZ<='0';
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(CLK1KHZ)IS--把1KHZ频率变为1HZ
BEGIN
IF(CLK1kHZ'EVENTANDCLK1kHZ='1')THEN
IF(Q2="")THEN
Q2<="";
CLK1HZ<='1';
ELSE
Q2<=Q2+1;
CLK1HZ<='0';
ENDIF;
ENDIF;
ENDPROCESS;
endbehave;
5.2计数器模块设计程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityHOURis--实体,定义输入和输出
port(clk,en:
instd_logic;--输入时钟/高电平有效使能信号
co:
outstd_logic;
h1,h0:
outstd_logic_vector(3downto0));--时高位/低位
endHOUR;
architecturehour_arcofHOURis--构造体
begin
process(clk)
variablecnt1,cnt0:
std_logic_vector(3downto0);--记数
begin
ifclk'eventandclk='1'then--上升沿触发
ifen='1'then--同步“使能”为1
ifcnt1="0010"andcnt0="0011"then
cnt1:
="0000";--高位/低位同步为0时
cnt0:
="0000";
co<='1';
elsifcnt0<"1001"then--低位不大于9时,低位记数累加
cnt0:
=cnt0+1;
co<='0';
else
co<='0';
cnt0:
="0000";
cnt1:
=cnt1+1;--高位记数累加
endif;
endif;
endif;
h1<=cnt1;
h0<=cnt0;
endprocess;
endhour_arc;
5.3动态扫描模块设计程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
useieee.std_logic_arith.all;
entitySELTIMEis
port(
clk:
instd_logic;
sec1,sec0,min1,min0,h1,h0:
instd_logic_vector(3downto0);
daout:
outstd_logic_vector(3downto0);
sel:
outstd_logic_vector(2downto0));
endSELTIME;
architecturefunofSELTIMEis
signalcount:
std_logic_vector(2downto0);
begin
sel<=count;
process(clk)
begin
if(clk'eventandclk='1')then
if(count>="111")then
count<="000";
else
count<=count+1;
endif;
endif;
casecountis
when"111"=>daout<=h1;
when"110"=>daout<=h0;
when"101"=>daout<="1111";
when"100"=>daout<=min1;
when"011"=>daout<=min0;
when"010"=>daout<="1111";
when"001"=>daout<=sec1;
whenothers=>daout<=sec0;
endcase;
endprocess;
endfun;
5.4开关选取模块设计程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityswitchis--实体,定义输入和输出
port(second,day:
instd_logic_vector(3downto0);
dout:
outstd_logic_vector(3downto0);
sels,seld:
instd_logic_vector(2downto0);
selout:
outstd_logic_vector(2downto0);
key:
instd_logic);
endswitch;
architecturebehaveofswitchis--构造体
begin
process(key)
begin
if(key='1')then
dout<=second;
selout<=sels;
else
dout<=day;
selout<=seld;
endif;
endprocess;
endbehave;
5.5译码器模块设计
libraryieee;
useieee.std_logic_1164.all;
entityDISPLAYis--实体,定义输入和输出
port(d:
instd_logic_vector(3downto0);
q:
outstd_logic_vector(6downto0)
);
endDISPLAY;
architecturedisp_areofDISPLAYis--构造体
begin
process(d)
begin
casedis--D为表达式
WHEN"0000"=>q<="0111111";
WHEN"0001"=>q<="0000110";
WHEN"0010"=>q<="1011011";
WHEN"0011"=>q<="1001111";
WHEN"0100"=>q<="1100110";
WHEN"0101"=>q<="1101101";
WHEN"0110"=>q<="1111101";
WHEN"0111"=>q<="0000111";
WHEN"1000"=>q<="1111111";
WHEN"1001"=>q<="1101111";
WHENothers=>q<="1000000";
endcase;
endprocess;
enddisp_are;
6系统仿真
打开QuartusII6.0软件,进入软件操作界面,用NewProjectWizard向导创立新工程,选取菜单“File”→“NewPrejectWizard”,即弹出工程设立对话框。
按所学内容进行关于设立,新建完项目之后点击File/New,选取VHDLFile,在新建VHDL文献中输入自己编写程序,编写完程序之后需要通过不断地运营测试,如果有错误浮现则更改第一种错误继续运营,如此重复直到没有错误为止,然后在点击File→Create/Update→CreateSymbolFilesForCurrentFile,生成图形文献,以便背面BlockDiagram/SchematicFile调用,最后在BlockDiagram/SchematicFile编辑窗口完毕电路连线设计。
连接好电路原理图,设立顶层实体后进行原理图编译,当编辑程序不再浮现错误时,可以开始仿真了。
选取(File\New)命令,打开新建文献对话框,在新建对话框中选取OtherFiles,从中选取VectorWaveformFile,点击OK建立一种空波形编辑器窗口。
点击File\Saveas改名为clock.vwf并保存。
在波形仿真文献界面Name标签区内双击鼠标左键,弹出添加节点对话框,。
点击NodeFinder按钮,在该对话框中一方面点击list按钮,然后点击“>>”“>”“<”“<<”完毕节点选取,点击OK完毕节点添加。
选取仿真时间:
视电路实际规定拟定仿真时间长短。
在当前主菜单“Edit”下拉菜单中选中“EndTime”,弹出结束时间对话框,在提示窗“Time”中输入仿真结束时间,即可修改仿真时间。
本次设计仿真时间设立为1ms,用同样办法设立网格大小,本次设计仿真设立为200ns。
对关于初值进行设立,设立完毕后保存文献后进行波形仿真直到本实验电路仿真成果报告中无错误、无警告。
最后仿真效果如图6.2所示,图6.1为电路原理图。
图6.1多功能数字钟电路原理图
图6.2数字钟仿真成果
7使用阐明
本人设计数字钟电路重要由译码显示屏、“年”,“月”,“日”,“时”,“分“秒”计数器等构成,其中clk为晶振(频率为20M)输入端,clrsecond为秒清零开关,setmimute为分钟调节开关,sethour为小时调节开关,setday为日调节开关,setmonth为月调节开关,setyear为年调节开关,key为日历显示和时间显示切换开关。
dout[6..0]为数码管段选输出端,selout[2..0]为数码位选输出端。
8设计总结
对于本次多功能数字钟设计,我感触颇多。
通过这次课程设计使我懂得了理论与实际相结合是很重要,只有理论知识是远远不够,我学到诸多诸多东西,同步不但可以巩固此前所学过知识,并且学到了诸多在课本上所没有学到过知识。
在实验中,通过查阅《数字逻辑设计实验与EDA技术》、《VHDL程序实例》等有关资料,不但对这种语言更加理解,也提高了自己实际动手能力和独立思考能力。
在设计过程中遇到了诸多问题,同步在设计过程中发现了自己局限性之处,对所学过知识理解得不够深刻,掌握得不够牢固,对程序中浮现错误如何修改,如何生成元件还不是很熟……为了这次课程设计,相称于把此前所学过知识重新温习了一遍。
在这两个星期学习中,通过自己学习和与同窗讨论,学会了如何来设计一种电路和元件有了深刻理解,并巩固了对QuartusⅡ软件应用,也终于觉得平时所学知识有了实用价值,达到了理论与实际相结合目,不但学到了不少知识,并且锻炼了自己能力,使自己对后来路有了更加清晰结识,同步,对将来有了更多信心,也感谢我指引教师对我指引。
参照文献
[1]延明,张义华.数字逻辑设计实验[M].北京:
北京邮电大学出版社,:
50-65..
[2]康华光.电子技术基本[M].北京:
高等教诲出版社,:
70-86.
[3]潘松.EDA技术与VHDL[M].北京:
清华大学出版社,:
20-33.
[4]夏路易.基于EDA技术电子技术课程设计[D].北京:
北京航空航天大学,.
[5]潘松,王国栋.VHDL实用教程[M].成都:
电子科技大学出版社,:
34-40.
[6]龙在云,黄星,武斌.EDA技术发展及应用[J].河北建筑工程学院学报,,21(01):
4-6.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多功能 数字 设计 EDA 专业课程
![提示](https://static.bdocx.com/images/bang_tan.gif)