欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载  

    数字电子时钟报告.docx

    • 资源ID:11286680       资源大小:565.43KB        全文页数:18页
    • 资源格式: DOCX        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数字电子时钟报告.docx

    电子信息与电气工程学院EDA 课程设计设计题目 :<< 数字电子时钟 >>专业: 电子信息工程班级:姓名:学号:数字电子时钟简介数字电子时钟是一利用数字电路来显示秒分时的计时装置,与传统的机械钟相比 ,具有走时准确 ,显示直观,无机械传动装置等优点;因而得到广泛应用。随着人们生活水平的不断改善和美化,很多场合都可以看到数字电子时钟,并且已成为人们生活中必不可少的一部分,最常见比如电子手表,电子闹钟,万年历,手机时钟 数字电子时钟设计任务本设计以 KX-DN 系列综合实验开发板系统开发实验,通过verilog 语言编写各个功能模块,并且经过精确仿真修改达到理想状态,最后连接各个功能模块组成一个完整的数字电子时钟电路。本设计不仅能够精确显示时分秒(为了起到直观、简洁、美化的作用,我们用“” 区分) , 而且能通过开发板上的按键来控制改变时、分、 秒的功能,大大方便了用户的校时、校分、校秒,大大增加数字电子时钟实用性。该时钟还有一键清零(复位清零)的功能,可以防止因外界、内因而导致的时钟计数错误,然后再通过校时、校分、校秒的功能来进行调整时间。最后还能通过开发板上的蜂鸣器来进行整点报时,这一点对这个设计来说是最具人性化的。我们可以按照自己的意愿来进行调整时间报时,已达到个性化设计。、总体设计方案设计原理及思路原理图如下:数码管显示模块四选一多路选择器分频模块计数器模块24进制计数器60进制计数器60进制计数器整点报时模块四选三多路选择器计数器模块去抖动模块数字钟实际上就是对1Hz的频率进行计数的计数电路。振荡器产生32768Hz的时钟信号, 经过分频器后产生512H64Hz、2Hz的脉冲信号,秒计数器计满 60后,触发分计数器, 分计数器计满60后,触发计时电路,当计满24小时后开始下一轮计数。如果计数的起始 时间与设想的有误差,可以通过调时、调分按键或复位键进行手动调时。计数器的输出经 过4选1多路选择器后以动态扫描方式送到 LE躁码管输出。由框图可知程序模块可分为消抖模块、2分频、60进制计数器、24进制计数器、4选3多路选择器、七段译码器、位选端控制器组成。整体原理图:各模块说明2.1 消抖模块2.1.1 消抖模块原理按键开关是各种电子设备不可或缺的人机接口。在实际应用中,很大一部分的按键是 机械按键。在机械按键的触点闭合和断开时,都会产生抖动,为了保证系统能正确识别按 键的开关,就必须对按键的抖动进行处理。为了消除机械开关的抖动,可在开关与输出端 点之间接人一个RS触发器,就能使输出端产生很清晰的阶跃信号。2.1.2消抖模块程序代码module Xiaodou (CLK, KIN,KOUT);input CLK, KIN;/output KOUT; reg KOUT;reg 3:0 KH,KL;/always (posedge CLK) beginif (!KIN) KL<=KL+1 ;/else KL<=4b0000; end /always (posedge CLK) beginif (KIN) KH<= KH+1;/else KH<=4b0000; end / always (posedge CLK) beginif (KH > 4b1100) KOUT<=1B1; / else if (KL > 4b0111)KOUT<=1B0;/工作时钟和输入信号定义对高电平和低电平脉宽计数之寄存器。对键输入的低电平脉宽计数若出现高电平,则计数器清0同时对键输入的高电平脉宽计数若出现高电平,则计数器清0对高电平脉宽计数一旦大于12,则输出1对低电平脉宽计数若大于7,则输出0end endmodule仿真波形2.2四选一多路选择器1.1.1 四选一多路选择器原理该四选一多路选择器没有进位端,用于四选一多路选择器的输入,控制其输出计时器 的计时信号。同时它也作为位选端控制器的输入,决定哪个数码管亮。四选一多路计数器采用时序逻辑电路, 从0开始计时到3后归零,重新进行开始计时1.1.2 四选一多路选择器程序代码module Zonghe(k,Q_miinutes,Q_second,Q_hour,Q);input k;input7:0 Q_second,Q_miinutes,Q_hour;output reg 31:0 Q;alwaysbeginQ31:24=Q_hour;Q23:20=4ha;Q19:12=Q_miinutes;Q11:8=4ha;Q7:0=Q_second;endendmoduleSimulation WaveformsSimulation mode; Functi anal& Master Time Bar:Valut t15.08A 1A区A 0A 1A 015.075 ns * * Pointer:1 34 ns Inleival:-13L74 ns Strl:EnJ ps 40. 0 ns15.075 ns120.0 ns L60 0 m 200 0 nsIIITruuuuuuijirLrLruuuinrLruLrurnirn2.3 2分频2.3.1 2分频原理该模块用于产生秒计数脉冲。2分频即在每一个输入脉冲的上升沿(或下降沿)取反 即可得到。2.3.2 2 分频程序代码module Fenpin(clk,newclk);input clk;output reg newclk;reg24:0 enter;always (posedge elk)beginif(enter<20000000) cnter=cnter+1;else cnter=0;if (enter<10000000) newclk=1;else newclk=0;endendmodule2.4 六十进制计数器2.4.1 六十进制计数器原理六十进制计数器作为秒计数器和分计数器的低位,具有进位输出端和异步复位端,复 位信号为高电平有效。它要求从 0到59计数,到五十九清零重新计数。采用时序逻辑电 路。设计时应考虑计数器能够进行级联。2.4.2 六十进制计数器程序代码module Count60(clrn,clk,q,j,cont);input clrn,clk,j;output reg 7:0 q;output reg cont;always (posedge c1kAjor negedgeclrn)begin if(clrn) q=1b0;else begin if(q=8b0101_1001)q=1b0;else q=q+1b1;if(q3:0=4b1010)beginq3:0=4b0;q7:4=q7:4+1b1;end if(q=8b0101_1001) cont=1;else cont=0;endendendmodule仿真波形:Simulation WaveformsSimu_Li on node :Funct i onaZLN M aster T imt? B ar:15.075 n5* | * Pointei:11 51 nsIntervafc |3.57 nsSrt:End-IIJU.J pS20. I) nS40. Q ns60. Q xl-s00. Q100. 0 A3,英15 LJ815. 0T5 azA口:lk_l j A iJf_1_11_11_11_11_11_11_11_11_11_I田 i El dlA ?r灯cdX ri x 卬】X can X 【4】X tsi X 集X 7j X 出X gj X伉3-dlC3A 011-dl121A 01I-JI fl 1A 1 11f "gL dloA 0n _ 0 6.ClA 01 LI 水reselA 0A II12.5 二十四进制计数器(含进位端)2.5.1 二十四进制计数器(含进位端)原理该二十四进制计数器作为秒计数器和分计数器的高位,具有进位输出端和异步复位端,复位信号为高电平有效。它要求从 0到23计数,到23清零重新计数。采用时序逻辑 电路。设计时应考虑计数器能够进行级联。2.5.2 二十四进制计数器(含进位端)程序代码module count24(clrn,clk,q,j,cont);input clrn,clk,j;output reg 7:0 q;output reg cont;always (posedge c1kAj or negedge clrn)begin if(clrn) q=0;else begin if(q=h23) q=0;else q=q+1;if(q3:0=,ha)begin q3:0=0;q7:4=q7:4+1;end if(q=h23) cont=1;else cont=0;endendendmoduleimijlaticin WaveformsSimulation mod电:Functional日有-d53-d52d5l-d50日曲-d5l-dfi0d*_shirstQ Master Tirne Bar:151075 ns_ P*蚓12.45 nt Interval. *263 nr S 加也Vai life15. Mk A IAh IA IA I k A2.6 四选一多路选择器2.6.1 四选一多路选择器原理四选一多路选择器通过四进制计数器的输出信号控制实现了对计数器产生的脉冲信 号的选择性输出。加入此模块是为了实现数码管的动态扫描输出。四选一多路选择器的输入是一个二位二进制数,输出是计时器、计分器、计秒器的高 位或低位。2.6.2 四选一多路选择器程序代码module Sixuanyi(k,jm,jf,js,j1,j2,j3);input k,j1,j2,j3;output reg jm,jf,js;always beginif(k=0)jm,jf,js=j1,j2,j3;else;endendmoduleSimulation WaveformsSittioltti on nod.e : Functi Dnftlter:Interval:Start:EndMaster Time Bar:15.075 ns635 ps3 pM its 40r 0事 60. m 60, its 100. p n* 12sp u 140.p m 16ctp 186115.075 ns2.7 三选一多路选择器2.7.1 三选一多路选择器原理三选一多路选择器通过三进制计数器的输出信号控制实现了对计数器产生的脉冲信 号的选择性输出。加入此模块是为了实现数码管的动态扫描输出。三选一多路选择器的输入是一个三进制数,输出是计时器、计分器、计秒器的高位或 低位。2.7.2 三选一多路选择器程序代码module Sanxuanyi(clk,A1,A2,N,J1,J2,J3);input clk,A1,A2,N;output reg J1,J2,J3;always begincase (A1,A2)0:J1=N;1:J2=N;2:J3=N;default :J1=N;endcaseendendmoduleSimulation WaveformsSiM-ul all du mo de : Functi Dnal电A美02.8 七段译码器2.8.1 七段译码器原理七段译码器是对输入的信号对应的位置进行编码,使其能显示出输入的数的值。本文 所介绍的译码器将小数点 dp通过位拼接符将其与计数器的计数值组合,然后一同给到译 码管,便于输出。计时器低位的小数点要求常亮,即 dp=1;计分器的低位小数点要求以 1Hz的频率闪烁,可以让它以2分频的输出为值。2.8.2 七段译码器程序代码复位信号,低要显示的32位数位选信号段码dp到a由高到module Display( clk ,rst_n,d,dig ,seg); input clk ;/20MHzinput rst_n ;/电平有疑input 31:0 d; /据output 7:0 dig ; /output 7:0 seg; / parameter N= 20000; / 分频系数reg clkout ;/扫描时钟reg 13:0cnt;/ 分频计数器reg 2:0 scan_cnt ; / 扫描计数器reg 3:0 disp_dat ; /每一位数码管待译码数据reg 7:0 dig;reg 7:0 seg_r;always ( posedge clk or negedge rst_n)/分频至I 1KHzbegin if (!rst_n)cnt <= 0 ;elsebeginif(cnt= N/2-1)beginclkout <= clkout;cnt<=0;endelsecnt<=cnt+1b1;endendalways (posedge clkout or negedgerst_n)/ 产生扫描计数值beginif (!rst_n)scan_cnt <= 0 ;elsescan_cnt <= scan_cnt + 1b1;endalways ( scan_cnt,d)/8 位数码管位选择,同时送相应要显示数据begincase ( scan_cnt )3b000 : begindig<= 8b0000_0001;disp_dat<= d3:0;end3b001 : begindig<= 8b0000_0010;disp_dat<= d7:4;end3b010 : begindig<= 8b0000_0100;disp_dat<= d11:8;end3b011 : begindig<= 8b0000_1000;disp_dat<= d15:12;end3b100 : begindig<= 8b0001_0000;disp_dat<= d19:16;end3b101 : begindig<= 8b0010_0000;disp_dat<= d23:20;end3b110 : begindig<= 8b0100_0000;disp_dat<= d27:24;end3b111 : begindig<= 8b1000_0000;disp_dat<= d31:28;enddefault : begindig<= 8b0000_0001;disp_dat<= d3:0;endendcaseendalways ( disp_dat ) / 共阳极数码管译码begincase (disp_dat)4h0: seg_r = 8hc0; /显示 "0"4h1 : seg_r = 8hf9;/ 显示 "1"4h2 : seg_r = 8ha4;/ 显示 "2"4h3 : seg_r = 8hb0;/ 显示 "3"4h4 : seg_r = 8h99;/ 显示 "4"4h5 : seg_r = 8h92;/ 显示 "5"4h6 : seg_r = 8h82;/ 显示 "6"4h7 : seg_r = 8hf8;/ 显示 "7"4h8 : seg_r = 8h80;/ 显示 "8"4h9 : seg_r = 8h90;/ 显示 "9"4ha : seg_r = 8hbf;/ 显示 "a"/*4hb: seg_r = 8h83;/ 显示 "b"4hc : seg_r = 8hc6;/ 显示 "c"4hd : seg_r = 8ha1;/ 显示 "d"4he : seg_r = 8h86;/ 显示 "e"4hf : seg_r = 8h8e;/ 显示 "f"*/default:seg_r8hff;/ 灭endcaseendassign seg=seg_r; / 取反变成共阴极段码endmodule2.9 整点报时模块2.9.1 整点报时模块程序代码module Baoshi(H,M,S,qy,ling);input 7:0 H,M,S;input qy;output ling;reg bshi;reg ling;parametera=4b0000,b=4b0001,c=4b0000,d=4b00 00,e=4b0001,f=4b0000;always(H or M or S or qy) beginif(H,M,S=24b000000010000000000010000)ling<=qy;elseling<=0;end endmodule2.10 综合模块2.10.1 综合模块原理综合模块采用模块例化的方法实现。2.10.2 综合模块程序代码module Zonghe(k,Q_miinutes,Q_second,Q_hour,Q);input k;input7:0 Q_second,Q_miinutes,Q_hour;output reg 31:0 Q;alwaysbeginQ31:24=Q_hour;Q23:20=4ha;Q19:12=Q_miinutes;Q11:8=4ha;Q7:0=Q_second;endendmodule2.11 计数器模块2.11.1 计数器模块程序代码module JISHU (clk,m,rst_n,v);input clk,m,rst_n;output v;reg p;always(posedge clk)beginif(!rst_n)p <= 1b0;else if(!m)p <= p+1b1;else if(p=1h9) p <= 1h0;endassign v = p;endmodule三 总结3.1 程序过大程序方面,由于 EPM3064 ALC44-10 芯片只有 64 个宏单元,编写程序时有可能导致所需的宏单元数超过提供的数量, 经过分析在处理小数点的时候, 直接把其作为与其它段显示一起定义成八位变量, 这样就会增加芯片内存消耗, 但实际要求中只用到两个小数点, 所以把这个小数点单独进行操作处理, 大大减少了宏单元的利用,这样才能编译成功。3.2 赋值问题初次实验, 第一次按键不起作用。 原因是出在阻塞与非阻塞赋值上。 非阻塞赋值在过程块执行完后才赋值,由于变量初始值为0,所以第一次按键变量的值并未随之改变。 此时我们可以适当调整赋值顺序, 将其改变为阻塞赋值。 即可解 决这一问题。后来我们采用了拨码开关,这个问题也顺利解决。参考文献978-7030-3878-20 潘松 黄继业 潘明 .EDA 技术实用教程VerilogHDL> (第五版)科学出版社,2010年6月,1 386页

    注意事项

    本文(数字电子时钟报告.docx)为本站会员(scccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开