下载此文档

数字钟实验报告 10.pdf


文档分类:高等教育 | 页数:约16页 举报非法文档有奖
1/16
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/16 下载此文档
文档列表 文档介绍
该【数字钟实验报告 10 】是由【青山代下】上传分享,文档一共【16】页,该文档可以免费在线阅读,需要了解更多关于【数字钟实验报告 10 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:..EDA数字钟设计项目名称:VHDL数字钟适用年级:2所属课程:《可编程数字系统》姓名:****学号:***********班级:***********指导老师:***:..一、课程设计目的:熟悉EDA工具;掌握用VHDL语言进行数字系统设计的基本方法和流程。二、设计任务:任选以下两道题目中的一道,用VHDL语言描述,用QuartusII工具编译和综合,仿真,并在实验板上实现,同时提交实验报告。设计一数字钟,用数码管显示基本功能要求:(1)可以分屏显示时、分、秒,可用数码管的小数点“.”代替时、分、秒的分隔符“:”,分屏显示是指由于数码管只有4个,不能同时显示时、分、秒,但可以只显示时、分,或只显示分、秒,通过按键来切换这两种显示方式。(2)可设置时钟的开始时间。设置时,相应的数码管要闪烁,指示当前设置的位置(内容)。(3)具有闹铃功能,可以设定闹铃时间。闹铃时间到,LED闪烁进行指示三、设计与实验报告要求1、项目必须在一周内独立完成,发现抄袭者,一律不及格;2、以上题目的要求为必须完成的基本功能,在此基本功能的基础上,鼓励学生增加更多功能(可加分);3、提交的实验报告必须包含但不限于以下基本内容:设计原理、系统分析、程序设计、仿真结果、实验结果(可附上实验板运行时的照片)、结论或分析4、验收方式:实物验收,需演示,并答辩。5、评分标准:以完成上述的基本功能为基准,第一道题目的基准分为75,第二道题目的基准分为85分,根据完成设计的具体情况以及设计报告的质量,综合得分上下浮动。6、实验套件要妥善使用和保管,如有损坏或丢失,按情节轻重处理。:..设计原理EP2C5T144C8有50MHZ的时钟频率输出,通过分频计数器,接入数字钟。数字钟由计数器、译码器、显示器等部分构成,数字钟的时、分、秒实际上就是由一个24进制计数器(00-23),两个60进制计数器(00-59)级联构成。显示模块用200HZ的频率,显示效果很好。,编写六十进制、二十四进制;译码、显示部分用一个四进制,二-四译码器,数据选择器及七段译码器构成。最后生成相对应的模块连接成数字钟电路图。数字钟的功能实际上是对秒信号计数。EDA-V硬件开发系统可提供不同的时钟信号,分频后可产生秒时钟。数字钟在结构上可分为两个部分:计数器和显示器。计数器又可分为秒计数器、分计数器和小时计数器;秒计数器和分计数器由两个六十进制构成,小时计数器由二十四进制计数器实现。动态显示电路可用三态门构成的四选一数据选择器,和一个四进制加一个二四译码器,还有一个七段译码器7448组成。三态门在选择了一个数码管的同时,打开一个三态门,其他的关闭。进而实现数据选择。如图1所示的用三态门实现动态显示的框图。在QuartusII软件中实现四个数码管的动态显示原理二、程序设计计数部分(1)VHDL语言设计的秒和分,带整点报时和分的设置--Second1(秒计数6进制和10进制)Libraryieee;;;Entitysecond1isPort(clks,clr:instd_logic;Secs,Secg:outstd_logic_vector(3downto0);cout1:outstd_logic);Endsecond1;Architectureaofsecond1isBeginProcess(clks,clr):..variabless,sg:std_logic_vector(3downto0);variableco:std_logic;BeginElsifclks'eventandclks='1'thenendif;endif;cout1<=co;Secs<=ss;Secg<=sg;endprocess;Enda;--Min16进制和10进制alm实现整点报时)Libraryieee;;;Entitymin1isPort(clkm,clr:instd_logic;mins,ming:bufferstd_logic_vector(3downto0);enmin,alarm:outstd_logic);End;Architectureaofmin1isBeginProcess(clkm,clr)variablems,mg:std_logic_vector(3downto0);variableso,alm:std_logic;BeginIfclr='0'thenElsifclkm'eventandclkm='1'thenendif;endif;alarm<=alm;enmin<=so;mins<=ms;ming<=mg;Endprocess;Enda;:..2)VHDL语言设计的二十四进制电路--Hour1(时计数器4进制与2进制)Libraryieee;;;Entityhour1isPort(clkh,clr:instd_logic;hours,hourg:outstd_logic_vector(3downto0));End;Architectureaofhour1isBeginProcess(clkh,clr)variablehs,hg:std_logic_vector(3downto0);BeginIfclr='0'thenElsifclkh'eventandclkh='1'thenendif;hours<=hs;hourg<=hg;Endprocess;End;模块动态显示部分(1)VHDL语言设计的四进制电路,模块libraryieee;;;entitytime4_oldisport(clk:instd_logic;q:bufferstd_logic_vector(1downto0));endtime4_old;architecturexxoftime4_oldisbeginprocess(clk)beginif(clk'eventandclk='1')thenq<=q+1;:..elseendif;elseq<=q;endif;endprocess;endxx;2)VHDL语言设计的2线-4线译码器entitycase24isport(sel:inbit_vector(1downto0);y:outbit_vector(3downto0));endcase24;architecturexxofcase24isbeginprocess(sel)begincaseselisendcase;endprocess;endxx;(3)VHDL语言设计的数据选择器模块entitymux4visport(a,b,c,d:inbit_vector(3downto0);sel:inbit_vector(1downto0);result:outbit_vector(3downto0));endmux4v;architectureaaofmux4visbeginwithselselectdwhenothers;endaa;:..4)VHDL语言七段译码器设计模块entitym7448isport(result:inbit_vector(3downto0);seg:outbit_vector(6downto0));endm7448;architecturexxofm7448isbeginprocess(result)begincaseresultisendcase;endprocess;endxx;(5)6选4数据选择器和切换显示按键模块Libraryieee;;;entitytry_new_64isport(secs,secg,mins,ming,hours,hourg:inbit_vector(3downto0);key_sel:inbit;loc1,loc2,loc3,loc4:outbit_vector(3downto0));endtry_new_64;Architectureaoftry_new_64issignalkey_sel_con:integerrange0to1;Begin:..key_sel_con_proc:process(key_sel)beginifkey_sel'eventandkey_sel='0'thenifkey_sel_con=1thenkey_sel_con<=0;elsekey_sel_con<=key_sel_con+1;endif;endif;endprocess;Process(key_sel_con)Begincasekey_sel_coniswhen0=>loc1<=mins;loc2<=ming;loc3<=secs;loc4<=secg;when1=>loc1<=hours;loc2<=hourg;loc3<=mins;loc4<=ming;endcase;endprocess;enda;4个数码管显示时钟,下面是切换显示的程序Libraryieee;;;entitytry_new_64isport(secs,secg,mins,ming,hours,hourg:inbit_vector(3downto0);key_sel:inbit;loc1,loc2,loc3,loc4:outbit_vector(3downto0));:..endtry_new_64;Architectureaoftry_new_64issignalkey_sel_con:integerrange0to1;Beginkey_sel_con_proc:process(key_sel)beginifkey_sel'eventandkey_sel='0'thenifkey_sel_con=1thenkey_sel_con<=0;elsekey_sel_con<=key_sel_con+1;endif;endif;endprocess;Process(key_sel_con)Begincasekey_sel_coniswhen0=>loc1<=mins;loc2<=ming;loc3<=secs;loc4<=secg;when1=>loc1<=hours;loc2<=hourg;loc3<=mins;loc4<=ming;endcase;endprocess;enda;:..输出1011即可。libraryieee;;;entitygivesigisport(sel:inbit_vector(1downto0);y:outbit);endgivesig;architecturexxofgivesigisbeginprocess(sel)beginy<='0';elsey<='1';endif;endprocess;endxx;打包了时钟的程序如下--Topclock(元件例化顶层文件)Libraryieee;;:..;;EntitytopclockisPort(clk,clr,en,m1,h1:instd_logic;alarm:outstd_logic;secs,secg,mins,ming,hours,hourg:bufferstd_logic_vector(3downto0));End;ArchitectureoneoftopclockisComponentsecond1Port(clks,clr:instd_logic;secs,secg:bufferstd_logic_vector(3downto0);cout1:outstd_logic);ponent;Componentmin1Port(clkm,clr:instd_logic;mins,ming:bufferstd_logic_vector(3downto0);enmin,alarm:outstd_logic);ponent;Componenthour1Port(clkh,clr:instd_logic;hours,hourg:bufferstd_logic_vector(3downto0));ponent;ComponentmadaptPort(en,m1,clk,secin:instd_logic;minset:outstd_logic);ponent;ComponenthadaptPort(en,h1,clk,minin:instd_logic;hourset:outstd_logic);ponent;signala,b,c,d:std_logic;beginu1:second1portmap(clr=>clr,secs=>secs,secg=>secg,clks=>clk,cout1=>a);u2:min1portmap(clr=>clr,alarm=>alarm,mins=>mins,ming=>ming,clkm=>b,enmin=>c);u3:hour1portmap(clr=>clr,hours=>hours,hourg=>hourg,clkh=>d);u4:madaptportmap(en=>en,m1=>m1,clk=>clk,secin=>a,minset=>b);u5:hadaptportmap(en=>en,h1=>h1,clk=>clk,minin=>c,hourset=>d);end;只要把通常用的模块0改11改0就可用了。如下entitym7448is:..port(result:inbit_vector(3downto0);seg:outbit_vector(6downto0));endm7448;architecturexxofm7448isbeginprocess(result)begincaseresultisendcase;endprocess;endxx;41选择器entitymux4visport(a,b,c,d:inbit_vector(3downto0);sel:inbit_vector(1downto0);result:outbit_vector(3downto0));endmux4v;architectureaaofmux4visbeginwithselselectdwhenothers;endaa;分频器由Quartus自己的程序库提出:..CASE24entitycase24isport(sel:inbit_vector(1downto0);y:outbit_vector(3downto0));endcase24;architecturexxofcase24isbeginprocess(sel)begincaseselisendcase;endprocess;endxx;上面就是我的完整程序。三、仿真结果VHDL语言设计的六十进制电路,模块及其波形VHDL语言设计的二十四进制电路,模块及其波形:..总电路图五、运行情况按键说明:S6:切换显示S3小时设置S1分钟设置S5清零按钮S2屏蔽设置分、时设置(按住为屏蔽)时分显示:..Key72切换显示显示效果良好,没有出现错误六、结论分析1时钟显示正常;2设置时、分功能正常、3清零键正常因为时间和个人能力,没能做出闪烁。用了失能和双频率赋值的方法做了4个程序,都不能正常使用,故放弃了闪烁。闹钟程序虽然比较简单但是因为时间问题,也夭折了。七、收获感想:..**参考资料《VHDL使用教程》潘松王国栋编著《EDA技术与VHDL程序开发基础教程》清华大学出版社

数字钟实验报告 10 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数16
  • 收藏数0 收藏
  • 顶次数0
  • 上传人青山代下
  • 文件大小1.42 MB
  • 时间2024-04-13