找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1075|回复: 0
收起左侧

RobeiEDA关于抢答器的设计案例

[复制链接]
ID:434973 发表于 2022-2-17 23:15 | 显示全部楼层 |阅读模式

1、实验目的

掌握了解格抢答器的工作原理,并用verilog硬件语音来实现抢答器的模模块以及test_bench,最后在Robei可视化仿真软件经行功能实现和仿真验证。

2、实验原理

抢答器实现的是:

1、四人通过按键抢答,最先按下按键的人抢答成功,此后其他人抢答无效。

2、每次只有一人可获得抢答资格,一次抢答完后主持人通过复位按键复位,选手再从新抢答。

3、有从新开始游戏按键,游戏从新开始时每位选手有5分的初始分,答对加1分,答错扣1分,最高分不能超过9分,当选手得分减为0时取消该选手抢答资格。

4、选手抢答成功时其对应的分数闪烁。

3、实验内容

3.1snatch(抢答)模块设计

1)、 新建一个模型命名为snatch,类型为 module,同时具备 3 输入 2 输出,每个引脚的属性和名称参照下图1经行对应的修改。

                  图1snatch引脚属性

                            图2snatch界面图

2)、添加代码。点击模型下方的 Code添加代码。

代码:

  1. <font style="font-size: 14px">/********************************/

  2. reg c;

  3. reg q;

  4. reg [1:0] s;

  5. wire out=(key[0]&(data[3:0]!=0)|key[1]&(data[7:4]!=0)|key[2]&(data[11:8]!=0)|key[3]&(data[15:12]!=0));

  6. wire clk=out&(!q);

  7. assign m={c,s};

  8. always@(posedge clk or clr)

  9. if(!clr)

  10. begin

  11. q<=0;c<=0;

  12. end

  13. else

  14. begin

  15. c<=1;q<=!q;

  16. end

  17. always@(posedge clk)

  18. case(key)

  19. 4'b0001:s<=2'b00;

  20. 4'b0010:s<=2'b01;

  21. 4'b0100:s<=2'b10;

  22. 4'b1000:s<=2'b11;

  23. default:s<=2'b??;

  24. endcase

  25. assign

  26. led=({c,s}==3'b100)?4'b0001:({c,s}==3'b101)?4'b0010:({c,s}==3'b110)?4'b0100:({c,s}==3'b111)?4'b1000:4'b0000;

  27. /********************************/</font>
复制代码


3)、保存模型到一个文件夹(文件夹路径不能有空格和中文)中,运行并检查有无错误输出。

3.2store(计分)模块的设计

1)、 新建一个模型命名为store,类型为 module,同时具备 3 输入 2 输出,每个引脚的属性和名称参照下图3经行对应的修改。

                           图3 store引脚的属性

              图4store界面图

2)、添加代码。点击模型下方的 Code添加代码。

代码:

  1. <font style="font-size: 14px">/********************************/

  2. always @(posedge clk or posedge start)

  3. if(start) q<=16'b0101010101010101;

  4. else if(up)

  5. case(s)

  6. 3'b100: if(q[3:0]>=4'h9) q[3:0]<=q[3:0];else q[3:0]<=q[3:0]+1;

  7. 3'b101: if(q[7:4]>=4'h9) q[7:4]<=q[7:4]; else q[7:4]<=q[7:4] +1;

  8. 3'b110: if(q[11:8]>=4'h9) q[11:8]<=q[11:8];else q[11:8]<=q[11:8]+1;

  9. 3'b111: if(q[15:12]>=4'h9) q[15:12]<=q[15:12];else q[15:12]<=q[15:12]+1;

  10. endcase

  11. else

  12. case(s)

  13. 3'b100:if(q[3:0]>4'h0) q[3:0]<=q[3:0]-1;

  14. 3'b101:if(q[7:4]>4'h0) q[7:4]<=q[7:4]-1;

  15. 3'b110:if(q[11:8]>4'h0) q[11:8]<=q[11:8]-1;

  16. 3'b111:if(q[15:12]>4'h0) q[15:12]<=q[15:12]-1;

  17. Endcase

  18. /********************************/</font>
复制代码


3)、保存模型到一个文件夹(文件夹路径不能有空格和中文)中,运行并检查有无错误输出。

3.3qiangdaqi(顶层)模块设计

1)、 新建一个模型命名为qiangdaqi,类型为 module,同时具备 5 输入 2 输出,每个引脚的属性和名称参照下图5经行对应的修改。

                       图5qiangdaqi引脚属性

                  图6 qiangdaqi界面图

3.4qiangdaqi_test测试文件的设计

1) 新建一个5输入 2 输出的qiangdaqi_test测试文件,记得将 Module Type 设置为 “testbench”,各个引脚配置如图7所示。

                      图7qiangdaqi_test引脚属性

  • 、另存为测试文件。将测试文件保存到上面创建的模型所在的文件夹下。加入模型。 在 Toolbox 工具箱的 Current 栏里,会出现模型,单击该模型并在qiangdaqi _test上添加,并连接引脚,如下图8所示:

                         图8 qiangdaqi_test界面图

4) 输入激励。点击测试模块下方的“Code”,输入激励算法。激励代码在结束

的时候要用$finish 结束。

测试代码:

  1. <font style="font-size: 14px">/***********************************/

  2. initial begin

  3. start=1;

  4. clk=0;

  5. clr=0;

  6. up=0;

  7. key=4'b0000;

  8. #10 clr=1;

  9. start=0;

  10. up=1;

  11. #2 key=4'b0001;

  12. #10 clr=0;

  13. up=0;

  14. #10 clr=1;

  15. start=0;

  16. up=1;

  17. #2 key=4'b0001;

  18. #10 clr=0;

  19. up=0;

  20. #10 clr=1;

  21. start=0;

  22. up=1;

  23. #2 key=4'b0001;

  24. #10 clr=0;

  25. up=0;

  26. #10 clr=1;

  27. start=0;

  28. key=4'b0010;

  29. up=1;

  30. #10 clr=0;

  31. up=0;

  32. #10 clr=1;

  33. start=0;

  34. key=4'b0010;

  35. up=1;

  36. #10 clr=0;

  37. up=0;

  38. #5 $finish;

  39. end

  40. always #7 clk=~clk;

  41. /***********************************/</font>
复制代码


5) 执行仿真并查看波形。查看输出信息。检查没有错误之后查看波形。点击右侧 Workspace 中的信号,进行添加并查看分析仿真结果。如图9所示:

                           图9 qiangdaqi_test仿真波形

4.思考

1、思考能不能扩写成n位抢答器。


以上图文的Word格式文档下载(内容和本网页上的一模一样,方便大家保存):

抢答器.docx (452.28 KB, 下载次数: 2)

图片1.png

评分

参与人数 1黑币 +10 收起 理由
admin + 10 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表