已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于FPGA的数字时钟设计一、 课程设计目的1、 进一步熟悉Quartus 的软件使用方法;2、 熟悉可编程逻辑器件的开发流程及硬件测试方法;3、 熟悉基于FPGA的综合数字系统设计方法;二、 设计任务设计一台可以显示时、分、秒的数字钟。如图1所示为基于FPGA的数字钟设计的系统框图。图1 数字钟系统三、 设计要求1、 能直接显示小时、分、秒,其中小时为以二十四为计数周期;2、 能够显示日期(即年、月、日),且要求在显示时钟的数码管上显示日期,即时钟数码管与日期数码管复用;3、 年、月、日要严格按照实际日期,例如1月31天,4月30天,2月闰年29天等;4、 当数字钟发生走时错误时,要求电路有校时功能,可以对时、分单独校正,且校正时间时系统时钟不工作;5、 当日期发生错误时,要求有校正日期功能,可以对年、月、日单独校正,且矫正日期时时钟系统仍然工作;6、 具有闹钟功能,即输入想要定时的时间,当时钟到达该时间时报警,系统可由灯亮代表报警信号。四、 设计内容1、 时间计数模块 本次是将秒分时各个模块分开进行设计,用秒的进位作为分模块的脉冲,用分的进位作为是模块的脉冲。秒进位的仿真波形程序:秒的程序module miao(clk,gdata,ddata,en,cl,clr);input clk;input en;input clr;output 3:0 ddata;output 3:0 gdata;output cl;reg 7:0 q;reg cl;assign ddata=q%10;assign gdata=q/10;always (negedge clk or posedge clr)begin if(clr=1) q=0; else begin if(en=1) begin if(q59) begin q=q+1; cl=0; end else begin q=0; cl=1; end end endendendmodule分模块和时模块的程序一秒程序类似,只是进位计数不一样。2、日期模块与时间模块一样,用低的进位作为高的脉冲。日的仿真波形日模块程序module ri(nian,yue,shi,gdata,ddata,en,cl,clr);input shi;input en;input 3:0yue;input clr;input 15:0nian;output 3:0 ddata;output 3:0 gdata;output cl;reg 7:0 q;reg cl;reg 7:0 r;assign ddata=(q+1)%10;assign gdata=(q+1)/10;always (posedge shi or posedge clr)begin if(clr=1) q=0; else if(en=1) begin cl=0; if(yue=2) begin if(nian%400)=0)r=29; else if(nian%4)=0) begin if(nian%100)!=0) r=29; else r=28; end else r=28; end else begin case (yue) 1 : r=31; 3 : r=31; 4 : r=30; 5 : r=31; 6 : r=30; 7 : r=31; 8 : r=31; 9 : r=30; 10 : r=31; 11 : r=30; 12 : r=31; endcase end if(shi=1)beginif(q(r-1)begin q=q+1; endelsebeginq=0;cl=1;endend endendendmodule改程序可以判断闰年还是平年,大月还是小月。月模块的程序:module yue(ri,gdata,ddata,en,cl,clr,oyue);input ri;input en;input clr;output 3:0 ddata;output 3:0 gdata;output cl;output 3:0 oyue;reg 3:0 oyue;reg 3:0 q;reg cl;assign ddata=(q+1)%10;assign gdata=(q+1)/10;always (posedge ri or posedge clr)begin if(clr=1) q=0; else begin if(en=1)begincl=0;if(ri=1)beginif(q11)begin q=q+1;oyue=q+1; endelsebeginq=0;cl=1;end endend endendendmodule年模块的程序:module nian(yue,ddata,gdata,clr,en,onian);input yue;input en;input clr;output 3:0 ddata;output 3:0 gdata;output 15:0 onian;reg 15:0 q;reg 15:0 onian;wire 7:0 q1;reg cl;assign q1=q%100;assign ddata=q1%10;assign gdata=q1/10;always (posedge yue or posedge clr)beginif(clr)q=2012;else if(en=1) if(yue=1)begin q=q+1; onian=q;endendendmodule 3.选择显示模块:该模块的功能是通过按键切换显示时间日期和闹钟。选择模块的程序:module duoluxuanzeqi(miaot,miao,fent,fen,shit,shi,rit,ri,yuet,yue,niant,nian,nmiaot,nmiao,nfent,nfen,nshit,nshi,dit,di,zhongt,zhong,gaot,gao,kz);input 3:0 nmiaot;input 3:0 nmiao;input 3:0 nfent;input 3:0 nfen;input 3:0 nshit;input 3:0 nshi;input 3:0 miaot;input 3:0 miao;input 3:0 fent;input 3:0 fen;input 3:0 shit;input 3:0 shi;input 3:0 rit;input 3:0 ri;input 3:0 yuet;input 3:0 yue;input 3:0 niant;input 3:0 nian;input 1:0 kz;/input clk;output 3:0 dit;output 3:0 di;output 3:0 zhongt;output 3:0 zhong;output 3:0 gaot;output 3:0 gao;reg 3:0 dit;reg 3:0 di;reg 3:0 zhongt;reg 3:0 zhong;reg3:0 gaot;reg 3:0 gao;always (kz,miaot,miao,fent,fen,shit,shi,rit,ri,yuet,yue,niant,nian,nmiaot,nmiao,nfent,nfen,nshit,nshi)begin case(kz) 0: begindit=miaot; di=miao;zhongt=fent;zhong=fen;gaot=shit;gao=shi;end 1: begin dit=rit; di=ri;zhongt=yuet;zhong=yue;gaot=niant;gao=nian;end 2: begin dit=nmiaot;di=nmiao;zhongt=nfent;zhong=nfen;gaot=nshit;gao=nshi;endendcaseendendmodule4.闹钟模块:闹钟模块通过按键进行置数,然后将所置的数跟时间进行比较,当小时和分钟与闹钟的一样,LED灯就会亮。Kv6为闹钟使能,高电平有效。置数模块程序:module niaozhong(nmiaot,nmiao,nfent,nfen,nshit,nshi,xz1,xz2,xz3,kv5);input xz1;input xz2;input xz3;input kv5;output 3:0 nmiaot;output 3:0 nmiao;output 3:0 nfent;output 3:0 nfen;output 3:0 nshit;output 3:0 nshi;reg 7:0 m;reg 7:0 f;reg 7:0 s;assign nmiaot=m/10;assign nmiao=m%10;assign nfent=f/10;assign nfen=f%10;assign nshit=s/10;assign nshi=s%10;always (posedge kv5)begin if(xz1=1&xz2=0&xz3=0) begin if(m59) m=m+1; else m=0; end else if(xz1=0&xz2=1&xz3=0) begin if(f59) f=f+1; else f=0; end else if(xz1=0&xz2=0&xz3=1) begin if(s23) s=s+1; else s=0; endendendmodule比较模块程序:module bijiao(miao,fent,fen,shit,shi,nfent,nfen,nshit,nshi,deng,en);input en;input 3:0 miao;input 3:0 nfent;input 3:0 nfen;input 3:0 nshit;input 3:0 nshi;input 3:0 fent;input 3:0 fen;input 3:0 shit;input 3:0 shi;output deng;reg deng;always (miao,fent,fen,shit,shi,nfent,nfen,nshit,nshi,en)begin if(en=1) beginif(fent=nfent&fen=nfen&shi=nshi&shit=nshit)deng=1;elsedeng=0; end else deng=0;endendmodule比较模块的仿真波形:5.按键选择模块,控制模块,校正模块:用按键kz控制显示的却换,按键kv4控制日期模块或时间模块三个计数器的使能,和控制闹钟位的选择。当要校正是,只要关闭使能端en,通过kz选择要校正的是时间还是日期,在通过kv4进行位的选择。闹钟置数时,不必关掉使能,只要将显示切换到闹钟之后用kv4进行选择要调整的位,通过kv5进行调整。按键控制模块:模块中的程序:计数的程序module jiushuq(kv4,q);input kv4;output 1:0 q;reg 1:0 q;always (posedge kv4)beginif(q2)q=q+1;elseq=0;endendmodule选择的程序:module jskongzhi(en,qh,q,xz1,xz2,xz3);input 1:0 q;input 1:0 qh;input en;output xz1,xz2,xz3;reg xz1,xz2,xz3;always (q,qh,en)begin if(en=1) begin xz1=1; xz2=1; xz3=1;end else begin if(qh=0)beginxz1=0;case(q)0: begin xz1=0;xz2=0;xz3=0;end1: begin xz1=0;xz2=1;xz3=0;end2: begin xz1=0;xz2=0;xz3=1;endendcaseendelsebegin xz1=0;xz2=0;xz3=0;end endendendmodule 校正模块框图:module jiaoshi(en,cl,kv3,ocl);input cl;input kv3;input en;/input bclk;output ocl;reg ocl;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 一线三等角专题训练
- 部编版小学四年级下册语文第八单元教案教学设计
- 六年级上册语文课程计划
- 部编人教版三年级下册数学全册课课练-课时练
- 项目部公务接待审批管控管理制度
- 中小企业数字化转型落地研究报告
- 医院患者服务数字化提升方案
- 喷漆涂装车间安全管理制度
- 改善住宅儿童空间设计方案
- 学校预防学生肥胖综合干预措施
- 黑龙江省龙东地区2026年中考历史真题真卷附答案
- 2026年乡镇综合行政执法队考试真题及答案
- 标准化职工食堂考核标准
- ISO9001-2026 核心数字记录与数据安全控制程序
- 2026年预防接种上岗培训考核试题(含答案)
- (正式版)DB11∕T 2332-2024 《危险化学品企业安全操作规程编制要求》
- 小学道德与法治新部编版四年级上册第一单元 我们的班集体教案(2026秋)
- 2026中国公证协会招5人笔试题库及参考答案详解
- 工艺技术变更管理流程
- 新人教版初中英语七八九年级全部单词全集
- 卫生院职工绩效评价手册
评论
0/150
提交评论