国产久操视频-国产久草视频-国产久热精品-国产久热香蕉在线观看-青青青青娱乐-青青青青在线成人视99

  • 方案介紹
  • 附件下載
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

Quartus拔河游戲機(jī)VHDL代碼

加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

2-23122110302U47.doc

共1個(gè)文件

名稱:Quartus拔河游戲機(jī)VHDL代碼

軟件:Quartus

語言:VHDL

代碼功能:

題目五 電子拔河游戲機(jī)

電子拔河游戲機(jī)是一種能容納甲乙雙方參賽游戲電路。由一排發(fā)光二極管表示拔河的“電子繩”。由甲乙雙方通過按紐開關(guān)使發(fā)光二極管向一方的終點(diǎn)延伸,當(dāng)延伸到某方的最后一個(gè)發(fā)光二極管時(shí),則該方獲勝,連續(xù)比賽多局以定勝負(fù)。

基本要求:

1、設(shè)計(jì)一個(gè)能進(jìn)行拔河游戲的電路。

2、電路使用 9 個(gè)發(fā)光二極管,開機(jī)后只有中間一個(gè)發(fā)亮,此即拔河的中心點(diǎn)。

3、游戲雙方各持一個(gè)按鈕,迅速地、不斷地按動(dòng),產(chǎn)生脈沖,誰按得快, 亮點(diǎn)就向誰的方向移動(dòng),每按一次,亮點(diǎn)移動(dòng)一次。

4、亮點(diǎn)移到任一方終端二極管時(shí),這一方就獲勝,此時(shí)雙方按鈕均無作用, 輸出保持,只有復(fù)位后才使亮點(diǎn)恢復(fù)到中心。

5、用數(shù)碼管顯示獲勝者的盤數(shù)。

FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com

演示視頻:

設(shè)計(jì)文檔:

1. 工程文件

2. 程序文件

頂層電路

代碼

3. 程序編譯

4. RTL圖

狀態(tài)圖

5. 仿真圖

整體仿真圖

功能:電路使用 9 個(gè)發(fā)光二極管,開機(jī)后只有中間一個(gè)發(fā)亮,此即拔河的中心點(diǎn)。 游戲雙方各持一個(gè)按鈕,迅速地、不斷地按動(dòng),產(chǎn)生脈沖,誰按得快, 亮點(diǎn)就向誰的方向移動(dòng),每按一次,亮點(diǎn)移動(dòng)一次。 亮點(diǎn)移到任一方終端二極管時(shí),這一方就獲勝,此時(shí)雙方按鈕均無作用, 輸出保持,只有復(fù)位后才使亮點(diǎn)恢復(fù)到中心。用數(shù)碼管顯示獲勝者的盤數(shù)。

按鍵檢測模塊

模塊功能:按鍵按下后,輸出一個(gè)脈沖信號(hào)指示按鍵按鍵

拔河控制模塊

模塊功能:控制led燈根據(jù)按鍵移動(dòng),左移或者右移,發(fā)光二極管向一方的終點(diǎn)延伸,

當(dāng)延伸到某方的最后一個(gè)發(fā)光二極管時(shí),則該方獲勝,此時(shí)雙方按鈕均 無作用, 輸出保持,記錄此時(shí)的分?jǐn)?shù)

顯示模塊

模塊功能:用數(shù)碼管顯示獲勝者的盤數(shù) ,分別顯示游戲雙方的或者盤數(shù),采用掃描式的數(shù)碼管,數(shù)碼管為共陽極。

