多功能数字钟系统课件_第1页
多功能数字钟系统课件_第2页
多功能数字钟系统课件_第3页
多功能数字钟系统课件_第4页
多功能数字钟系统课件_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、模拟电子技术课程设计报告多功能数字钟系统院 系 :机电工程学院专 业:微电子年级(班级):微电子姓 名:杨奕醇学 号:20124231011指导教师:张明文、付英完成日期:2015年6月25日目 录1 引 言11.1 设计目的11.2 设计意义22 Verilog  HDL简介23 课程设计基本要求34 多功能电子钟的6大模块设计及仿真芯片生成34.1 计时模块34.1.1 24时模块34.1.2 60分模块44.1.3 60秒模块44.2 校时校分模块54.3 报时模块54.4 时段控制模块64.5 分频模块74.6 数码管译码模块75 多功能数字钟系统顶层设计整体框架7

2、5.1 顶层电路原理图85.2 总体仿真结果86 硬件的下载与调试86.1 硬件管脚的分配86.2 硬件的下载96.3 程序的微调与测试107 总结与心得10参 考 文 献10附录一:源程序12附录二:硬件管脚分配19多功能数字钟系统1 引 言随着电子技术的发展,现场可编程门阵列FPGA和复杂可编程逻辑器件CPLD的出现,使得电子系统的设计者利用与器件相应的电子CAD软件,在实验室里就可以设计自己的专用集成电路ASIC器件。这种可编程ASIC不仅使设计的产品达到小型化、集成化和高可靠性,而且器件具有用户可编程特性,大大缩短了设计周期,减少了设计费用,降低了设计风险。目前数字系统的设计可以直接面

3、向用户需求,根据系统的行为和功能要求,自上至下地逐层完成相应的描述综合优化仿真与验证,直到生成器件,实现电子设计自动化。其中电子设计自动化(EDA)的关键技术之一就是可以用硬件描述语言(HDL)来描述硬件电路。20世纪末,数字电子技术得到飞速发展,有力地推动了社会生产力的发展和社会信息化的提高。在其推动下,数字电子技术的应用已经渗透到人类生活的各个方面。从计算机到手机,从数字电话到数字电视,从家用电器到军用设备,从工业自动化到航天技术,都尽可能采用数字电子技术。 在此大的背景下,传统的只有计时功能的钟表已经远远不能马不能满足人们对生活和生产的需求。各个领域和不同人群要求钟表不止有计时的功能,而

4、是应该积聚了计时,校时,校分,报时等多功能的数字电子钟。 EDA技术就是依靠功能强大的电子计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Description Language)为系统逻辑描述手段完成的设计文件,自动地完成逻辑化简、编译、综合、优化、仿真,直至下载到可编程逻辑器件CPLD/FPGA或专用集成电路ASIC(Application Specific Integrated Circuit)芯片中,实现既定的电子电路设计功能。 这给用语言Verilog HDL设计数字电子钟带来了极大的方便。1.1 设计目的(1)初步了解可编程逻辑器件的基本原理。(2)初步掌

5、握Altera公司的可编程逻辑器件开发软件Quartus II的使用方法。 (3)掌握可编程逻辑器件的编程/配置方法。(4)学会使用FPGA开发板。(5)熟悉使用Verilog HDL语言。1.2 设计意义通过多功能数字钟系统的设计,使我们认识到如何用所学的语言和相关的编译软件,来实现通过编程来对硬件的控制,不断的总结错误,将自己所学的尽量的使用出来。2 Verilog  HDL简介模块是Verilog HDL的基本描述单位,用于描述某个设计的功能或结构及其与其他模块通信的外部端口。一个设计的结构可使用开关级原语、门级原语和用户定义的原语方式描述; 设计

6、的数据流行为使用连续赋值语句进行描述; 时序行为使用过程结构描述。一个模块可以在另一个模块中使用。 说明部分用于定义不同的项,例如模块描述中使用的寄存器和参数。语句定义设计的功能和结构。说明部分和语句可以散布在模块中的任何地方;但是变量、寄存器、线网和参数等的说明部分必须在使用前出现。为了使模块描述清晰和具有良好的可读性, 最好将所有的说明部分放在语句前。本书中的所有实例都遵守这一规范。 在模块中,可用下述方式描述一个设计: (1) 数据流方式; (2) 行为方式; (3) 结构方式;上述描述方式的混合。 Verilog HDL模型中的所有时延都根据时间单位定义。 

