版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-.z.--.--总结数字逻辑电路设计--多功能数字钟学院:计算机科学与通信工程专业::**:指导教师:多功能数字钟设计任务及要求拥有正常的时、分、秒计时功能。能利用实验板上的按键实现校时、校分及清零功能。能利用实验板上的扬声器做整点报时。闹钟功能在MA*PLUSII中采用层次化设计方法进展设计。在完成全部电路设计后在实验板上下载,验证设计课题的正确性。多功能数字钟的总体设计和顶层原理图作为根据总体设计框图,可以将整个系统分为六个模块来实现,分别是计时模块、校时模块、整点报时模块、分频模块、动态显示模块及闹钟模块。〔1〕计时模块该模块使用74LS160构成的一个二十四进制和两个六十进制计数器级联,构成数字钟的根本框架。二十四进制计数器用于计时,六十进制计数器用于计分和秒。只要给秒计数器一个1HZ的时钟脉冲,则可以进展正常计时。分计数器以秒计数器的进位作为计数脉冲。用两个74160连成24进制的计数器,原图及生成的器件如下:注:利用使能端,时钟信号,清零以及预置数功能连成24进制。生成的二十四进制计数器注:利用使能端,时钟信号,清零以及预置数功能连成24进制。生成的二十四进制计数器用两个74160连成的60进制计数器,原图及生成的器件如下:生成的六十进制计数器生成的六十进制计数器〔2〕校时模块校时模块设计要求实现校时,校分以及清零功能。*按下校时键,小时计数器迅速递增以调至所需要的小时位。*按下校分键,分计数器迅速递增以调至所需要的分位。*按下清零键,将秒计数器清零。考前须知:=1\*GB3①在校分时,分计数器的计数不应对小时位产生影响,因而需要屏蔽此时分计数器的进位信号以防止小时计数器计数。=2\*GB3②利用D触发器进展按键抖动的消除,因为D触发器是边沿触发,在除去时钟边沿到来前一瞬间之外的绝大局部时间都不承受输入,可以消除抖动。=3\*GB3③计时采用1HZ的脉冲驱动计数器计数,而校时则需要较高频率的信号驱动以到达快速校时的目的。因此这两种脉冲信号就需要两路选择器进展选择,条件即为是否按键。注:D触发器用于按键的消抖,接更高的频率用于校时和校分,二路选择器用于区分是正常计时还是校时。〔3〕整点报时模块计时到59分50秒时,每两秒一次低音报时,整点时进展高音报时。以不同频率的脉冲信号区分低音和高音报时。报时的条件是计数器计数至所需要的时间点,因而需要一个比拟模块,将分计数器和秒计数器的输出连至比拟模块输入端完成比拟过程。注:F1表示计数器分的高位,F0表示分的低位;M1表示秒的高位,M0表示秒的低位。当时间为59分00,02,04,06,08进展低音报时,当为整点时进展高音报时。SIGA为1时低音报时,SIGB为1时高音报时。〔4〕分频模块在这个系统中需要很多种不同频率的脉冲信号,这些均可以通过一个基准频率分频器生成。分频器就是一个进制很大的计数器,利用计数器的分频功能,从不同的输出位得到所需要的脉冲信号。注:由于clk的频率为1024hz,所以可以定义一个std_logic_vector(9downto0),使它不停地从0000000000加到1111111111然后又返回0000000000,由于最低位在clk脉冲到来时从0变为1,然后又在下一个脉冲变回0,因此最低位的时钟周期为clk的时钟周期的两倍,它的频率就为clk频率确实1/2即512hz。同理,次高位的频率就为clk频率的1/2*1/2=1/4,用这种方法就可以得到各种能整除1024的频率,从而实现分频。注:由于clk的频率为1024hz,所以可以定义一个std_logic_vector(9downto0),使它不停地从0000000000加到1111111111然后又返回0000000000,由于最低位在clk脉冲到来时从0变为1,然后又在下一个脉冲变回0,因此最低位的时钟周期为clk的时钟周期的两倍,它的频率就为clk频率确实1/2即512hz。同理,次高位的频率就为clk频率的1/2*1/2=1/4,用这种方法就可以得到各种能整除1024的频率,从而实现分频。生成的分频器生成的分频器动态显示模块在6个不同的时间段分别将每组时间经过七段译码后输出到6个数码管,当*一组时间的七段码到达时,只点亮对应位置上的数码管,显示相应的数字,6次一个循环,形成一个扫描序列。利用人眼的视觉暂留则可以同步显示6个数字。注:CLK为时钟信号,S为计数器的小时,F为分,M为秒,SELOUT为六路选择器,选择哪个数码管工作,SEGOUT为七段译码器,使数码管显示数字。动态扫描器件动态扫描器件〔6〕闹钟模块考前须知:=1\*GB3①设定的闹钟的时间应使用新的计数器进展存储,与正常的计时互不干扰。=2\*GB3②与正常计时状态的显示切换。可以设定一个按键,用于选择是将计时时间还是将闹钟时间送至动态显示模块。=3\*GB3③应实现一个比拟模块,当计时到与闹钟时间相等时,则驱动扬声器鸣叫。=4\*GB3④闹钟响声应限定在一定时间内,且在这段时间内应随时可以通过按键取消闹时状态。闹钟调时和分以及正常计时与闹钟定时之间的选择原图及生成的器件如下:注:输入端CLK为时钟信号,SD清零,NAOZHONG是使计数器正常计时和闹钟定时界面的切换,SE调闹钟的小时,SD调闹钟的分,输出端即为闹钟的小时和分。注:输入端CLK为时钟信号,SD清零,NAOZHONG是使计数器正常计时和闹钟定时界面的切换,SE调闹钟的小时,SD调闹钟的分,输出端即为闹钟的小时和分。闹钟界面和正常计时界面的转换器件如下:注:S表示计时器的时,F表示计时器的分,M表示计数器的秒;SS表示闹钟的时,FF表示闹钟的分;Q为计时和闹钟两个界面的切换开关,ABC为输出的时间。正常计时时间和设定闹钟时间的比拟器件如下:注:S表示正常计时的小时,F表示闹钟的分;SS表示闹钟的小时,FF表示闹钟的分;Q为闹钟的开关,D当Q为1时,并且正常计时的时间和闹钟时间相等时输出为1,否则为0。三、心得和体会经过一个星期对数字时钟实践的制作,从中学到了很多。首先是对EDA的VHDL语言的更深层次认识,本来觉得EDA编程语言比拟麻烦,可是接触了以后也就觉得它还是有它方便的地方,尤其是和图形编程结合的特点。其次,这个实践其实到目前为止应该还不是一个成功的作品,还是有很多的仿真没有完成,原因可能也是自己的技术不到位。但是整个制作的过程中,它促进了同学之间的相互沟通,也让我在自己的专业知识的学习过程中,更多的,更好的学习一门知识,用于以后的实践应用中,做这个数字钟的设计中包含了很多不同功能的程序,让我在其中学到了一些程序的中的思路,特别一步一步去把错误的程序改正确是一种很有成就感的事!这样让我学到了更多的知识!特别是在做数字时钟闹钟的那个模块时,我在网上查了好多程序,证实了好多错误的程序并从中更改出正确的程序!相信,现在只是一个起步,以后,我会更好的努力,学习,对EDA孰能生巧。附录:用VHDL语言写的六十进制计数器如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityt60_06isport(clk:instd_logic;clear:instd_logic;c:outstd_logic;k1,k0:outstd_logic_vector(3downto0));endt60_06;architecturetoft60_06issignalq1,q0:std_logic_vector(3downto0);beginprocess(clk,clear)beginif(clear='1')thenq1<="0000";q0<="0000";c<='0';elseif(clk'eventandclk='1')thenif(q1="0101"andq0="1001")then-----到59q1<="0000";q0<="0000";c<='1';elsif(q1<"0101"andq0="1001")thenq0<="0000";q1<=q1+'1';c<='0';elsif(q0<"1001")thenq0<=q0+'1';endif;endif;endif;k1<=q1;k0<=q0;endprocess;endt;用VHDL语言写的报时器源代码如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityalert_06isport(f1,f0,m1,m0:instd_logic_vector(3downto0);siga,sigb:outstd_logic);endalert_06;architectureaofalert_06isbeginsiga<='1'when(f1="0101"andf0="1001"andm1="0101"and(m0="0000"orm0="0010"orm0="0100"orm0="0110"orm0="1000"))else'0';sigb<='1'when(f1="0000"andf0="0000"andm1="0000"andm0="0000")else'0';enda;用VHDL语言写的分频器的源代码如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityfenpin_06isport(clk:instd_logic; hz512,hz256,hz64,hz4,hz1:outstd_logic);endfenpin_06;architecturefoffenpin_06is signalcc:std_logic_vector(9downto0);begin process(clk) begin if(clk'eventandclk='1')then if(cc="1111111111")then cc<="0000000000"; else cc<=cc+1; endif; endif; endprocess; hz512<=cc(0); hz256<=cc(1); hz64<=cc(3); hz4<=cc(7); hz1<=cc(9);endf;用VHDL语言写的动态扫描的源代码如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_arith.all;useieee.std_logic_unsigned.all;entitydisplay_06isport(clk:instd_logic;s:instd_logic_vector(7downto0);f:instd_logic_vector(7downto0);m:instd_logic_vector(7downto0);selout:outstd_logic_vector(5downto0);segout:outstd_logic_vector(6downto0));enddisplay_06;architectureaofdisplay_06issignalnumber:std_logic_vector(3downto0);signalsel:std_logic_vector(5downto0);signalseg:std_logic_vector(6downto0);signalq:std_logic_vector(2downto0);begina:process(clk)beginif(clk'eventandclk='1')thenq<=q+1;endif;endprocessa;process(q)begincaseqiswhen"000"=>sel<="000001";when"001"=>sel<="000010";when"010"=>sel<="000100";when"011"=>sel<="001000";when"100"=>sel<="010000";when"101"=>sel<="100000";whenothers=>sel<="000000";endcase;endprocess;processbeginifsel="000001"thennumber<=m(3downto0);elsifsel="000010"thennumber<=m(7downto4);elsifsel="000100"thennumber<=f(3downto0);elsifsel="001000"thennumber<=f(7downto4);elsifsel="010000"thennumber<=s(3downto0);elsifsel="100000"thennumber<=s(7downto4);elsenumber<="1111";endif;endprocess;process(number)begincasenumberiswhen"0000"=>seg<="0111111";when"0001"=>seg<="0000110";when"0010"=>seg<="1011011";when"0011"=>seg<="1001111";when"0100"=>seg<="1100110";when"0101"=>seg<="1101101";when"0110"=>seg<="1111101";when"0111"=>seg<="0000111";when"1000"=>seg<="1111111";when"1001"=>seg<="1101111";whenothers=>seg<="0000000";endcase;endprocess;selout<=sel;segout<=seg;enda;闹钟界面和正常计时界面之间的切换源代码如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityswitch_06isport(s:instd_logic_vector(7downto0);ss:instd_logic_vector(7downto0);f:instd_logic_vector(7downto0);ff:instd_logic_vector(7downto0);m:instd_logic_vector(7downto0);Q:instd_logic;A:outstd_logic_vector(7downto0);B:outstd_logic_vector(7downto0);C:outstd_logic_vector(7downto0));endswitch_06;architectureaofswitch_06isbeginprocess(Q,s,ss,f,ff,m)Begin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 九年级历史下册单元评价检测课件
- 《证劵基础知识最终》课件
- 《激光切割工艺》课件
- 荒山绿化项目可行性研究报告
- 《人力资源管理奥秘》课件
- 股份解禁协议三篇
- 专业毕业实习报告4篇
- 2023年-2024年企业主要负责人安全教育培训试题及答案(易错题)
- 2024员工三级安全培训考试题带解析答案可打印
- 2023年-2024年项目部安全管理人员安全培训考试题附答案【培优A卷】
- 2024年时事政治考点大全(173条)
- DB14-T 2730-2023 产后康复管理师等级划分与评定
- 矿产资源总体规划工作计划
- 电力建设施工质量验收及评定规程-第1部分:土建工程
- 医院消防安全知识试题及答案
- 高中体育足球教案
- 2025届内蒙古赤峰市、呼和浩特市高考考前模拟物理试题含解析
- 三年级数学(上)计算题专项练习附答案
- 中等职业学校《机械制造工艺基础》课程标准
- 临床医学内科学消化系统疾病教案脂肪性肝病教案
- 2024年江苏省南通市中考英语试卷(含答案解析)
评论
0/150
提交评论