部分代碼展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
--控制模塊
ENTITY?bahe_ctrl?IS
???PORT?(
??????clk???????:?IN?STD_LOGIC;--標(biāo)準(zhǔn)時(shí)鐘
??????reset_n????????:?IN?STD_LOGIC;--復(fù)位信號(hào),低有效?
reset_cnt????????:?IN?STD_LOGIC;--計(jì)數(shù)復(fù)位信號(hào),低有效?
??????shift1???????:?IN?STD_LOGIC;--選手1
??????shift2???????:?IN?STD_LOGIC;--選手2
??????led????????????:?OUT?STD_LOGIC_VECTOR(8?DOWNTO?0);--9個(gè)led
???win1_times?????:OUT?STD_LOGIC_VECTOR(15?DOWNTO?0);--1號(hào)獲勝次數(shù)
???win2_times?????:OUT?STD_LOGIC_VECTOR(15?DOWNTO?0)--2號(hào)獲勝次數(shù)
???);
END?bahe_ctrl;
ARCHITECTURE?behave?OF?bahe_ctrl?IS
???
???TYPE?State_type?IS?(s_idle,?s_start,?s_left_shift,?s_right_shift,?s_win_1,?s_win_2);??--?定義狀態(tài)
???SIGNAL?state?:?State_Type;????--?創(chuàng)建信號(hào)
???SIGNAL?game_led??????:?STD_LOGIC_VECTOR(8?DOWNTO?0)?:=?"000010000";
SIGNAL?win1_num??????:?STD_LOGIC_VECTOR(15?DOWNTO?0)?:=?"0000000000000000";
SIGNAL?win2_num??????:?STD_LOGIC_VECTOR(15?DOWNTO?0)?:=?"0000000000000000";
BEGIN
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?((NOT(reset_n))?=?'1')?THEN
????????????state?<=?s_idle;
?????????ELSE
????????????CASE?state?IS
???????????????WHEN?s_idle?=>--復(fù)位狀態(tài)
?????????????????????state?<=?s_start;
???????????????WHEN?s_start?=>--游戲中
??????????????????IF?(game_led?=?"100000000")?THEN
?????????????????????state?<=?s_win_1;--1號(hào)贏
??????????????????ELSIF?(game_led?=?"000000001")?THEN
?????????????????????state?<=?s_win_2;--2號(hào)贏
??????????????????ELSIF?(shift1?=?'1')?THEN
?????????????????????state?<=?s_left_shift;--led左移
??????????????????ELSIF?(shift2?=?'1')?THEN
?????????????????????state?<=?s_right_shift;--led右移
??????????????????ELSE
?????????????????????state?<=?s_start;
??????????????????END?IF;
???????????????WHEN?s_left_shift?=>--led左移
??????????????????state?<=?s_start;
???????????????WHEN?s_right_shift?=>--led右移
??????????????????state?<=?s_start;
???????????????WHEN?s_win_1?=>
??????????????????state?<=?s_win_1;--1號(hào)贏
???????????????WHEN?s_win_2?=>
??????????????????state?<=?s_win_2;--2號(hào)贏
???????????????WHEN?OTHERS?=>
????????????END?CASE;
?????????END?IF;
??????END?IF;
???END?PROCESS;
???
???
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?((NOT(reset_n))?=?'1')?THEN--復(fù)位
????????????game_led?<=?"000010000";
?????????ELSIF?(state?=?s_left_shift)?THEN
????????????game_led?<=?(game_led(7?DOWNTO?0)?&?'0');--led左移
?????????ELSIF?(state?=?s_right_shift)?THEN
????????????game_led?<=?('0'?&?game_led(8?DOWNTO?1));--led右移
?????????END?IF;
??????END?IF;
???END?PROCESS;
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?((NOT(reset_cnt))?=?'1')?THEN--復(fù)位
????????????win1_num?<=?"0000000000000000";
?????????ELSIF?(state?=?s_start?and?game_led?=?"100000000")?THEN----1號(hào)贏
????????????win1_num?<=win1_num+?"0000000000000001";--加1
?????????ELSE
win1_num?<=win1_num;
?????????END?IF;
??????END?IF;
???END?PROCESS;???
???PROCESS?(clk)
???BEGIN
??????IF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?((NOT(reset_cnt))?=?'1')?THEN--復(fù)位
????????????win2_num?<=?"0000000000000000";
?????????ELSIF?(state?=?s_start?and?game_led?=?"000000001")?THEN----2號(hào)贏
????????????win2_num?<=win2_num+?"0000000000000001";--加1
?????????ELSE
win2_num?<=win2_num;
?????????END?IF;
??????END?IF;
???END?PROCESS;
--輸出
win1_times<=win1_num;
win2_times<=win2_num;
???led?<=?game_led;
END?behave;

點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=385

  • 2-23122110302U47.doc
    下載

相關(guān)推薦