7、0;在顺序过程中出现的语句是过程赋值模块化的实例。模块化过程赋值在下一条语句执行前完成执行。过程赋值可以有一个可选的时延。 时延可以细分为两种类型: (1) 语句间时延:这是时延语句执行的时延。(2) 语句内时延:这是右边表达式数值计算与左边表达式赋值间的时延。 在Verilog HDL中可使用如下方式描述结构: (1) 内置门原语(在门级); (2) 开关级原语(在晶体管级);(3) 用户定义的原语(在门级);(4) 模块实例(创建层次结构)。3 课程设计基本要求(1) 基本功能:60秒60分24小时。 (2) 扩展功能:报时;每小

8、时59分51,53,55,57秒低频报时,59秒高频报时。 校时校分; 时段控制;6点18点 输出灯不亮,其它时间灯亮。 独立设计除上述3种功能以外的扩展功能,可加分。4 多功能电子钟的6大模块设计及仿真芯片生成根据本次课程设计的基本要求可大致将模块功能共分为6个模块,分别为计时模块、校时校分模块、报时模块、时段控制模块、分频模块、数码管译码模块。4.1 计时模块计时功能包括:时、分、秒的计时,为了更好的验证此功能,我们将计时模块又分为三个子模块:24时模块、60分模块和60秒模块。4.1.1 24时模块24时模块芯片如图4.1.1所示:图4.1.1 24 时模块24时模块仿真波形如图4.1.

9、2所示:图4.1.2 24 时模块仿真波形4.1.2 60分模块60分模块芯片如图4.1.3所示:图4.1.3 60 分模块60分模块仿真波形如图4.1.4所示:图4.1.4 60 分模块仿真波形4.1.3 60秒模块60秒模块芯片如图4.1.5所示:图4.1.5 60 秒模块60秒模块仿真波形如图4.1.6所示:图4.1.660 秒模块仿真波形4.2 校时校分模块通过SWH和SWM这两个输入信号来控制时、分模块的时钟信号。当SWH为高电平时,时校正,秒正常计数;SWM为高电平时,分校正,秒正常计数。校时校分模块芯片如图4.2.1所示:图4.2.1 校时校分模块校时校分模块仿真波形如图4.2.

10、2所示:图4.2.2 校时校分模块仿真波形4.3 报时模块根据实验要求:每小时59分51,53,55,57秒低频报时,59秒高频报时。我们生成的报时模块如图4.3.1所示:图4.3.1 报时模块报时模块芯片仿真波形如图4.3.2所示:图4.3.2 报时模块芯片仿真波形4.4 时段控制模块根据本次课设的要求:6点18点 输出灯不亮,其它时间灯亮。 编写代码所生成的时段控制模块的芯片如图4.4.1所示:图4.4.1 时段控制模块时段控制模块仿真波形如图4.4.2所示:图4.4.2 时段控制模块仿真波形图4.5 分频模块为了能正常计数必须将各个的时钟信号进行处理,也就是所谓的分频,根据本次

11、课设所用的开发板,时钟为50MHZ,所以要正常计数,必须将其分频成1HZ的时钟信号给计数模块用。为了能达到各个模块所需的功能,我还需将其分频为1KHZ、500HZ、5HZ这些时钟信号供各个模块选择使用。编写代码所生成的分频模块如图4.5.1所示:图4.5.1 分频模块4.6 数码管译码模块为了让计数效果在开发板的数码管显示,我们必须将计数模块的输出进行译码,编写代码生成的模块如图4.6.1所示:图4.6.1 译码模块5 多功能数字钟系统顶层设计整体框架5.1 顶层电路原理图5.2 总体仿真结果仿真得到如图5.2.1所示的仿真图。图5.2.1 总体仿真图6 硬件的下载与调试6.1 硬件管脚的分配

12、进过管脚设置的原理图如图6.1.1所示:图6.1.1 管脚分配后的原理图具体管脚分配见附录二6.2 硬件的下载下载结果如图6.2.1所示:图6.2.1 实物图拨码开关从左到右依次是SW9到SW0,当SW9为1时,复位端无效,这时按下SW3,使SW3为1,时钟启动。当要校时校分时,当SW2为1高频调时间,SW1(校时按钮),SW0(校分按钮),SW2为0时低频校时。最右边的led灯为时段控制输出信号。时间4时31分不在6时到18时之间所以该灯点亮。13时43分在此范围内,灯不亮,现象如图6.2.2所示:图6.2.2 实物图6.3 程序的微调与测试第一次下载到开发板时发现报时模块出现了一些问题,但

