当前位置:首页 > 数字系统设计(智力竞赛抢答器Verilog HDL建模)
以上模块通过一个case语句来实现抢答功能,case语句是一个条件语句,当play信号的值为“00001”时候程序执行第一个“begin end”里面的语句,当play信号为“00010”的时候程序执行第二个“begin end”里面的语句,依次类推如果play的值与以上信号都不符的话就执行default后面的语句。通过模块编译以后所得的模块框图如下:
图四:抢答模块
通过综合以后我们可以得到RTL图如下:
图五:抢答模块RTL图
3.2 锁存模块
锁存模块是对第一位抢答者的信号进行锁存,其后的信号无效。其中d为锁存输入信号,clk为时钟信号,ea为使能信号,clear为清除信号,q为锁存输出信号,alm0为触发选手抢答报警的声音信号。整个模块Verilog HDL源程序如下:
else if (ea == 1'b0) //使能信号有效则执行下面语句 begin
q <= d ; //将d的值传给q if (clk == 1'b1) //时钟到达则执行下面 begin
temp = temp + 1; if (temp == 2) begin
alm0 <= 1'b0 ; temp = temp - 1; end else begin
alm0 <= 1'b1 ; end end end
以上模块主要通过if进行条件判断选择,当条件符合的时候则执行,模块通过编译综合以后得到的框图如下所示:
图六:锁存模块
综合以后得到的RTL图如下:
图七:锁存器RTL图
3.3 计数模块
计数模块,比赛中要求第一抢答者在规定时间内回答问题,系统开始30秒倒计时,倒计时完毕发出响声,若能在规定时间内完成,由主持人按使能开关停止倒计时,不发出响声。计数模块的源程如下:
else if (clk == 1'b1) begin
if (en == 1'b1)
begin
ll <= ll - 1 ; if (ll == 4'b0000) begin
ll <= 4'b1001 ; hh <= hh - 1 ;
if (hh == 4'b0000 & ll == 4'b0000) begin
hh <= 4'b0000 ; ll <= 4'b0000 ; if (stop == 1'b1) begin ll <= ll ; hh <= hh ; end end end end end high <= ll ; low <= hh ; end
共分享92篇相关文档