资源描述:
《基于verilog的抢答器设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于Verilog语言的二路抢答器设计实验报告电子科学与工程学院121180052李璇一、实验目的1、掌握数字系统中触发器、计数器的设计要素。2、掌握触发器、计数器的VerilogHDL代码编写。3、进一步掌握ISE软件的用法,学习代码下载的方法。二、实验步骤1、设计限时和复位电路。2、编写限时/复位电路的VerilogHDL代码并综合、仿真。3、实现限时抢答器并下载到开发板上进行验证。三、实验原理1、设计二路抢答器2、设计定时器和复位电路可使用计数器来实现定时功能。而给定时间的定时,可以让计数器的输出与特定值比较来实现。这个特定
2、的预置数由时钟频率和定时时间决定。这个基本想法如下图所示。图中,“时间到”信号接到计数器的清零端,以便下次计数从0开始。这里,还需要一个计时开始的功能按键,用来启动计数器的计时。那么,计数器就需要一个使能端,受控于“计时开始”按键。我们知道,EN信号是一个持续信号(允许时保持电平),而“时间到”信号是一个持续时间很短的脉冲,因此还需要一个触发器来产生计数器的EN信号。复位信号由“时间到”信号和复位按键相或来得到。完整的限时和复位电路如下图所示。一、实验代码//主程序部分Moduleresponder(inputclk,inputs
3、et,inputreset,inputwirein_a,inputwirein_b,outputwireq_a,outputwireq_b,outputen);wireclr;wire[27:0]cnt;wireclk_10;wiretimeout;reg[27:0]n=28'h1ffffff;assignclr=reset
4、
5、timeout;trigtrigger(.set(set),.clk(clk_10),.clr(clr),.en(en));countcounter(.clk(clk_10),.clr(clr),.en(e
6、n),.cnt(cnt));compcomparator(.cnt(cnt),.n(n),.timeout(timeout));fpga_2main(.in_a(in_a),.in_b(in_b),.clk(clk_10),.reset(clr),.q_a(q_a),.q_b(q_b),.en(en));endmodule//触发器trigger部分moduletrig(inputset,inputclk,inputclr,outputregen);always@(posedgeclk)beginif(clr)en=0;elseb
7、eginif(set)en=1;elseen=en;endendendmodule//计数器counter部分modulecount(inputclk,inputclr,inputen,outputreg[27:0]cnt);always@(posedgeclk)beginif(clr)cnt=0;elseif(en)cnt=cnt+1;endendmodule//比较器comparator部分modulecomp(inputwire[27:0]cnt,inputwire[27:0]n,outputregtimeout);alwa
8、ys@(*)if(cnt==n)timeout=1;elsetimeout=0;endmodule//抢答器部分modulefpga_2(inputwirein_a,inputwirein_b,inputwireclk,inputwirereset,inputen,outputregq_a,outputregq_b);always@(posedgeclk)beginif((q_b==1)
9、
10、(reset))q_a=0;elseif(in_a&&en)q_a=1;endalways@(posedgeclk)beginif((q_a=
11、=1)
12、
13、(reset))q_b=0;elseif(in_b&&en)q_b=1;endendmodule一、仿真测试1、测试代码//Addstimulushereset=1;reset=0;in_a=1;#1000in_a=0;#100in_b=1;#1000reset=1;#100in_b=0;#100reset=0;in_b=1;#1000in_b=0;#100in_a=1;#1000reset=1;#100in_a=0;#100reset=0;endalways#10clk=~clk;2、仿真结果二、验证限时电路和复位电路
14、1在工程中加入DCMmy_clkmy_dcm(.CLK_IN1(clk),.CLK_OUT1(clk_10),.RESET(1'b0),.LOCKED());1、为模块中的输入输出信号添加管脚约束(管脚定义),在工程中添加UCF文件。一、实验总结反