多功能数字钟的设计EDA课程设计_第1页
多功能数字钟的设计EDA课程设计_第2页
多功能数字钟的设计EDA课程设计_第3页
多功能数字钟的设计EDA课程设计_第4页
多功能数字钟的设计EDA课程设计_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※2023级学生EDA课程设计EDA课程设计报告书课题名称多功能数字钟的设计姓名王兴俊学号院系物理与电信工程系专业电子信息工程指导教师周来秀讲师2023年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;entityFREQisport( Clk:instd_logic;--时钟输入 CLK1KHZ,CLK1HZ:bufferstd_logic );endFREQ;architecturebehaveofFREQissignalCLK1MHZ: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;entitySELTIMEisport(clk:instd_logic;sec1,sec0,min1,min0,h1,h0:instd_logic_vector(3downto0);daout:outstd_logic_vector(3downto0);sel:outstd_logic_vector(2downto0));endSELTIME;architecturefunofSELTIMEissignalcount:std_logic_vector(2downto0);beginsel<=count;process(clk)beginif(clk'eventandclk='1')thenif(count>="111")thencount<="000";elsecount<=count+1;endif;endif;casecountiswhen"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为日历显示和时间显示切换开关。do

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论