资源描述:
《EDA作业篮球计时器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、EDA技术课程作业——习题二篮球24秒可控计时器设计姓名:徐晨阳学号:2012301080040习题要求:用VerilogHDL语言设计篮球24秒可控计时器功能说明:1.具有24秒计时、显示功能;2.设置外部按键,完成清零、暂停、恢复控制;3.24秒倒计时,时间间隔为1s;4.时间到后发出报警信号,并在3s后解除。一、设计思路根据对篮球规则的了解,每队每回合的进攻时间为24秒,一旦进攻时间超出24秒,便会自动报警从而判定犯规。在每回合内若有犯规出现,则比赛时间暂停,重新发球后继续倒计时。一个回合结束后时间自动回到24秒。因此该24秒计时器应包括以下模块:脉冲发生、递减计数、报警电路
2、、控制开关、显示电路,从而控制完成计数器的置数、连续计数、复位、暂停/继续、实时显示、报警等功能。二、设计方案用QuertusⅡ实现该功能用两种方案。方案一是利用VHDL语言编写各个模块,然后将所有模块连接进行仿真及测试;方案二是利用已有的芯片构成相应模块,后组合连接仿真。尽管方案在设计中有一定的简便性且不用编写复杂的程序,但跟据作业要求及自己掌握的知识,选择前者。具体设计方案如下:1.秒脉冲发生部分:clk_in为10Hz时钟信号,经十分频后得到1Hz的clk_out的输出计时脉冲。2.24秒递减计时部分:以分频后得到的clk_out为脉冲信号控制计时,间隔为1秒,计数器减1。3
3、.外部操作控制部分:以rst_为复位信号,低电平有效,当输入为低时,直接复位;以clr_控制清零,为低时直接清零;以pause为暂停信号,当pause为1时,计时器暂停计时,当为0时,恢复计时。4.倒计时显示部分:使用数码管显示,用qh、ql分别控制数码管的高位输出和低位输出,ql逐次递减,当减为0时,qh减1,直至都减为0。5.报警部分:当计数器减为0时(显示为00),报警信号warn置1,发出报警信号。延时3秒,后置0,解除报警信号。总体框图如下:三、实验代码及注释modulezy2(clk_in,rst_,clr,pause,clk_out,warn,qh,ql,);inpu
4、trst_,pause,clr;//输入输出变量声明inputclk_in;outputwarn;outputclk_out;output[3:0]qh,ql;reg[3:0]qh,ql;//定义reg变量regclk_out,warn;reg[3:0]count,delay;//count为分频器中的计数变量,delay为3秒延时控制变量always@(posedgeclk_in)//上升沿触发if(count<9)//十分频count<=count+1;elsecount<=4'd0;always@(posedgeclk_in)if(!count)clk_out<=~clk_o
5、ut;else;always@(posedgeclk_outornegedgeclrornegedgerst_)if(!rst_
6、
7、!clr)delay<=4'b0;//对延时参数delay进行控制elseif((ql==0&&qh==0))delay<=delay+1;elsedelay<=0;always@(posedgeclk_outornegedgeclrornegedgerst_)if(!rst_
8、
9、!clr)warn<=0;elseif((qh==0&ql==0)&&(delay<3))//当倒计时为00,报警3秒,后解除warn<=1;elsewarn<=0;alwa
10、ys@(posedgeclk_outornegedgeclrornegedgerst_)if(!rst_)//rst_为0,复位beginqh<=2;//显示24ql<=4;endelseif(!clr)//clr为0,清零,显示00beginqh<=0;ql<=0;endelseif(pause)//pause为1,暂停beginql<=ql;//显示数字不变qh<=qh;endelseif(!pause)//pause为0,继续计时beginif((ql==0)&&(qh!=0))beginql<=9;qh<=qh-1;endelseif(ql!=0)beginql<=ql-1
11、;qh<=qh;endelse;endendmodule三、时序仿真验证功能为了更方便的观察仿真结果、验证计时器功能,在时序仿真时将十分频电路改为二分频电路。1.clr清零功能2.rst_复位功能3.pause暂停/继续功能4.warn报警功能经分析,仿真结果正确,该24秒计时器符合要求。五、总结1.编程总是出现错误,经排查发现同一个reg变量在多个always语句下进行操作就会出现这种错误。2.一开始对分频模块进行设计时是在always@(posedgeclk_in