找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1766|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

RobeiEDA關(guān)于搶答器的設(shè)計案例

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:434973 發(fā)表于 2022-2-17 23:15 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

1、實驗?zāi)康?/strong>

掌握了解格搶答器的工作原理,并用verilog硬件語音來實現(xiàn)搶答器的模模塊以及test_bench,最后在Robei可視化仿真軟件經(jīng)行功能實現(xiàn)和仿真驗證。

2、實驗原理

搶答器實現(xiàn)的是:

1、四人通過按鍵搶答,最先按下按鍵的人搶答成功,此后其他人搶答無效。

2、每次只有一人可獲得搶答資格,一次搶答完后主持人通過復(fù)位按鍵復(fù)位,選手再從新?lián)尨稹?/font>

3、有從新開始游戲按鍵,游戲從新開始時每位選手有5分的初始分,答對加1分,答錯扣1分,最高分不能超過9分,當(dāng)選手得分減為0時取消該選手搶答資格。

4、選手搶答成功時其對應(yīng)的分?jǐn)?shù)閃爍。

3、實驗內(nèi)容

3.1snatch(搶答)模塊設(shè)計

1)、 新建一個模型命名為snatch,類型為 module,同時具備 3 輸入 2 輸出,每個引腳的屬性和名稱參照下圖1經(jīng)行對應(yīng)的修改。

                  圖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>
復(fù)制代碼


3)、保存模型到一個文件夾(文件夾路徑不能有空格和中文)中,運行并檢查有無錯誤輸出。

3.2store(計分)模塊的設(shè)計

1)、 新建一個模型命名為store,類型為 module,同時具備 3 輸入 2 輸出,每個引腳的屬性和名稱參照下圖3經(jīng)行對應(yīng)的修改。

                           圖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>
復(fù)制代碼


3)、保存模型到一個文件夾(文件夾路徑不能有空格和中文)中,運行并檢查有無錯誤輸出。

3.3qiangdaqi(頂層)模塊設(shè)計

1)、 新建一個模型命名為qiangdaqi,類型為 module,同時具備 5 輸入 2 輸出,每個引腳的屬性和名稱參照下圖5經(jīng)行對應(yīng)的修改。

                       圖5qiangdaqi引腳屬性

                  圖6 qiangdaqi界面圖

3.4qiangdaqi_test測試文件的設(shè)計

1) 新建一個5輸入 2 輸出的qiangdaqi_test測試文件,記得將 Module Type 設(shè)置為 “testbench”,各個引腳配置如圖7所示。

                      圖7qiangdaqi_test引腳屬性

  • 、另存為測試文件。將測試文件保存到上面創(chuàng)建的模型所在的文件夾下。加入模型。 在 Toolbox 工具箱的 Current 欄里,會出現(xiàn)模型,單擊該模型并在qiangdaqi _test上添加,并連接引腳,如下圖8所示:

                         圖8 qiangdaqi_test界面圖

4) 輸入激勵。點擊測試模塊下方的“Code”,輸入激勵算法。激勵代碼在結(jié)束

的時候要用$finish 結(jié)束。

測試代碼:

  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>
復(fù)制代碼


5) 執(zhí)行仿真并查看波形。查看輸出信息。檢查沒有錯誤之后查看波形。點擊右側(cè) Workspace 中的信號,進(jìn)行添加并查看分析仿真結(jié)果。如圖9所示:

                           圖9 qiangdaqi_test仿真波形

4.思考

1、思考能不能擴寫成n位搶答器。


以上圖文的Word格式文檔下載(內(nèi)容和本網(wǎng)頁上的一模一樣,方便大家保存):

搶答器.docx (452.28 KB, 下載次數(shù): 2)




圖片1.png (64.12 KB, 下載次數(shù): 141)

圖片1.png

評分

參與人數(shù) 1黑幣 +10 收起 理由
admin + 10 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表