数字日历电路的设计EDA实训_第1页
数字日历电路的设计EDA实训_第2页
数字日历电路的设计EDA实训_第3页
数字日历电路的设计EDA实训_第4页
数字日历电路的设计EDA实训_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、成 绩批阅教师日 期桂林电子科技大学 实训报告2016-2017学年第1学期学 院 海洋信息工程学院 课 程 EDA综合实训 姓 名 钟朝林 学 号 1416030218 指导老师 覃琴 日 期 2016/12/29 实训题目:数字日历电路的设计 1 概述1.1 设计要求1.1.1 设计任务 设计并制作一台数字日历。1.1.2 性能指标要求 用EDA实训仪的I/O设备和PLD芯片实现数字日历的设计。 数字日历能够显示年、月、日、时、分和秒。 用EDA实训仪上的8只八段数码管分两屏分别显示年、月、日和时、分、秒,即在一定时间段内显示年、月、日(如20080101),然后在另一时间段内显示时、分、

2、秒(如00123625),两个时间段能自动倒换。 数字日历具有复位和校准年、月、日、时、分、秒的按钮,但校年和校时同用一个按钮,即在显示年、月、日时用此按钮校年,在显示时、分、秒时则用此按钮校时,依此类推。1.2 总体设计基本原理及框图1.2.1 基本原理 日历主要由年月日模块、时分秒模块、控制模块、显示模块、校时模块组成。采用3个公用按钮j1、j2、和j3完成时分秒或年月日的校时,用8只七段数码管分时完成时分秒或年月日的显示。设计电路的计时器模块(jsq24)用于完成一天的24小时计时;年月日模块接收计时器模块送来的“天”脉冲进行计数,得到日月年的显示结果,控制模块产生控制信号k,控制数码显

3、示器显示年月日,还是时分秒,或者自动轮流显示;校时选择模块在k信号的控制下,选择将j1、j2和j3这3个校时按钮产生的信号是送到计时器模块的校秒、校分和校时输入端,还是送到年月日模块的校天、校月、校年输入端;显示选择模块在k信号的控制下,选择是将计时器模块的时、分、秒状态信号,还是将年月日模块的年、月、日状态信号送到数码管显示器显示。1.2.2 总体框图 2 系统软件设计分析2.1年月日模块module r(clrn,clk,jn,jy,jr,qn,qy,qr); /年月日模块input clrn,clk,jn,jy,jr;output reg15:0 qn;reg 15:0 qn1;outp

4、ut reg7:0 qy,qr; reg clkn,clky; reg7:0 date; reg clkn1,clkn2,clkn3;initial begin clkn1=1;clkn2=1;clkn3=1;endinitial begin qn='h2011;qn1=2011;qy=1;qr=1;endalways (posedge (clkjr) or negedge clrn)/ 日计时模块begin if(clrn)qr=1;else begin if(qr=date)begin qr=1; clky=1;end else begin qr=qr+1;clky=0;end i

