verilog 数字钟 课程设计_第1页
verilog 数字钟 课程设计_第2页
verilog 数字钟 课程设计_第3页
verilog 数字钟 课程设计_第4页
verilog 数字钟 课程设计_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、中国计量学院信息工程学院课程设计报告中国计量学院课程设计报告课程设计名称 系统设计与仿真学院 班级 学号 姓名 成绩_指导教师 2012 年 12 月 19 日目录简介-2第一部分 EDA技术仿真1、 奇偶校验位产生器-32、 数据选择器-33、 分频器-44、 M序列发生器-55、 序列检测器-6第二部分 数字钟综合设计一、设计要求-8二、各模块设计-81、 分频器设计-82、 计时器设计-93、 时钟校正设计-104、 整点报时设计-125、 闹铃设计-126、 控制模块设计-137、 显示模块设计-148、 整体仿真图-15总结-15参考文献-16简介EDA 简介EDA是电子设计自动化(

2、Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。Verilog HDL语言介绍Verilog HDL是一种硬件描述语言(H

3、DL:Hardware Discription Language),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。 Verilog HDL和VHDL是目前世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由Gateway Design Automation公司(该公司于1989年被Cadence公司收购)开发。两种HDL均为IEEE标准。Verilog HDL的最大特点就是易学易用,如果有C语言的编程经验,可以在一个较短的时间内很快的学习和掌握,因而可以把Verilog HDL内容安排在

4、与ASIC设计等相关课程内部进行讲授,由于HDL语言本身是专门面向硬件与系统设计的,这样的安排可以使学习者同时获得设计实际电路的经验。Quartus II 介绍Altera Quartus II 作为一种可编程逻辑的设计环境, 由于其强大的设计能力和直观易用的接口,越来越受到数字系统设计者的欢迎。Altera Quartus II (3.0和更高版本)设计软件是业界唯一提供FPGA和固定功能HardCopy器件统一设计流程的设计工具。工程师使用同样的低价位工具对 Stratix FPGA进行功能验证和原型设计,又可以设计HardCopy Stratix器件用于批量成品。系统设计者现在能够用Qu

5、artus II软件评估HardCopy Stratix器件的性能和功耗,相应地进行最大吞吐量设计。Altera的Quartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添 了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。ModelSim 介绍Mentor公司的ModelSim是业界

6、最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业界唯一的单内核支持VHDL和Verilog混合仿真的仿真器。它采用直接优化的编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译的代码与平台无关,便于保护IP核,个性化的图形界面和用户接口,为用户加快调错提供强有力的手段,是FPGA/ASIC设计的首选仿真软件。第一部分 EDA技术仿真1、奇偶校验位产生器奇偶校验是通信中常用的一种数据校验方式,设计一个奇偶校验位产生器,根据输入字节(8位)产生相应的奇校验位(1的个数为奇数时输出低电平)和偶校验位(1的个数为偶数时输出低电平)。module partity(even_num

7、bits,odd_numbits,indata);output even_numbits,odd_numbits;input 7:0 indata;assign even_numbits=indata7indata6indata5indata4indata3indata2indata1indata0;assign odd_numbits=even_numbits;endmodule仿真图:2、数据选择器设计1个8位数据选择器,ENA是使能控制输入端。当ENA=1时,电路不能工作,输出Y=0,当ENA=0时,电路处于工作状态。8位数据选择器有三个数据控制端,如ENA=0时,S2、S1、S0=00

8、0,则A0被选中,输出Y=A0。module mux8_1(EN,out,din,select);output out;input EN;input 7:0din;input2:0 select;reg out;always (select or din)begin if(EN) out=0; else casez(select) 3b000:out=din0; 3b001:out=din1; 3b010:out=din2; 3b011:out=din3; 3b100:out=din4; 3b101:out=din5; 3b110:out=din6; 3b111:out=din7;endcas

9、eendendmodule仿真图:3、分频器设计实现任意奇数分频比N(3N1; out3=din;endendendmodule仿真图:5、序列检测器序列检测就是将一个指定的序列从数据流中识别出来,要求设计一个可检测10010序列的检测器。module check_xulie(dataflow,out,clk,reset);input dataflow,clk,reset;output out;reg out;reg3:0state;parameter s0=3b000,s1=3b001,s2=3b010,s3=3b011,s4=3b100;always(posedge clk)beginif

10、(reset)begin state=s0;out=0;endelse casex(state) s0: begin if(dataflow=1) begin state=s1;out=0;end else begin state=s0;out=0;end end s1: begin if(dataflow=0) begin state=s2;out=0;end else begin state=s0;out=0;end end s2:begin if(dataflow=0) begin state=s3;out=0;end else begin state=s0;out=0;end end

11、s3:begin if(dataflow=1) begin state=s4;out=0;end else begin state=s0;out=0;end end s4:begin if(dataflow=0) begin state=s0;out=1;end else begin state=s0;out=0;end end default: state=s0;endcaseendendmodule仿真图:第二部分 数字钟综合设计一、 设计要求1、 设计一个多功能数字时钟,具有时分,秒计数显示,闹铃功能。2、 能够利用按键实现对闹钟时间的设定并在当前显示时间到后能够进行闹钟提示。3、 具有

12、整点报时功能,在整点时能给出提示。4、 能够利用按键实现“校时”、“校分”功能,随时对数码管的显示进行校正。实现框图:二、各模块设计1、分频器设计实验中需要1HZ作为时秒、分、时的时钟信号,我们实现的方法是4分频(二个2分频级连,基础输入时钟是频率为4Hz信号,这样就可以产生1Hz的信号。实现代码:always (posedge CLK )begin CLK_2Hz=CLK_2Hz;endalways (posedge CLK_2Hz) CLK_1Hz=CLK_1Hz;分频模块2、计时器设计秒针计时到59秒产生mclk信号提示分钟加1,分钟计时到59产生hclk信号给小时加1。M是模式按键,当

13、m=0时,进入计时模式,在计时模式下,时间由1Hz时钟提供。Turn可以改变调节的是分钟还是小时。实现代码:begin if(!(TSEC8h59)|TURN&(!m) begin TSEC=0; if(!(TURN&(!m) mclk=1; end else begin if(TSEC3:0=9) begin TSEC3:0=0; TSEC7:4=TSEC7:4+1; end else begin TSEC3:0=TSEC3:0+1; mclk=0; endendendalways (posedge mclk or posedge count1) begin count1=0; if(TMI

14、N=8h59) begin TMIN=0; hclk=1; end else begin if(TMIN3:0=9) begin TMIN3:0=0; TMIN7:4=TMIN7:4+1; end else TMIN3:0=TMIN3:0+1; hclk=0; end endalways (posedge hclk or posedge count2) begin count2=0; if(THOU=8h23) THOU=0; else begin if(THOU3:0=9) begin THOU3:0=0; THOU7:4=THOU7:4+1; end else THOU3:0=THOU3:

15、0+1; endend 分针加1时针加13、时钟校正设计模式m=2,进入计时校准模式,Turn改变调整的是分钟还是小时。该模块调整由按键change提供产生count1和count2上升沿,每按一次,分钟或者时钟计数器加1。TMIN,THOU为校正时间的寄存器。在设定好时间后,数码管输出。实现代码:always (posedge mclk or posedge count1) begin count1=0; if(TMIN=8h59) begin TMIN=0; hclk=1; end else begin if(TMIN3:0=9) begin TMIN3:0=0; TMIN7:4=TMIN

16、7:4+1; end else TMIN3:0=TMIN3:0+1; hclk=0; end end/-always (posedge hclk or posedge count2) begin count2=0; if(THOU=8h23) THOU=0; else begin if(THOU3:0=9) begin THOU3:0=0; THOU7:4=THOU7:4+1; end else THOU3:0=THOU3:0+1; endend /-if(THOU=AHOU)&(TMIN=AMIN)&(AHOU|AMIN)&(!CHANGE) if(TSEC8h30) alert1=1; e

17、lse alert1=0; else alert18h54)|(!(TMIN|TSEC) alert2=1; else alert2=0; endalert2在整点提示信息5、闹铃设计模式m=1,进入闹铃模式,该模块调整由按键change提供产生lcount1和lcount2上升沿,每按一次,分钟或者时钟计数器加1。实现代码:always ( posedge lcount1 ) begin lcount1=0; if(AMIN=8h59) AMIN=0; else if(AMIN3:0=9) begin AMIN3:0=0; AMIN7:4=AMIN7:4+1; end else AMIN3:

18、0=AMIN3:0+1;end /-always (posedge lcount2) begin lcount2=0; if(AHOU=8h23) AHOU=0; else begin if(AHOU3:0=9) begin AHOU3:0=0; AHOU7:4=AHOU7:4+1; end else AHOU3:0=AHOU3:0+1; endend/- 闹铃到点 if(THOU=AHOU)&(TMIN=AMIN)&(AHOU|AMIN)&(!CHANGE) if(TSEC8h30) alert1=1; else alert1=0; else alert1=0;设定小时为3点设定分钟为22分

19、在3点22分,alert1提示信息6、控制模块设计寄存器m是模式选择,MODE由按键输入,没按一次m加1,模式改变。m=0为普通计时模式,m=1时是调整闹铃时钟,m=2是修改当前时间。CHANGE按键每按一次,分钟或小时寄存器加1,TURN按键改变fm,fm=1调整的是分,fm=0调整小时。实现代码:always(posedge CHANGE)begin case(m) 2b10:begin if(fm) begin count1=1; end else begin count2=1; end end 2b01:begin if(fm) begin lcount1=1; end else be

20、gin lcount2=1; end end default: ; endcaseend/-begin if(1=TURN) fm=fm; else if(MODE=1)begin if(2b10=m) m=2b00; else m=m+1; end else ; end 仿真效果7、显示模块设计硬件电路中有数码管译码器,在软件里就不需要对数码管编码,直接由个时间寄存器输出即可。HOU、MIN、SEC为当前数码管输出时钟;TMIN、THOU、TSEC为校准时间;AMIN、AHOU为闹铃寄存器时钟。在m不同模式下,就可以显示不同的寄存器数值。实现代码:case(m) 2b00:begin HOU=THOU; MIN=TMIN; SEC=TSEC; end 2b01:begin HOU=AHOU; MIN=AMIN; / SEC=8hzz; end 2b10:begin HOU=THOU; MIN=TMIN; / SEC=8hzz; endendcase8、整体仿真图总结在这学期的课程设计中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高

温馨提示

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

评论

0/150

提交评论