版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
..XX理工大学本科实验报告题目:数字钟的VHDL设计课程名称:数字电路课程设计学院〔系:电子信息与电气工程学部专业:电子信息工程班级:学生__学号:完成日期:成绩:2013年12月15日数字钟的VHDL设计1.设计任务及要求:设计任务:设计一台能显示时、分、秒的数字钟。具体要求如下:〔1设计一个数字钟,能够显示当前时间,分别用6个数码管显示小时、分钟、秒钟的时间,秒针的计数频率为1Hz,可由系统脉冲分频得到。〔2在整点进行提示,可通过LED闪烁实现,闪烁频率及花型可自己设计。〔3能够调整小时和分钟的时间,调整的形式为通过按键进行累加。〔4具有闹钟功能,闹钟时间可以任意设定〔设定的形式同样为通过按键累加,并且在设定的时间能够进行提示,提示同样可以由LED闪烁实现设计要求:编写设计报告,要求包括方案选择、程序代码清单、调试过程、测试结果及心得体会。2.设计原理时显示器秒显示器分显示器时显示器秒显示器分显示器时译码器秒译码器分译码器时译码器秒译码器分译码器报时报时时计数器分计数器秒计数器时计数器分计数器秒计数器校时电路校时电路1HZ分频器振荡器分频器振荡器图1数字钟的系统框图该系统由振荡器、分频器、"时、分、秒"计数器、译码器及显示器、校时电路、整点报时电路等组成。石英晶体振荡器和分频器产生整个系统的时基信号,它直接决定计时系统的精度。"秒计数器"采用六十进制计数器,每累计60秒向"分计数器"进位;"分计数器"采用六十进制计数器,每累计60分向"时计数器"进位;"时计数器"采用二十四进制计数器,按照"24翻1"规律计数。"时、分、秒"计数器的输出经译码器送显示器显示。校时电路用来当计时出现误差时对"时、分、秒"进行校对调整。整点报时电路是根据计时系统的输出状态产生一脉冲信号,然后去触发音频发生器实现报时。3.设计过程3.1.设计思路时钟脉冲信号作为数字钟的时间基准,再经分频器输出标准秒脉冲。秒计数器计满60后向分计数器进位,分计数器计满60后向小时计数器进位,小时计数器是计满24后,系统自动复位重新开始计数。计数器的输出经译码电路后送到显示器显示。可以用校时电路进行校时。整点报时电路在每小时的最后50秒开始报时间隔一秒报一次时直至下一小时开始。3.2.数字钟的设计方案数字钟的设计包括编码模块、分频模块、秒计时模块、分计时模块、小时计时模块、闹钟模块和报时模块。该数字钟可以实现3个功能:计时功能、报时功能、闹铃和设置时间功能。3.2.1.编码模块编码模块主要是对时、分、秒的设置输入。3.2.2.分频模块在数字钟的设计中,外部输入时钟信号clk1的频率为50Mhz,其分频后的频率为clk,使其分频结果为1hz,用来提供给秒计时模块、分计时模块、小时计时模块。3.2.3.秒计时模块将"秒计时脉冲"clk接信号源单元的1HZ脉冲信号,此时秒显示将从00计时到59,然后回到00,重新计时。在秒位进行计时的过程中。秒计时器是由一个60进制的计数器构成的,具有置数和计数功能。其中reset为置数信号,当reset为1时,秒计时器置数。clk为驱动秒计时器的时钟,sec2、sec1为秒计时器的高位和低位输出。3.2.4.分计时模块分计时电路:将"分计时脉冲"clk接信号源单元的c1脉冲信号,此时分显示将从00计时到59,然后回到00,重新计时。在分位进行计时的过程中。分计时器是由一个60进制的计数器构成的,具有置数和计数功能。其中rese为置数信号,当reset为1时,分计时器置数。fen4、fen3为分计时器的高位和低位输出。3.2.5.小时计时模块将"小时计时脉冲"clk接信号源单元的c2脉冲信号,此时小时显示将从00计时到23,然后回到00,重新计时。时计时器是由一个24进制的计数器构成的,具有置数和计数功能。其中的reset为置数信号,当reset为1时,时计时器置数。shi6、shi5为时计时器的高位和低位输出。3.2.6.报时模块当分位到59时,秒位计到51秒、53秒、55秒、57秒、59秒时报时一次,而后小时位加1。3.2.7.VHDL引脚分配图4.源程序4.1.数字钟整体程序整个程序分为六个部分,分别为分频部分、校时部分、秒部分、分部分、小时部分和报时部分。4.2.VHDL程序及波形分析4.2.1.VHDL程序 libraryieee; --count60useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycount60isport<clk:instd_logic;reset:instd_logic;set:instd_logic;inc:instd_logic;out1:outstd_logic_vector<3downto0>;out2:outstd_logic_vector<3downto0>;c:outstd_logic;alight:outstd_logic>;end;architecturerun2ofcount60issignalts1,ts2,as1,as2:std_logic_vector<3downto0>:="0000";signaltclk,aclk:std_logic;beginprocess<inc,clk,set>--根据设置模式,处理inc上的脉冲信号begin ifset='0'then--时间调整模式 aclk<='0'; ifclk='1'andinc='1'then--clk=1则tclk<=0,通过挖洞方式添加一个脉冲 tclk<='0'; elsifclk='0'andinc='1'then--clk=0,则tclk<=1,产生一个高电平,添加一脉冲 tclk<='1'; else tclk<=clk; endif; elsifset='1'then--闹铃调整模式 tclk<=clk; aclk<=inc;--inc上的脉冲直接修改闹铃定时值 endif;endprocess;process<tclk,reset>beginif<reset='0'>thents1<="0000";ts2<="0000";elsif<tclk'eventandtclk='1'>thenifts1="1001"thents1<="0000";ifts2="0101"thents2<="0000";elsets2<=ts2+1;endif;elsets1<=ts1+1;--计数过程endif;endif;endprocess;--结束进程process<aclk,reset>beginif<reset='0'>thenas1<="0000";as2<="0000";elsif<aclk'eventandaclk='1'>thenifas1="1001"thenas1<="0000";ifas2="0101"thenas2<="0000";elseas2<=as2+1;endif;elseas1<=as1+1;--计数过程endif;endif;endprocess;--结束进程process<ts1,ts2,as1,as2>--显示时间或闹铃定时值begin ifset='0'then--显示时间 out1<=ts1; out2<=ts2; else--显示定时值 out1<=as1; out2<=as2; endif;endprocess;process<ts1,ts2,as1,as2>--判断定时值与时间值相等,输出闹铃触发信号begin if<ts1="1001"andts2="0101">then c<='1';elsec<='0';endif; ifts1=as1andts2=as2then alight<='1'; else alight<='0'; endif;endprocess;endrun2;libraryieee; --count24useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycount24isport<clk:instd_logic;reset:instd_logic;set:instd_logic;inc:instd_logic;out1:outstd_logic_vector<3downto0>;out2:outstd_logic_vector<3downto0>;c:outstd_logic; alight:outstd_logic>;end;architecturerun1ofcount24issignalts1,ts2,as1,as2:std_logic_vector<3downto0>:="0000";signaltclk,aclk:std_logic;beginprocess<inc,clk,set>--根据设置模式,处理inc上的脉冲信号begin ifset='0'then--时间调整模式 aclk<='0'; ifclk='1'andinc='1'then--clk=1则tclk<=0,通过挖洞方式添加一个脉冲 tclk<='0'; elsifclk='0'andinc='1'then--clk=0,则tclk<=1,产生一个高电平,添加一脉冲 tclk<='1'; else tclk<=clk; endif; elsifset='1'then--闹铃调整模式 tclk<=clk; aclk<=inc;--inc上的脉冲直接修改闹铃定时值 endif;endprocess;process<tclk,reset>beginif<reset='0'>thents1<="0000";ts2<="0000";elsif<tclk'eventandtclk='1'>thenifts2<"0010"thenif<ts1="1001">thents1<="0000";ts2<=ts2+1;elsets1<=ts1+1;endif;elsif<ts2="0010">thenif<ts1="0011">thents1<="0000";ts2<="0000"; --计数过程elsets1<=ts1+1;endif;endif;endif;endprocess;--结束进程process<aclk,reset>beginif<reset='0'>thenas1<="0000";as2<="0000";elsif<aclk'eventandaclk='1'>thenifas2<"0010"thenif<as1="1001">thenas1<="0000";as2<=as2+1;elseas1<=as1+1;endif;elsif<as2="0010">thenif<as1="0011">thenas1<="0000";as2<="0000";--计数过程elseas1<=as1+1;endif;endif;endif;endprocess;--结束进程process<ts1,ts2,as1,as2>--显示时间或闹铃定时值begin ifset='0'then--显示时间 out1<=ts1; out2<=ts2; else--显示定时值 out1<=as1; out2<=as2; endif;endprocess;process<ts1,ts2,as1,as2>--判断定时值与时间值相等,输出闹铃触发信号begin ifts1="0010"andts2="0011"thenc<='1';elsec<='0';endif; ifts1=as1andts2=as2then alight<='1'; else alight<='0'; endif;endprocess;endrun1;libraryieee; --xianshiuseieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityxianshiisport<clk:instd_logic_vector<3downto0>; qq:outstd_logic_vector<6downto0>>;end;architecturerun3ofxianshiisbeginprocess<clk>begincaseclkis when"0000"=>qq<="1000000"; when"0001"=>qq<="1111001"; when"0010"=>qq<="0100100"; when"0011"=>qq<="0110000"; when"0100"=>qq<="0011001"; when"0101"=>qq<="0010010"; when"0110"=>qq<="0000010"; when"0111"=>qq<="1111000"; when"1000"=>qq<="0000000"; whenothers=>qq<="0010000";endcase;endprocess;end;libraryieee; --shizhonguseieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entityshizhongis port<clk:instd_logic;--PIN_N2 reset:instd_logic;--PIN_N25 set:instd_logic;--PIN_N26 inc1,inc2,inc3:instd_logic;--PIN_G26,PIN_N23,PIN_P23 shi6,shi5,fen4,fen3,miao2,miao1:outstd_logic_vector<6downto0>; alight,light1,light2:outstd_logic>;--闹铃end;architecturerunofshizhongis signalsshi6,sshi5,sfen4,sfen3,smiao2,smiao1:std_logic_vector<3downto0>;signalc1,c2,c3,clk1s,clk2ms,clk1ms:std_logic;signalalight1,alight2,alight3:std_logic;componentcount60 port<clk:instd_logic; reset:instd_logic; set:instd_logic; inc:instd_logic; out1:outstd_logic_vector<3downto0>; out2:outstd_logic_vector<3downto0>; c:outstd_logic; alight:outstd_logic>;endcomponent;componentcount24 port<clk:instd_logic;reset:instd_logic;set:instd_logic;inc:instd_logic;out1:outstd_logic_vector<3downto0>;out2:outstd_logic_vector<3downto0>;c:outstd_logic;alight:outstd_logic>;endcomponent;componentxianshiport<clk:instd_logic_vector<3downto0>; qq:outstd_logic_vector<6downto0> >;endcomponent;beginprocess<clk> variablecount1:integerrange0to49999999;beginif<clk'eventandclk='1'>thencount1:=count1+1;--在clk的上升沿计数ifcount1<=24999999thenclk1s<='0'; elsifcount1<=49999999thenclk1s<='1';elsecount1:=0;endif;endif;endprocess;--产生周期为1s的时钟信号process<clk> variablecount2:integerrange0to99999;beginif<clk'eventandclk='1'>thencount2:=count2+1;--在clk的上升沿计数ifcount2<=49999thenclk2ms<='0'; elsifcount2<=99999thenclk2ms<='1';elsecount2:=0;endif;endif;endprocess;--产生周期为2ms的时钟信号500Hzprocess<clk> variablecount3:integerrange0to49999;beginif<clk'eventandclk='1'>thencount3:=count3+1;--在clk的上升沿计数ifcount3<=24999thenclk1ms<='0'; elsifcount3<=49999thenclk1ms<='1';elsecount3:=0;endif;endif;endprocess;--产生周期为1ms的时钟信号 1000Hzprocess<alight1,alight2,alight3>begin ifalight1='1'andalight2='1'andalight3='1' thenalight<='1';elsealight<='0'; endif;endprocess;process<sfen4,sfen3,smiao2,smiao1>begin ifsfen4="0101"andsfen3="1001"then ifsmiao2="0101"then ifsmiao1="0001"then light1<=clk2ms; elsifsmiao1=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 沈阳理工大学《变频控制技术》2022-2023学年期末试卷
- 合同法第52条5项
- 新入职员工的意识培训
- 2025版高考英语一轮复习第1部分人与自我主题群1生活与学习主题语境5认识自我丰富自我完善自我2教师用书教案
- 新高考2025届高考政治小题必练1神奇的货币
- 大班音乐尝葡萄课件
- 2024年拉萨客运资格证答题软件下载
- 2024宾馆转让合同范文
- 2024屋顶防水合同范文
- 2024小额贷款担保合同范本
- 浅议小升初数学教学衔接
- 设备安装应急救援预案
- 深基坑工程降水技术及现阶段发展
- 暂堵压裂技术服务方案
- 《孔乙己》公开课一等奖PPT优秀课件
- 美的中央空调故障代码H系列家庭中央空调(第一部分多联机)
- 物料承认管理办法
- 业主委员会成立流程图
- (完整版)全usedtodo,beusedtodoing,beusedtodo辨析练习(带答案)
- 广联达办公大厦工程施工组织设计
- 疑难病例HELLP综合征
评论
0/150
提交评论