新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 實(shí)驗(yàn)21:智力競(jìng)賽搶答器

        實(shí)驗(yàn)21:智力競(jìng)賽搶答器

        作者: 時(shí)間:2023-10-13 來(lái)源:電子森林 收藏

        本實(shí)驗(yàn)的任務(wù)是設(shè)計(jì)一個(gè)智力競(jìng)賽,帶復(fù)位和主持人控制功能。

        本文引用地址:http://www.104case.com/article/202310/451512.htm
        1. 一共4組選手,用開關(guān)k1,k2,k3,k4表示
        2. 主持人復(fù)位開始搶答,獲得搶答的選手顯示對(duì)應(yīng)led,答題時(shí)間超過(guò)30秒報(bào)警
        3. 每位選手初始分?jǐn)?shù)5分(RESET復(fù)位),主持人控制加分減分按鍵,每次增加或減少1分(最多9分),答題選手分?jǐn)?shù)顯示在數(shù)碼管

        根據(jù)搶答器的功能,采用模塊化設(shè)計(jì),如下

        搶答判斷模塊(judge):根據(jù)開關(guān)的輸入判斷搶答的選手信號(hào),通過(guò)輸出的LED顯示搶答選手;內(nèi)部定義block標(biāo)志信號(hào)用來(lái)鎖定搶答完成;判斷搶答之后答題超過(guò)30秒產(chǎn)生報(bào)警信號(hào)。
        分?jǐn)?shù)模塊(score):復(fù)位信號(hào)單獨(dú)復(fù)位所有選手分?jǐn)?shù);加減按鍵消抖后用來(lái)增加減少分?jǐn)?shù)。
        顯示模塊(dseg):當(dāng)前搶答的選手分?jǐn)?shù)顯示在數(shù)碼管上。
        分頻模塊(divide):分頻產(chǎn)生計(jì)時(shí)時(shí)鐘信號(hào)。

        程序清單answer.v

         module answer
         (
         input wire clk,rst,             //時(shí)鐘和復(fù)位信號(hào)
         input wire k1,k2,k3,k4,         //選手開關(guān)
         input wire reset,add,sub,       //復(fù)位分?jǐn)?shù),加分,減分按鍵
         output wire led1,led2,led3,led4,//選手對(duì)應(yīng)
         ledoutput wire buzz,               //報(bào)警信號(hào)
         output wire [8:0] segment_led   //數(shù)碼管信號(hào)
         );
         wire clk1h;
         divide #(					//產(chǎn)生1秒時(shí)鐘信號(hào)
         .WIDTH(24),
         .N(12000000)
         ) u1(.clk(clk),
         .rst_n(rst),
         .clkout(clk1h));judge u2                    //判斷搶答選手,答題超時(shí)報(bào)警
         (
         .clk(clk1h),					
         .k1(k1),
         .k2(k2),
         .k3(k3),
         .k4(k4),			
         .start(rst),				
         .out1(led1),
         .out2(led2),
         .out3(led3),
         .out4(led4),	
         .buzz(buzz)					
         );
         wire [3:0] score1,score2,score3,score4;
         score u3                      //主持人控制答題選手分?jǐn)?shù)
         (
         .clk(clk),.rst(rst),
         .add(add),.sub(sub),
         .reset(reset),
         .c1(led1),.c2(led2),.c3(led3),.c4(led4),
         .score1(score1),.score2(score2),.score3(score3),.score4(score4)
         );
         dseg u4                       //數(shù)碼管驅(qū)動(dòng)顯示答題選手分?jǐn)?shù)
         (
         .rst(rst),
         .c1(led1),.c2(led2),.c3(led3),.c4(led4),
         .score1(score1),.score2(score2),.score3(score3),.score4(score4),
         .segment_led(segment_led)
         );
         endmodule

        頂層文件一共調(diào)用了4個(gè)模塊judge.v、score.v、dseg.v、divide.v。所有的子模塊源碼請(qǐng)參考前例實(shí)驗(yàn)的工程文件

        1. 打開,建立工程。
        2. 新建設(shè)計(jì)文件,并鍵入設(shè)計(jì)代碼。
        3. 根據(jù)邏輯綜合并分配管腳,在本實(shí)驗(yàn)中引腳分配如下:key[1:4] —
           M7,M8,M9,M10;clk       ---       C1;rst      ---       L14      ;     reset     ---       N14;add      ---      M13;sub      ---       M14;buzz      ---      P9;led[1:4]  ---      N13~M11;segment[8:0] ---     A12~C12

          - 構(gòu)建并輸出編程文件,燒寫至的Flash之中。

        4. 觀察輸出結(jié)果。

        當(dāng)程序下載成功時(shí),按下rst復(fù)位,表示搶答開始。由于開發(fā)板上的開關(guān)有限,所以采用四個(gè)撥碼開關(guān)分別表示4個(gè)搶答選手。當(dāng)判斷撥碼開關(guān)狀態(tài)后,同時(shí)該選手對(duì)應(yīng)的led點(diǎn)亮。
        按下reset復(fù)位鍵,搶答完成后在數(shù)碼管上顯示選手分?jǐn)?shù),可以通過(guò)加減分按鍵修改分?jǐn)?shù)。



        關(guān)鍵詞: 搶答器 FPGA Lattice Diamond Verilog HDL

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 宁强县| 浮梁县| 横峰县| 吕梁市| 江山市| 景宁| 梅河口市| 宜良县| 昌吉市| 渑池县| 黔西县| 报价| 绍兴市| 屯昌县| 玉溪市| 泽普县| 道真| 西城区| 连南| 思茅市| 南丹县| 错那县| 什邡市| 韶关市| 平原县| 长泰县| 黔东| 云安县| 仙游县| 中卫市| 马山县| 蚌埠市| 大荔县| 芜湖市| 雅安市| 射阳县| 英德市| 临沧市| 平山县| 海阳市| 荣昌县|