Verilog HDL 多功能电子钟.doc
基于verilog HDL语言的数字电子钟设计摘 要 : 本课程设计完成了数字电子钟的设计,数字电子钟是一种用数字显示秒、分、时的计时装置,由于十足集成电路技术的发展,使数字钟走时准确、多功能化且性能稳定等优点。在本次设计中,系统开发平台为MAX+plus ,硬件描述语言是Verilog HDL。依据Verilog HDL语言设计由计时,闹铃,秒表,报时等7大模块组成的多功能数字电子钟。根据输入,观察输出及仿真。设计方案和设计平台完成了程序编写和程序调试,通过运行程序及时序波形的仿真有效验证了设计的正确性,初步实现了设计目标。关键词 多功能数字电子钟;Verilog HDL; MAX +plus;专用集成电路; Based on Verilog HDL language digital electric clock design The student's name: H The guide teacher: X Abstract:The course is designed to finished the design of digital electric clock, digital electric clock is a kind of digital display second, points, when the timer, because dye-in-the-wood integrated circuit technology development, and make a digital clock keeps good time, more functional and stable performance, etc. In this design, system developing platform for MAX + plus , hardware description language is Verilog HDL. According to the design scheme and design platform completed programming and program test, through to run the program in time sequence waveform simulation verified effectively the correctness of design, and then realized the design goal.Keywords : application-specific integrated circuit, Verilog HDL, Multi-function digital electric clock; MAX + plus 目录1 引 言 1.1课题设计的背景、目的1.2 课题设计环境2 Verilog HDL 简介3 多功能电子钟的7大模块设计及仿真芯片生成 3.1 计时模块 3.2 闹铃设置模块 3.3 校时模块 3.4 秒表功能模块 3.5 整点报时模块 3.6 闹铃屏蔽及响铃功能模块3.7 秒表提示功能模块4 7大模块组合的多功能电子钟的设计及仿真 4.1 功能描述 4.2 源程序(基于Verilog HDL语言) 4.3 模块仿真5 结束语参考文献 1 引 言数字电子钟的时间周期为24小时,具有显示时,分,秒的功能,并设置有闹钟,日历,时间调节等功能。 本课程设计设想采用专用集成电路(ASIC1,Application Specific Integrated Circuit)实现数字电子钟的功能。在本次计中,系统开发平台为MAX+plus2 。MAX+plus是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大可编程逻辑器件的供应商之一。Max+plus界面友好,使用便捷,被誉为业界最易用易学的EDA软件。在Max+plus上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。在本次设计中,采用的硬件描述语言是Verilog HDL。Verilog HDL也是目前应用最为广泛的硬件描述语言,并被IEEE采纳为IEEE#1064-1995标准。Verilog HDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合、仿真验证和时序分析。Verilog HDL适合算法级(Algorithm)、寄存器传输级(RTL)逻辑级(Logic)、门级(Gate)和版图级(Layout)等各个层次的电路设计和描述。使设计者在进行电路设计时不必过多考虑工艺实现的具体细节,Verilog HDL只需要根据系统设计的要求施加不同的约束条件,即可设计出实际电路。利用计算机的强大功能,在EDA工具的支持下,把逻辑验证与具体工艺库相匹配,将布线及延迟计算分成不同的阶段来实现,减少了设计者的繁重劳动。1.1课题的背景、目的20世纪末,数字电子技术得到飞速发展,有力地推动了社会生产力的发展和社会信息化的提高。在其推动下,数字电子技术的应用已经渗透到人类生活的各个方面。从计算机到手机,从数字电话到数字电视,从家用电器到军用设备,从工业自动化到航天技术,都尽可能采用数字电子技术。在此大的背景下,传统的只有计时功能的钟表已经远远不能马不能满足人们对生活和生产的需求。各个领域和不同人群要求钟表不止有计时的功能,而是应该积聚了计时,闹钟,秒表,报时等多功能的数字电子钟。EDA技术就是依靠功能强大的电子计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Description Language)为系统逻辑描述手段完成的设计文件,自动地完成逻辑化简、编译、综合、优化、仿真,直至下载到可编程逻辑器件CPLD/FPGA或专用集成电路ASIC(Application Specific Integrated Circuit)芯片中,实现既定的电子电路设计功能。 这给用语言Verilog HDL设计数字电子钟带来了极大的方便。1.2 课题设计环境 本次课题设计方要用到的开发环境是Altera公司的EDA设计工具软件MAX+plusII。Altera公司的工作与EDA厂家紧密结合,使MAX+plusII软件可以与其它工业标准的设计输入、综合和校验工具相连接。设计者可以使用Altera或标准EDA输入工具进行设计,使用MAX+plus II编译器对Altera器件的设计进行编译,并使用Altera或其它EDA校验工具进行仿真。目前,MAX+plusII支持与Cadence,Mentor Graphics, Synopsys, Viewlogic等EDA工具接口。MAX+plusII的设计输入、处理和校验功能都集中在统一的开发环境下,这样可以加快动态调试,缩短开发周期。MAX+plusII软件支持多种硬件描述语言设计输入,包括VHDL,Verilog HDL和Altera自己的硬件描述语言AHDL。MAX+plusII软件提供丰富的库单元供设计调用,其中包括74系列的全部器件和一些基本的逻辑门,多种特殊的逻辑宏功能(Macro-Function)以及新型的参数化的兆功能(Mage-Function).调用库单元进行设计,可以大大减轻工作量。 2 Verilog HDL简介 Verilog HDL硬件描述语言简介模块是Verilog HDL的基本描述单位,用于描述某个设计的功能或结构及其与其他模块通信的外部端口。一个设计的结构可使用开关级原语、门级原语和用户定义的原语方式描述; 设计的数据流行为使用连续赋值语句进行描述; 时序行为使用过程结构描述。一个模块可以在另一个模块中使用。说明部分用于定义不同的项,例如模块描述中使用的寄存器和参数。语句定义设计的功能和结构。说明部分和语句可以散布在模块中的任何地方;但是变量、寄存器、线网和参数等的说明部分必须在使用前出现。为了使模块描述清晰和具有良好的可读性, 最好将所有的说明部分放在语句前。本书中的所有实例都遵守这一规范。在模块中,可用下述方式描述一个设计:(1) 数据流方式;(2) 行为方式;(3) 结构方式;(4) 上述描述方式的混合。Verilog HDL模型中的所有时延都根据时间单位定义。 在顺序过程中出现的语句是过程赋值模块化的实例。模块化过程赋值在下一条语句执行前完成执行。过程赋值可以有一个可选的时延。时延可以细分为两种类型:(1) 语句间时延: 这是时延语句执行的时延。(2) 语句内时延: 这是右边表达式数值计算与左边表达式赋值间的时延。在Verilog HDL中可使用如下方式描述结构:(1) 内置门原语(在门级);(2) 开关级原语(在晶体管级);(3) 用户定义的原语(在门级);(4) 模块实例 (创建层次结构)。3 多功能电子钟的7大模块设计及仿真芯片生成本章根据模块功能共分为七个模块,分别为计时模块、闹铃设置模块、校时模块、秒表功能模块、整点报时模块、闹铃屏蔽及响铃功能模块、秒表提示铃声功能模块。3.1 计时功能模块及仿真模块功能为正常计时,即每秒钟读一次数,秒表加1,秒计时满60进1给分计时,分计时满60进1给小时计时,小时计时满24清零。从功能上讲分别为模60计数器,模60计数器和模24计数器。 计时模块芯片如图3.1:图3.1 计时模块芯片计时模块仿真波形如图3.2:图3.2 计时模块符号仿真波形3.2 闹铃设置功能模块及仿真 模块功能为设置闹铃的分钟和小时,设置的时候由turn控制调整分钟及调整小时之间的切换,每按一次change,所调整的计数器加1,分钟计数器满60清零,小时计数器满24清零。闹铃模块芯片如图3.3:图3.3 闹铃设置模块芯片 闹铃仿真波形如图3.4:图3.4 闹铃模块仿真波形3.3 校时功能模块及仿真 模块功能为修正分钟和小时时间以及秒钟的精确调整清零。由turn控制调整分钟和调整小时之间的切换,每按一下change所调整的计数器加1,分钟计数器满60清零,小时计数器满24清零;秒种的精确调整清零具体为在正常计时的情况下,长时间按住turn,即可使秒钟清零,进行精确调时。 校时模块芯片如图3.5:图3.5 校时模块芯片 校时仿真波形如图3.6:图3.6 校时模块仿真波形3.4 秒表功能模块及仿真 模块功能为进行手动计时,按一下count为计时,再按一次count为停止计时,保存计数数值,依此类推;按一次clr为计数清零,停止计数。计数器共有三个,分别为百分秒的模100计数器,秒钟的模60计数器和分钟的模60计数器。秒表模块芯片如图3.7:图3.7 秒表功能芯片生成 秒表仿真波形如图3.8:图3.8 秒表功能模块仿真波形3.5 整点报时功能模块及仿真 模块功能为当计时模块中分钟显示为59,秒种为55时开始,每秒都发出一次短音(1/4秒);当秒种和分钟同时显示为0时,发出一声长音(3/4秒);clk1000为扬声器驱动频率。报时模块芯片如图3.9:图3.9 报时模块芯片 报时模块仿真波形如图3.10: 图3.10整点报时模块仿真波形3.6 闹铃屏蔽及响铃功能模块 功能为当计时模块中的分钟和小时都等于闹铃设置的分钟和小时的时候,从计时模块中的秒种为0时开始响铃,响铃时间20秒;但是可以通过一直按住change来屏蔽闹铃声音。3.7 秒表提示铃声功能模块 从秒表的分钟位和秒钟位均为59,且百分秒位为76开始,到分钟位秒钟位和百分秒位全部为零同时有分钟位产生的进位这一时刻,之间的14秒时间发出一声提示音,提示秒表已经计时1个小时,开始下一个小时的计时,请予以记录。由于这两个模块有太多的输入,所以不进行模块符号和波形仿真。 4. 7大模块组合的多功能电子钟的设计及仿真4.1 功能描述计时功能 包括时、分、秒的计时,分别类似于模24、模60、模60计数器。闹钟功能 在设定的时间发出闹玲音,其中闹铃设置为00:00时无效。校时功能 能方便的对小时、分钟和秒进行手动调整以校准时间。整点报时 每逢整点按照秒的时序产生四短一长的报时音。秒表功能 在每次计数满一小时的时候,发出一声提示音。4.2 源程序(基于Verilog HDL语言)module clock(CLK,CLK_1K,MODE,CHANGE,TURN,ALERT,HOU,MIN,SEC,LD_AL,LD_H,LD_M);input CLK,CLK_1K,MODE,CHANGE,TURN;output 7:0 HOU,MIN,SEC;output ALERT,LD_AL,LD_H,LD_M;reg 7:0 HOU,MIN,SEC,THOU,TMIN,TSEC,AHOU,AMIN;reg 1:0 m,fm,sound;reg LD_H,LD_M;reg CLK_1Hz,CLK_2Hz,mclk,hclk;reg alert1,alert2,ear;reg count1,count2,lcount1,lcount2;wire ct1,ct2,lct1,lct2,m_clk,h_clk;always (posedge CLK)begin CLK_2Hz<=CLK_2Hz; if(sound=3) begin sound<=0;ear<=1;end /ear信号用于产生或屏蔽声音 else begin sound<=sound+1;ear<=0;endendalways (posedge CLK_2Hz) CLK_1Hz<=CLK_1Hz; /产生1Hz的时基信号always (posedge MODE) /MODE信号控制3钟功能的转换 begin if(m=2) m<=0; /m=0:计时功能 else m<=m+1; /m=1:闹钟功能 end /m=2:手动校时always (TURN) fm<=fm; /校时时选择调整分钟还是小时alwaysbegin case(m) 2:begin if(fm) begin count1<=CHANGE; LD_H,LD_M<=2'b01; end else begin count2<=CHANGE; LD_H,LD_M<=2'b10; end count1,count2<=0; end 1:begin if(fm) begin lcount1<=CHANGE; LD_H,LD_M<=2'b01; end else begin lcount2<=CHANGE; LD_H,LD_M<=2'b10; end lcount1,lcount2<=0; end default:count1,count2,lcount1,lcount2,LD_H,LD_M<=0; endcaseendalways (posedge CLK_1Hz) /秒计时和秒调整 if(!(TSEC8'h59)|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 TSEC3:0<=TSEC3:0+1; mclk<=0; endassign m_clk=mclk|count1;assign h_clk=hclk|count2;assign ct1=CLK|m_clk; /ct1用于计时、校时中的分钟计数assign ct2=CLK|h_clk; /ct2用于计时、校时中的小时计数 assign lct1=CLK|lcount1; /lct1用于定时状态下调整分钟信号assign lct2=CLK|lcount2; /lct2用于定时状态下调整小时信号always (posedge ct1) /分计时和分调整 begin if(TMIN=8'h59) 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 ct2) /小时计时和小时调整 if(THOU=8'h23) THOU<=0; else begin if(THOU3:0=9) begin THOU3:0<=0; THOU7:4<=THOU7:4+1; end else THOU3:0<=THOU3:0+1; endalways (posedge lct1) /闹钟定时中分钟调整 if(AMIN=8'h59) AMIN<=0; else if(AMIN3:0=9) begin AMIN3:0<=0; AMIN7:4<=AMIN7:4+1; end else AMIN3:0<=AMIN3:0+1; always (posedge lct2) /闹钟定时中小时调整 if(AHOU=8'h23) AHOU<=0; else begin if(AHOU3:0=9) begin AHOU3:0<=0; AHOU7:4<=AHOU7:4+1; end else AHOU3:0<=AHOU3:0+1; endalways /闹钟功能:产生闹铃信号 if(THOU=AHOU)&&(TMIN=AMIN)&&(AHOU|AMIN)&&(!CHANGE) /若按住"CHANGE"键不放就可以屏蔽闹铃 if(TSEC<8'h30) alert1<=1; /设定闹铃声的长短,这里设为30秒 else alert1<=0; else alert1<=0;always case(m) 0:begin HOU<=THOU; /计时状态下时、分、秒显示 MIN<=TMIN; SEC<=TSEC; end 1:begin HOU<=AHOU; /定时状态下时、分、秒显示 MIN<=AMIN; SEC<=8'hzz; end 2:begin HOU<=THOU; /校时状态下时、分、秒显示 MIN<=TMIN; SEC<=8'hzz; end endcaseassign LD_AL=(AHOU|AMIN)?1:0;always /整点报时功能:产生整点报时信号 begin if(TMIN=8'h59)&&(TSEC>8'h54)|(!(TMIN|TSEC) if(TSEC>8'h54) alert2<=ear & CLK_1K; /产生短音 else alert2<=!ear & CLK_1K; /产生长音 else alert2<=0; endassign ALERT=(alert1)?CLK_1K & CLK:0)|alert2; /闹铃音和整点报时信号输出endmodule4.3模块仿真模块芯片生成如图4.1:图4.1 模块仿真芯片仿真波形如图4.2和4.3:整体图仿真波形图:图4.2 模块整体仿真波形局部仿真波形图:图4.3 模块局部仿真波形5. 结 束 语 作为通信专业的学生,通过这次EDA方面的课程设计, 提高了我们对EDA领域及通信电路设计领域的认识,有利于培养我们在通信电路EDA方面的设计能力。一人一题特别有利于锻炼我们独立分析问题和解决问题的能力。设计过程的复杂加老师的严格要求有益于培养我们严谨的工作作风。利用Verilog Hdl设计的灵活性,根据串行通信协议的要求,可以在实验室利用先进的EDA工具,设计出符合自己实际需求的多功能电子钟电路。 经过三周的设计制作,数字电子钟的是设计已经完成,它的7个功能模块基本满足了当今人们对电子钟的需求。 由于时间有限,本设计还有许多需要努力的地方,需要将来做进一步的学习和努力。 这次课程设计,以方便实际操作为基础,以理论联系实际为准则,不断完善,不断创新。 参考文献1曹昕燕、周凤臣编著的EDA技术试验与课程设计,清华大学出版社2 甘登岱、朱利娜主编EDA培训教程 ,机械工业出版社3付家才主编EDA原理与应用,化学工业出版社4 李国洪、沈明山主编可编程器件EDA技术与实践, 机械工业出版社5 王新梅,肖国镇纠错码原理与方法, 西安电子科技大学出版社 6 阎石主编 数字电子技术基础 ,高等教育出版社