数字秒表一、实验目的1、理解计时器的原理与Verilog/VHDL的编程方法;2、掌握多模块设计及层次设计的方法。二、实验原理秒计时器是由计数器和译码器、显示器组成,其核心是计数器与译码器。60秒计时器可由二个计数器分别完成:个位为十进制计数器,十位为6进制计数。个位计数器的计数信号由实验开发板上主频20MHZ分频产生的1Hz时钟信号提供,十位计数器的计数信号由个位的进位信号提供。然后由译码器对计数结果进行译码,送LED数码管进行显示。Clr为清零,set为开始。三、源程序十进制计数器:moduleCNT10(clr,clk,ena,q,cout);inputclr,clk,ena;output[3:0]q;outputcout;reg[3:0]q;regcout;always@(posedgeclkorposedgeclr)beginif(clr)beginq=4'b0000;cout=0;endelseif(ena)if(q==4'b1001)beginq=4'b0000;cout=1;endelsebeginq=q+1;cout=0;endendendmodule六进制计数器:moduleCNT6(clr,clk,ena,q,cout);inputclr,clk,ena;output[3:0]q;outputcout;reg[3:0]q;regcout;always@(posedgeclkorposedgeclr)beginif(clr)beginq=4'b0000;cout=0;endelseif(ena)if(q==4'b0101)beginq=4'b0000;cout=1;endelsebeginq=q+1;cout=0;endendendmodule分频器:moduleFPQ(clk0,clk1);inputclk0;outputclk1;reg[26:0]Q1;regclk1;always@(posedgeclk0)if(Q19999999)Q1=Q1+1;elsebeginQ1=0;clk1=~clk1;endendmodule四、实验任务1、采用层次设计的方法,设计一个包括顶层及底层模块的60秒计时器,底层模块用Verilog/VHDL设计(或者选用原理图输入法中宏功能元件),顶层用原理图设计。2、秒计时器应当具有系统复位功能;五、实验步骤1、新建工程,注意工程名与顶层文件一致,顶层文件是最终形成的图形文件。2、分模块设计:分别设计10进制、6进制计数器、分频器模块,并生成模块符号。注意:每个模块都按一下步骤做一遍(1)新建verilog文件,编辑好后添加到刚才建好的工程里面。(2)把当前编辑的文件设成顶层文件。(3)编译,把错误的改正。(4)新建仿真文件,存盘的时候注意文件名要和当前模块名一致,设置仿真时间,建议是50us或者100us,设置好仿真输入,然后设置仿真输入文件为当前要仿真的文件,最后查看仿真结果发现没有错误之后就可以生成模块符号了。3、建顶层。4、进行引脚锁定,并下载至开发系统验证。六、仿真结果十进制计数器:十进制计数器仿真结果没有错误。六进制计数器:六进制计数器仿真结果没有错误。七、顶层电路图:八、总结:此次实验学会了分模块完成项目的方法,分模块的方法可以使问题简单化,层次化,思路更加明了,错误的地方容易修改,是菜鸟和老鸟都很合适的方法,尤其是菜鸟,更加能接受。另外,通过这次试验,我更加了解了QUARTUSII的使用方法,对它的功能也更加熟练了。