多功能数字钟设计.doc_第1页
多功能数字钟设计.doc_第2页
多功能数字钟设计.doc_第3页
多功能数字钟设计.doc_第4页
多功能数字钟设计.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

多功能数字钟设计实验报告院系:电信系班级:通信0709姓名:黎子鹏学号:U200718522指导老师:周波多功能数字钟设计一、实验目的1.掌握可编程逻辑器件的应用开发技术设计输入、编译、仿真和器件编程;2.熟悉一种EDA软件使用;3.掌握Verilog设计方法;4.掌握分模块分层次的设计方法;5.用Verilog完成一个多功能数字钟设计。二、实验任务1.已知条件 A.MAX+Plus II软件 B.FPGA实验开发装置(该装置可以提供3路时钟信号和译码显示电路)2. 基本功能 A.具有“秒”、“分”、“时”计时功能,小时按24小时制计时 B.具有校时功能,能对“分”和“小时”进行调整3.扩展功能 A.仿广播电台正点报时。在59分51秒、53秒、55秒、57秒发出低音512Hz信号, 在59分59秒时发出一次高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束 时刻为整点 B.定时控制,其时间自定3、 实验设计总体框图:单元电路设计:(1) 分秒计数器的设计 分秒计数器为60进制计数器,其计数规律为0001585900。 对应 于数码显示管,必须设计成BCD计数。因此可以设计成10进制和6进制级联。 10进制的Verilog代码如下:module counter10(Q,nCR,EN,CP);input nCR,EN,CP;output 3:0Q;reg 3:0Q;always(posedge CP )begin if(nCR) Q=4b0000; else if(EN) Q=Q; else if(Q=4b1001) Q=4b0000; else Q=Q+1b1;endendmodule 六进制的Verilog代码如下:module counter6(Q,nCR,EN,CP);input nCR,EN,CP;output 3:0Q;reg 3:0Q;always(posedge CP or negedge nCR )begin if(nCR) Q=4b0000; else if(EN) Q=Q; else if(Q=4b0101) Q=4b0000; else Q=Q+1b1;endendmodule10进制和6进制的级联代码放置顶层文件top_clock中,将在后面介绍。(2)时计数器的设计 时计数器是一个24进制计数器,即当数字钟运行到23时59分59秒时,秒的个位计数器再输入一个秒脉冲时,数字钟应自动显示为00时00分00秒。具体代码如下:module counter24(CntH,CntL,nCR,EN,CP);input CP,nCR,EN;output 3:0CntH,CntL;reg 3:0CntH,CntL;reg CO;always(posedge CP or negedge nCR)beginif(nCR) CntH,CntL=8h00;else if(EN) CntH,CntL2)|(CntL9)|(CntH=2)&(CntL=3)CntH,CntL=8h00;else if(CntH=2)&(CntL3)beginCntH=CntH; CntL=CntL+1b1;endelse if(CntL=9)beginCntH=CntH+1b1;CntL=4b0000;endelsebeginCntH=CntH;CntL=CntL+1b1;endendendmodule(3) 校时功能 当时钟不准确时,我们可以通过校时按钮来调整时间。 设计思路是通过校时按钮发出的信号,作用计数的级联进位端,从而调整时间。具体就是让校时端参与进位使能端。具体代码也放在top_clock中。(4) 仿广播电台正点报时功能 在59分51秒、53秒、55秒、57秒发出低音512Hz信号,在59分59秒时发出一次高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点。 设计思路是利用FPGA实验开发装置提供的另一路1024Hz CPs时钟信号来实现仿广播电台正点报时功能。 取要进入蜂鸣端的信号为Cout。当时间不在59分51秒、53秒、55秒、57秒、59秒时,Cout为低电平。当在59分51秒、53秒、55秒、57秒时,每次遇到CPs的上跳沿就翻转一次,这样刚好Cout为512Hz的信号,而在59分59秒时,取Cout为每次遇到CPs的上跳沿和下跳沿都翻转一次的信号,即为1024Hz信号。而要产生每次遇到CPs的上跳沿和下跳沿都翻转一次的信号,可用每次遇到CPs上跳沿翻转一次产生的信号和每次遇到CPs下跳沿翻转一次产生的信号相异或而得到,即为1024Hz的信号。每次遇到CPs上跳沿翻转一次产生信号的代码实现如下:module speak1(Q1,CPs);input CPs;output Q1;reg Q1; always (posedge CPs)Q1=Q1; endmodule每次遇到CPs下跳沿翻转一次产生信号的代码实现如下:module speak2(Q2,CPs);input CPs;output Q2;reg Q2;always (negedge CPs)Q2=Q2; endmodule设产生的信号Q1为Cout1,Q2为Cout2。加上选择条件得到Cout的代码如下:assign Cout=(Minute=8h59)&(Second7:4=4h5)&(Second0=1b1)?(Second3=1b1)?(Cout1Cout2):Cout1):0;(4) 定时控制功能 设定定时闹钟为00时14分,当时钟到达00时14分时蜂鸣器发出声音。因为没有发出的声音频率要求,所以采用仿广播电台正点报时功能的设计方法,即在选择条件中加入00时14分。定时控制功能代码和仿广播电台正点报时功能代码合并得Cout代码如下:assign Cout=(Minute=8h59)&(Second7:4=4h5)&(Second0=1b1)|(Hour=8h00)&(Minute=8h14)?(Second3=1b1)?(Cout1Cout2):Cout1):0;综合上述单元电路代码得到的顶层文件代码如下:module top_clock(Hour,Minute,Second,Cout,CP,CPs,nCR,EN,Adj_Min,Adj_Hour);input CP,CPs,nCR,EN,Adj_Min,Adj_Hour; /定义输入端口变量output 7:0Hour,Minute,Second; /定义输出端口变量output Cout; wire 7:0Hour,Minute,Second; /说明变量的类型wire CPs,dingshi_EN;wire Cout,Cout1,Cout2; supply1 Vdd;wire MinL_EN,MinH_EN,Hour_EN; /定义中间变量/=Hour:Minute:Second counter=/60进制秒计数器:调用10进制和6进制底层模块构成 counter10 U1(Second3:0,nCR,EN,CP); /秒计数器个位counter6 U2(Second7:4,nCR,(Second3:0=4h9),CP); /秒计数器十位 assign MinL_EN=Adj_Min?Vdd:(Second=8h59);/产生分钟计数器使能信号。Adj_Min=1,校正分钟;Adj_Min=0,分钟正常计时assign MinH_EN=(Adj_Min&(Minute3:0=4h9)|(Minute3:0=4h9)&(Second=8h59); /60进制分钟计数器:调用10进制和6进制底层模块构成counter10 U3(Minute3:0,nCR,MinL_EN,CP); /分计数器个位counter6 U4(Minute7:4,nCR,MinH_EN,CP); /分计数器十位 /产生小时计数器使能信号。Adj_Min=1,校正小时;Adj_Min=0,小时正常计时 assign Hour_EN=Adj_Hour?Vdd:(Minute=8h59)&(Second=8h59); /24进制小时计数器:调用24进制底层模块构成 counter24 U5(Hour7:4,Hour3:0,nCR,Hour_EN,CP); /小时计数器 speak2 U6(Cout2,CPs); /每次遇到CPs上跳沿翻转一次产生的信号 speak1 U7(Cout1,CPs); /每次遇到CPs下跳沿翻转一次产生的信号/产生蜂鸣信号,实现仿广播电台正点报时和定时控制功能assign Cout=(Minute=8h59)&(Second7:4=4h5)&(Second0=1b1)|(Hour=8h00)&(Minute=8h14)?(Second3=1b1)?(Cout1Cout2):Cout1):0;endmodule 四、仿真波形:整个系统的波形如下所示:计时功能的波形如下所示:校时功能的波形如下图所示校分钟的波形:校时钟的波形:仿广播电台正点报时功能的波形如下图所示:定时控制的波形如下图所示:定时控制设为00时14分五、管脚分配:Adj_Hour:Input Pin=9;Adj_Min:Input Pin=8;Cout:Input Pin=83; CP:Input Pin=3;CPs:Input Pin=6;EN:Input Pin=10;Hour0:Output Pin=60;Hour1:Output Pin=61;Hour2:Output Pin=62;Hour3:Output Pin=64;Hour4:Output Pin=65; Hour5:Output Pin=66; Hour6:Output Pin=67;Hour7:Output Pin=69; Minute0:Output Pin=38; Minute1:Output Pin=39;Minute2:Output Pin=47 Minute3:Output Pin=48; Minute4:Output Pin=49; Minute5:Output Pin=50;Minute6:Output Pin=51;Minute7:Output Pin=52; nCR:Input Pin=11;Second0:Output Pin=21; Second1:Output Pin=22; Second2:Output Pin=23;Second3:Output Pin=24; Second4:Output Pin=25; Second5:Output Pin=27; Second6:Output Pin=28; Second7:Output Pin=29; 其中CP接1Hz,CPs接1024Hz。管脚说明:按键管脚号管脚名功能说明Adj_Hour9K2按下该键,每隔1s,小时显示增1,到23后又回到00Adj_Min8K1按下该键,每隔1s,分钟显示增1,到59后又回到00Cout83SPK为输入蜂鸣器的信号,起报时和定时控制作用CP3CLK0为基本计时功能的脉冲,为1HzCPs6CLK2为报时和定时控制的脉冲,为1024HzEN10K3为使能按键,按下该键,系统才工作nCR11K4为清零按键,按下该键,显示管的显示清零6、 现场实测 将CLK0接1Hz,CLK2接1024Hz。当按下K3和K4时,系统正常计时。如果再按下K3,系统不工作。如果在系统工作时,按下K4时,显示管清零。如果按下K2,小时显示的数字每隔1s增1,到23后又回到00。如果按下K1,分钟显示的数字每隔1s增1,到59后又回到00。如果不按下K1、K2,系统正常计时。当时间到了00时14分时,系统将发出声音信号,报时1分钟。当时间到了在59分51秒、53秒、55秒、57秒发出低音512Hz信号,在59分59秒时发出一次高音1024Hz信号,音响持续1秒钟,在1024Hz音响结束时刻为整点。7、 实验

温馨提示

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

评论

0/150

提交评论