5、f(qr3:0='ha)begin qr3:0=0;qr7:4=qr7:4+1;end endendalways (posedge (clkyjy) or negedge clrn)/月计时模块 begin if(clrn) qy=1; else begin if(qy='h12) begin qy=1;clkn=1;end else begin qy=qy+1;clkn=0;endif(qy3:0='ha)beginqy3:0=0;qy7:4=qy7:4+1;end end end always begin case(qy) 'h01:date='h3

6、1; 'h02:begin if(qn1%4=0)&(qn1%100 != 0)|(qn1%400=0)date='h29; else date='h28;end 'h03:date='h31; 'h04:date='h30; 'h05:date='h31; 'h06:date='h30; 'h07:date='h31; 'h08:date='h31; 'h09:date='h30; 'h10:date='h31; 'h11:d

7、ate='h30; 'h12:date='h31; default: date='h30; endcase endalways ( posedge (clknjn) or negedge clrn) /年计时模块 begin if(clrn)begin qn3:0=1;qn1=2011;end else begin if(qn3:0=9)qn3:0=0; else begin qn3:0=qn3:0+1;qn1=qn1+1;end if(qn3:0=9)clkn1=0; else clkn1=1;end endalways (posedge clkn1 or n

8、egedge clrn) begin if(clrn)qn7:4=1; else begin if(qn7:4=9) qn7:4=0; else qn7:4=qn7:4+1; if(qn7:4=9) clkn2=0; else clkn2=1;end endalways (posedge clkn2 or negedge clrn) begin if(clrn)qn11:8=0; else begin if(qn11:8=9) qn11:8=0; else qn11:8=qn7:4+1; if(qn11:8=9) clkn3=0; else clkn3=1;end endalways (pos

9、edge clkn3 or negedge clrn) begin if(clrn)qn15:12=2; else if(qn15:12=9) qn15:12=0; else qn15:12=qn15:12+1; endendmodule 2.2时分秒模块module cnt60(clk,clrn,j,q,cout);/分和秒计时input clk,clrn,j;output reg7:0 q;output reg cout;always (posedge clkj or negedge clrn ) begin if (clrn) q=0; else begin if (q='h59

10、) begin q=0;cout=1;end else begin q=q+1;cout=0;end if (q3:0='ha) begin q3:0=0;q7:4=q7:4+1;end end end endmodulemodule cnt24(clk,clrn,j,q,cout);/小时计时input clk,clrn,j;output reg7:0 q;output reg cout;always (posedge clkj or negedge clrn ) begin if (clrn) q=0; else begin if (q='h23) begin q=0;co

11、ut=1;end else begin q=q+1;cout=0;end if (q3:0='ha) begin q3:0=0;q7:4=q7:4+1;end end end endmodule2.3控制模块module contr(clk,k1,k2,k); input clk,k1,k2; output reg k; reg 3:0 qc; reg rc;always (posedge clk) begin qc=qc+1; if (qc<8) rc=0; else rc=1; case (k1,k2) 0:k=rc; /八秒显示年月日八秒显示时分秒的自由转换 1:k=0;/

12、显示并且校准时分秒 2:k=1; /显示并且校准年月日3:k=rc;endcase end endmodule 2.4显示模块module mux_16(k,qm,qf,qs,qr,qy,qn,q); input k; input 7:0qm,qf,qs,qr,qy; input 15:0 qn; output reg 31:0q;always begin if (k=0) begin q31:24=0;q23:0=qs,qf,qm;end else q=qn,qy,qr; endendmodule 2.5校时模块module mux_4(k,jm,jf,js,jr,jy,jn,j1,j2,j

13、3);input k,j1,j2,j3;output reg jm,jf,js,jr,jy,jn;always begin if (k=0) jm,jf,js=j1,j2,j3; else jr,jy,jn=j1,j2,j3; endendmodule2.6闹钟模块module naozhong(qs,qf,led,zt);input zt;input7:0 qs,qf;output led;reg led;always beginif (qs='h06&&qf='h01) /6:01闹钟开始闪烁 led=1; else led=0; if(zt=1) led=

14、0; / 在任意时刻都可以关掉闹钟 endendmodule 2.7分频器模块module FENP(clk,newclk);input clk;output reg newclk;reg24:0 cnter;always (posedge clk) begin if(cnter<20000000) cnter=cnter+1; else cnter=0; if (cnter<10000000) newclk=1;else newclk=0; end endmodule3 系统测试(调试)3.1 测试仪器与设备 计算机,EDA实训仪。3.2 性能指标测试 k1、k2控制分屏显示,当

15、k1k2为00或11时是自动显示,控制数码显示用8秒时间显示年、月、日,另外8秒时间显示时、分、秒;当k1k2为01时,仅显示时、分、秒,同时j1、j2和j3校秒、校分和校时,当k1k2为10时,仅显示年、月、日,同时j1、j2和j3校年、月、日。clkn清零功能。3.3 结果分析各个功能的实现分开设计。对于时分秒,则采用24进制和60进制,对于年月日的设计复杂点。特别是日,因为每个月的日子都不一样。闰年的更加特殊,测试的时候经常出现2月有30天,后来发现是程序出的问题,反复修改,最后总算行了。4 波形发生器的设计4.1 设计原理框图4.2 测试与仿真5 实训总结 通过这次EDA综合实训,我把课堂上学习的知识又巩固了一遍,也更加熟悉了对quartusII这款软件的使用,本次实训我们小组选择了数字日历电路设计这个题目,实验过程中出现了很多问题,比如不显示数字;小时到日期无法进位;闰年2月日期不对等等问题,这主要是我们对程序的不熟悉还有课堂的知识学得不够造成的,也明白了书本上的程序不一定是对的,错误真的一大堆,后来在同学的帮助下,明白了错误所在。我们实验的创新点在于闹钟模块,可以实现闹钟的功能。这次实验通过小组之间的分工合作,把大家的思路整合在一起,大家一起讨论问题所在,对程序的认识更深了。EDA的功能真的很强大,去除了传统算法的复杂,而且程序简单化,几个语句就可以实现想要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论