13、是在经过对程序的一些修改及调试,最终还是成功的完成多功能数字钟。7 总结与心得经过此次数字钟的设计,我确实从中学到很多的东西。首先,通过VHDL硬件语言的学习,我充分认识到了功能模块如何用语言实现,让我初步了解到了一个数字电路用硬件语言设计的方式和设计思想。其次,也让我深深地体会到实践的重要性,起初我学VHDL语言的时候,只是学得书本上的知识,经过这次课程设计,通过对模块的语言实现,对于VHDL语言我有了更深的认识。而且在程序错误的发现和改正的过程中,我得到了更多的收获,也确实让我进步了不少。再次,当我遇到一些问题的时候,请教老师,和同学们一起讨论,令我受益颇多!最后,这个多功能数字电子钟是自

14、我创造与吸取借鉴共同作用的产物,是自我努力的结果。这让我对数字电路的设计充满了信心。虽然课程设计已经结束,但这并不代表我已经真正掌握了VHDL语言,仍需继续学习参 考 文 献1 Joseph Cavanagh.Verilog HDL数字设计与建模M.北京:电子工业出版社,2001.1 潘松,黄继业.EDA技术实用教程M .北京:科学出版社,2006.3 Sanir Palnitkar.Verilog HDL数字设计与综合M.北京:电子工业出版社,2009.4 甘学温.集成电路原理与设计M.北京大学出版社,2014.5 西勒提. Verilog HDL高级数字设计M.北京:电子工业出版

15、社,2014.6 齐洪喜,陆颖.VHDL电路设计M.北京:清华大学出版社,2004.7 江国强,李哲英.EDA技术与应用M.北京:电子工业出版社,2004.8 雷伏容.VHDL电路设计M.北京:清华大学出版社,2006.9 曾繁泰,陈美金.VHDL程序设计M.北京:清华大学出版社,2000.10 潘松,王国栋.VHDL实用教程M.成都:电子科技大学出版社,2000.附录一:源程序/24进制程序module m_24(H,CPH,RD); output 7:0H; input CPH,RD; reg 7:0H; always(negedge RD or posedge CPH) begin if

16、(!RD) H7:0<=0; else begin if(H7:4=2)&&(H3:0=3) /当高位为2,低位为3时,将其赋值为零 begin H7:0<=0; end else begin if(H3:0=9) begin H3:0<=0; H7:4<=H7:4+1; end else H3:0<=H3:0+1; /若高位不为2,低位不为9时,低位加1 end end end endmodule /60进制程序module m60(M,CP60M,CPM,RD); output 7:0M; output CP60M; input CPM; in

17、put RD; wire CP60M; reg 7:0M; always(negedge RD or posedge CPM) begin if(!RD) begin M7:0<=0; end else begin if(M7:4=5)&&(M3:0=9) /当高位为5,低位为9时,将其赋值为0 begin M7:0<=0; end else /若低位为9时,低位赋值为0 begin if(M3:0=9) begin M3:0<=0; if(M7:4=5) /若高位为5时,高位赋值为0 beginM7:4<=0; end elsebeginM7:4<

18、;=M7:4+1; /若高位不为5低位为9时,高位加1 endend else beginM3:0<=M3:0+1; /若高位不为5低位不为9时,低位加1 endend end end assign CP60M=(M6&M4&M3&M0); endmodule /报时module baoshi(m6,m4,m3,m0,s6,s4,s3,s0,dy,gy,bshi); input m6,m4,m3,m0,s6,s4,s3,s0,dy,gy; output bshi; wire bm; reg bshi; assign bm=m6&m4&m3&

19、m3&m0&s6&s4&s0; always(bm or s3 or dy or gy) begin if(bm&s3) bshi<=gy; else if(bm) bshi<=dy; else bshi<=0; endendmodule/校时校分module jiaoshi(CPM,CPH,CPS,CP60M,CP60S,SWM,SWH); output CPM,CPH; input SWM,SWH; input CPS,CP60S,CP60M; reg CPM,CPH; always(SWM or SWH or CPS or CP6

20、0S or CP60M) begin case(SWM,SWH) 2'b10:begin CPM<=CPS;CPH<=CP60M;/校分 end 2'b01:begin CPM<=CP60S;CPH<=CPS;/校时end default:begin CPM<=CP60S;CPH<=CP60M;end endcase end endmodule/时段控制module deng(h,sk); input 7:0h; output sk; reg sk; always(h) begin if(h<=5)|(h>=25)sk<=1

