您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 实用多功能数字时钟设计verilog
西安邮电大学数字系统设计实验课程设计报告书2013-2014学年第一学期专业:自动化班级:学号姓名实用多功能数字时钟设计一、设计要求数字钟具有整点报时和校时功能。(1)以4位LERD数码管显示时、分,时为24进制。(2)时、分显示数字之间以小数点间隔,小数点以1Hz频率、50%占空比的亮、灭规律表示秒计时。(3)整点报时采用蜂鸣器实现。每当整点前控制蜂鸣器以低频鸣响4次,响1s、停1s,直到整点前一秒以高频响1s,整点时结束。(4)采用两个按键分别控制“校时”或“校分”。按下“校时”键时,时显示值以0~23循环变化;按下“校分”键时,分显示值以0~59循环变化,但时显示值不能变化。二、背景知识介绍(1)VerilogHDL简介VerilogHDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。VerilogHDL语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,VerilogHDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。VerilogHDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。VerilogHDL提供了扩展的建模能力,其中许多扩展最初很难理解。但是,VerilogHDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。(2)Modelsim简介Modelsim仿真工具是Model公司开发的。它支持Verilog、VHDL以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在Dataflow窗口查看某一单元或模块的输入输出的连续变化等,比quartus自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。(3)Quartus工程说明创建工程时,路径中不允许有中文。选择芯片系列:CycloneII选择芯片型号:EP2C8Q208C8其余直接下一步。(创建的工程文件名为:*.qpf文件)与工程设置:Assignments-Settings弹窗右上角:Device…DeviceandPinOptions-Configuration-Useconfigurationdevice:EPCS1DeviceandPinOptions-Dual-PurposePins-nCEO:UseasregularI/O创建Verilog文件,和BlockDiagram文件。完成编译后,下载。编译:Processing-StartCompilation引脚分配:Assignments-PinPlanner下载程序:Tools-Programmer-HardwareSetup…:选择对应的下载方式Mode:JATG注意文件名后缀为:*.sof并勾选:Program/Configure连接下载器线,和USB电源线,点击“Start”下载。Progress:绿色100%,完成。该下载方式:掉电后消失,须重新下载。三、硬件设计(1)主要部件电路图按键电路图蜂鸣器电路图(2)硬件配置硬件搭建图引脚配置图四、软件设计(1)Modelsim仿真1.主程序moduleled(clk,clr,miao,fen1,fen2,shi1,shi2,a,jiaos,jiaof,Ring,sel,seg);inputclk,clr;inputjiaos,jiaof,sel;outputmiao,fen1,fen2,shi1,shi2,seg;reg[3:0]fen1,fen2,shi1,shi2;regmiao;reg[3:0]sfbz;outputreg[7:0]a;outputregRing;outputreg[1:0]sel;outputreg[6:0]seg;always@(posedgeclk)beginif(clr)miao=0;elsemiao=~miao;endalways@(posedgemiaoorclr)beginif(clr)a=0;elseif(a==8'd59)a=0;elsea=a+1;endalways@(posedgemiaoorclr)beginif(clr)fen1=0;elseif(jiaof&&fen14'd9)fen1=fen1+1;elseif(jiaof&&fen1==4'd9)fen1=0;elseif(fen1==4'd9&&a==8'd59)fen1=0;elseif(a==8'd59&&(a+1)==8'd60)fen1=fen1+1;elsefen1=fen1;endalways@(posedgemiaoorclr)beginif(clr)fen2=0;elseif(jiaof&&fen1==4'd9&&fen25)fen2=fen2+1;elseif(fen2==5&&fen1==9&&a==8'd59)fen2=0;elseif(fen1==9&&a==8'd59)fen2=fen2+1;elsefen2=fen2;endalways@(posedgemiaoorclr)beginif(clr)shi1=0;elseif(jiaos&&shi14'd9)shi1=shi1+1;elseif(jiaos&&shi1==4'd9)shi1=0;elseif(shi1==8'd3&&fen1==8'd9&&fen2==8'd5&&a==8'd59&&shi2==4'd2)beginshi1=0;shi2=0;endelseif(fen1==8'd9&&fen2==8'd5&&a==8'd59&&shi1==8'd9)shi1=0;elseif(fen1==8'd9&&fen2==8'd5&&a==8'd59)shi1=shi1+1;elseshi1=shi1;endalways@(posedgemiaoorclr)beginif(clr)shi2=0;elseif(jiaos&&shi24'd2)shi2=shi2+1;elseif(shi1==8'd3&&fen1==8'd9&&fen2==8'd5&&a==8'd59&&shi2==2)shi2=0;elseif(fen1==8'd9&&fen2==8'd5&&a==8'd59&&shi1==8'd9)shi2=shi2+1;elseshi2=shi2;endalways@(fen1orfen2ormiao)if(fen1==8'd9&&fen2==8'd5)case(a)8'd51:Ring=1;8'd53:Ring=1;8'd55:Ring=1;8'd57:Ring=1;8'd59:Ring=1;default:Ring=1'b0;endcaseelseRing=1'b0;endmodule2.测试程序moduleledtest1;regclk,clr;wire[3:0]fen1,fen2,shi1,shi2;wiremiao;wireRing;wire[7:0]a;regjiaos,jiaof;ledu1(clk,clr,miao,fen1,fen2,shi1,shi2,a,jiaos,jiaof,Ring);initialbegin#10clk=1;#10clr=1;#10clr=1;#10clr=0;#100jiaof=0;#100jiaos=0;#100000jiaof=1;#100000jiaos=1;#100jiaof=0;#100jiaos=0;clr=0;endalways#10clk=~clk;endmodule3.Modelsm程序仿真4.程序仿真波形图(2)QuartusII仿真1.主程序moduleled(clk,clr,miao,jiaos,jiaof,Ring,sel,seg);inputclk,clr;inputjiaos,jiaof;outputmiao,seg,sel;reg[3:0]fen1,fen2,shi1,shi2;reg[21:0]div;regmiao,clkd;reg[7:0]seg;reg[3:0]sel,nsel;reg[3:0]sfbz;reg[7:0]a;outputregRing;always@(posedgeclk)beginif(~clr)div=0;elseif(div==21'b111111111111111111111)div=0;elsediv=div+1;endalways@(posedgeclk)beginif(~clr)clkd=0;elseif(div==21'b111111111111111111111)clkd=~clkd;elseclkd=clkd;endalways@(posedgeclkd)beginif(~clr)miao=0;elsemiao=~miao;endalways@(posedgemiaoornegedgeclr)beginif(~clr)a=0;elseif(a==8'd59)a=0;elsea=a+1;endalways@(posedgemiaoornegedgeclr)beginif(~clr)fen1=0;elseif(!jiaof&&fen14'd9)fen1=fen1+1;elseif(!jiaof&&fen1==4'd9)fen1=0;elseif(fen1==4'd9&&a==8'd59)fen1=0;elseif(a==8'd59&&(a+1)==8'd60)fen1=fen1+1;elsefen1=fen1;endalways@(posedgemiaoornegedgeclr)beginif(~clr)fen2=0;elseif(!jiaof&&fen1==4'd9&&fen25)fen2=fen2+1;elseif(!jiaof&&fen1==4'd9&&fen2==5)fen2=0;elseif(fen2==5&&fen1==9&&a==8'd59)fen2=0;elseif(fen1==9&&a==8'd59)fen2=fen2+1;elsefen2=fen2;endalways@(posedgemiaoornegedgeclr)beginif(~clr)shi1=0;elseif(!jiaos&&shi2=1&&shi14'd9)shi1=shi1+1;elseif(!jiaos&&shi2==2&&shi14'd3)shi1=shi1+1;elseif(!jiaos&&shi1==4'd9)shi1=0;elseif(!jiaos&&shi2==2&&shi1==4'd3)shi1=0;elseif(fen1==8'd9&&fen2==8'd5&&a==8'd59&&shi1==8'd9)shi1=0;elseif(fen1==8'd9&&fen2==8'd5&&a==8'd59)shi1=shi1+1;elseshi1=shi1;endalways@(posedgemiaoornegedgeclr)beginif(~clr)shi2=0;elseif(!jiaos&&shi24'd2&&shi1==9)shi2=shi2+1;elseif(!jiaos&&shi2==4'd2&&shi1==3)shi2=0;elseif(sh
本文标题:实用多功能数字时钟设计verilog
链接地址:https://www.777doc.com/doc-5807537 .html