实验二:基于HDL十进制计数、显示系统设计一、实验目的:1.掌握基于语言的ISE设计全流程;2.熟悉、应用VerilogHDL描述数字电路;3.掌握基于Verilog的组合和时序逻辑电路的设计方法;4.具有数显输出的十进制计数器的设计。二、实验原理:1.实验内容:设计具有异步复位,同步使能的十进制计数器,其计数结果可以通过七段数码,管发光二极管进行显示。其系统原理图如下:2.十进制计数器模块端口信号说明:①输入信号:clk----计数器的时钟信号Clc——异步清零信号,当clc=1时,输出复位为0;当clc=0时,正常计数Ena——使能控制信号,当ena=1时,电路正常累加计数,否则电路不工作输出信号。②输出信号:SUM[3:0]--------计数值的个位。即,在CLK上升沿检测到SUM=9时,SUM将被置0,开始新一轮的计数。COUT--------计数值的十位进位,即:只有在时钟CLK上升沿测到SUM=9时,COUT将被置1,其余情况下COUT=0;3.自顶向下的设计思路进行模块划分:整个系统要求设计的模块:十进制计数模块和数码管驱动模块,由于实验按键为实现按键防抖,所以在实验时候需要加入消抖模块:电源按键消抖:通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,为了产生这种现象而作的措施就是按键消抖。三、实验过程:按照实验原理的设计思想,做出了以下设计代码:十进制计数器部分:modulecnt10(clr,clk,ena,sum,cout);inputclr,clk,ena;output[3:0]sum;outputcout;reg[3:0]sum;regcout;always@(posedgeclkorposedgeclr)beginif(clr)beginsum=4'b0000;cout=0;endelseif(ena)beginif(sum==4'b1001)beginsum=4'b0000;cout=1;endelseif(sum4'b1001)beginsum=sum+4'b0001;cout=0;endendendEndmodule数码管驱动模块代码:moduleled(out_y,sum);output[6:0]out_y;input[3:0]sum;reg[6:0]out_y;always@(sum)begincase(sum)4'b0000:out_y=7'b0111111;4'b0001:out_y=7'b0000110;4'b0010:out_y=7'b1011011;4'b0011:out_y=7'b1001111;4'b0100:out_y=7'b1100110;4'b0101:out_y=7'b1101101;4'b0110:out_y=7'b1111101;4'b0111:out_y=7'b0000111;4'b1000:out_y=7'b1111111;4'b1001:out_y=7'b1101111;default:out_y=7'b00000000;endcaseendendmodule消抖模块部分实验已经给出,最后综合模块代码:moduleint(clk_50,clk,rest,ena,out_y,cout);inputclk_50,clk,rest,ena;output[6:0]out_y;outputcout;wire[3:0]out;wireclk_out;wire[6:0]out_y;debounce_moduleu1(clk_50,rest,clk,clk_out);cnt10u2(rest,clk_out,ena,out,cout);ledu3(out_y,out);Endmodule根据实验要求综合:1.2.相应的引脚约束文件为:NETclkLOC=“V16”|PULLDOWN;NETclk_50LOC=C9;NETclrLOC=N17;NETcoutLOC=C11;NETdata_out0LOC=D5;NETdata_out1LOC=C5;NETdata_out2LOC=B6;NETdata_out3LOC=E7;NETdata_out4LOC=F7;NETdata_out5LOC=A4;NETdata_out6LOC=B4;NETenaLOC=H18;NETclkCLOCK_DEDICATED_ROUTE=FALSE;3.时序仿真为:十进制计数器仿真如下:最后例化后的结果为:思考题比较实验一与实验二的实验过程,说明原理图输入法与HDL输入法的不同的应用环境答:实验一中应用的是原理图完成十进制计数器的数显,工作量相对较大,需要绘制8张原理图,其中还不包括消抖模块。所以,原理图设计适合相对简单的电路,门电路较少的电路。而实验二中应用HDL语言描述要完成的功能,对于较复杂的电路设计起来相对简单,所以HDL设计适合比较复杂的电路。门电路很多的电路。