21、;elsesk<=0;endendmodule/分频module div_zh(f,_500HzOut,_1KHzOut, ncR,CLOCK_50,s); input ncR,CLOCK_50,s; output _500HzOut,_1KHzOut,f; wire _1HzOut,_5HzOut; assign f=s?_5HzOut:_1HzOut; divn #(.WIDTH(26),.N(50000000) u0(.clk(CLOCK_50), .rst_n(ncR), .o_clk(_1HzOut) ); divn #(.WIDTH(17),.N(100000) u1(.cl

22、k(CLOCK_50), .rst_n(ncR), .o_clk(_500HzOut) ); divn #(.WIDTH(16),.N(50000)u2(.clk(CLOCK_50), .rst_n(ncR), .o_clk(_1KHzOut) ); divn#(.WIDTH(24),.N(10000000) u3(.clk(CLOCK_50), .rst_n(ncR), .o_clk(_5HzOut) ); endmodule module divn(o_clk,clk,rst_n); input clk,rst_n; output o_clk; parameter WIDTH=3; par

23、ameter N=6; reg WIDTH-1:0 cnt_p; reg WIDTH-1:0 cnt_n; reg clk_p; reg clk_n; assign o_clk=(N=1)? clk:(N0?(clk_p|clk_n):clk_p); always (posedge clk or negedge rst_n) begin if(!rst_n) cnt_p<=0; elseif(cnt_p=N-1) cnt_p<=0; else cnt_p<=cnt_p+1; end always (posedge clk or negedge rst_n) begin if(

24、!rst_n) clk_p<=0; elseif(cnt_p<(N>>1) clk_p<=1; elseclk_p<=0; end always (negedge clk or negedge rst_n) begin if(!rst_n) cnt_n<=0; else if(cnt_n=N-1) cnt_n<=0; else cnt_n<=cnt_n+1; end always (negedge clk or negedge rst_n) begin if(!rst_n) clk_n<=0; else if(cnt_n<(N&

25、gt;>1) clk_n<=1; else clk_n<=0; end endmodule/译码module decode4_7(input3:0 indec_0,indec_1,indec_2,indec_3,indec_4,indec_5,indec_6,indec_7, output reg 6:0 dout_0,dout_1,dout_2,dout_3,dout_4,dout_5,dout_6,dout_7 ); always(indec_0 or indec_1 or indec_2 or indec_3 or indec_4 or indec_5 or indec

26、_6 or indec_7 ) begin case(indec_0) 4'h1: dout_0 = 7'b111_1001; / -0- 4'h2: dout_0 = 7'b010_0100; / | | 4'h3: dout_0 = 7'b011_0000; / 5 1 4'h4: dout_0 = 7'b001_1001; / | | 4'h5: dout_0 = 7'b001_0010; / -6- 4'h6: dout_0 = 7'b000_0010; / | | 4'h7: do

27、ut_0 = 7'b111_1000; / 4 2 4'h8: dout_0 = 7'b000_0000; / | | 4'h9: dout_0 = 7'b001_1000; / -3- 4'ha: dout_0 = 7'b000_1000; 4'hb: dout_0 = 7'b000_0011; 4'hc: dout_0 = 7'b100_0110; 4'hd: dout_0 = 7'b010_0001; 4'he: dout_0 = 7'b000_0110; 4'

28、hf: dout_0 = 7'b000_1110; 4'h0: dout_0 = 7'b100_0000; endcase case(indec_1) 4'h1: dout_1 = 7'b111_1001; / -0- 4'h2: dout_1 = 7'b010_0100; / | | 4'h3: dout_1 = 7'b011_0000; / 5 1 4'h4: dout_1 = 7'b001_1001; / | | 4'h5: dout_1 = 7'b001_0010; / -6- 4'h6: dout_1 = 7'b000_0010; / | | 4'h7: dout_1 = 7'b111_1000; / 4 2 4&

温馨提示

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

评论

0/150

提交评论