名稱:4路倒計時搶答器設計VHDL代碼Quartus? DE2-115開發(fā)板
軟件:Quartus
語言:VHDL
代碼功能:
4路搶答器設計
要求:
1、具有復位和開始按鍵;
2、主持人按下開始按鍵后,開始倒計時9~0秒;
3、倒計時為0時開始搶答,通過led指示搶答者;
4、提前搶答對應的led閃爍報警。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在DE2-115開發(fā)板驗證,DE2-115開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設計文檔:
1. 工程文件
2 .程序文件
3 . 程序編譯
4. RTL圖
5. Testbench
6. 仿真圖
整體仿真圖
圖中,復位后,主持人按下開始按鍵,開始倒計時9~0秒,倒計時結束前按下key1,表示1號提前搶答,蜂鳴器間隔響,led1閃爍。復位后,主持人重新按下開始鍵,開始倒計時,倒計時結束后先按下key3,3號搶答成功,led3亮,蜂鳴器響。此時再按下key4不響應。
注:LED低電平亮,蜂鳴器低電平響。
分頻模塊
系統(tǒng)時鐘分頻為1Hz和2Hz信號,1Hz用于倒計時,一次1秒。2Hz用于控制LED閃爍和蜂鳴器間隔響。
控制模塊
控制模塊通過狀態(tài)機控制提前搶答,正常搶答,倒計時等功能。
顯示模塊
數(shù)碼管顯示倒計時和臺號。
部分代碼展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; --搶答器 ENTITY?qiangdaqi?IS ???PORT?( ??????clk??????????:?IN?STD_LOGIC;--時鐘 ??????rst_n????????:?IN?STD_LOGIC;--復位--SW0 ??????start_n??????:?IN?STD_LOGIC;--開始--SW1 ??????key_1????????:?IN?STD_LOGIC;--按鍵1--key0 ??????key_2????????:?IN?STD_LOGIC;--按鍵2--key1 ??????key_3????????:?IN?STD_LOGIC;--按鍵3--key2 ??????key_4????????:?IN?STD_LOGIC;--按鍵4--key3 ??????LED1?????????:?OUT?STD_LOGIC;--LED0 ??????LED2?????????:?OUT?STD_LOGIC;--LED1 ??????LED3?????????:?OUT?STD_LOGIC;--LED2 ??????LED4?????????:?OUT?STD_LOGIC;--LED3 ??????beep?????????:?OUT?STD_LOGIC;--蜂鳴器--LED4 dis1:?out?std_logic_vector(7?downto?0);--臺號1顯示 dis2:?out?std_logic_vector(7?downto?0);--臺號2顯示 dis3:?out?std_logic_vector(7?downto?0);--臺號3顯示 dis4:?out?std_logic_vector(7?downto?0);--臺號4顯示 ??????HEX??????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--數(shù)碼管 ???); END?qiangdaqi; ARCHITECTURE?behave?OF?qiangdaqi?IS --控制模塊 ???COMPONENT?control?IS ??????PORT?( ?????????clk??????:?IN?STD_LOGIC; ?????????rst_n????:?IN?STD_LOGIC; ?????????start_n??:?IN?STD_LOGIC; ?????????key_1????:?IN?STD_LOGIC; ?????????key_2????:?IN?STD_LOGIC; ?????????key_3????:?IN?STD_LOGIC; ?????????key_4????:?IN?STD_LOGIC; ?????????clk_1Hz??:?IN?STD_LOGIC; ?????????clk_2Hz??:?IN?STD_LOGIC; ?????????LED1?????:?OUT?STD_LOGIC; ?????????LED2?????:?OUT?STD_LOGIC; ?????????LED3?????:?OUT?STD_LOGIC; ?????????LED4?????:?OUT?STD_LOGIC; ?????????beep?????:?OUT?STD_LOGIC; ?????????down_time?:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0) ??????); ???END?COMPONENT; ?--分頻器?? ???COMPONENT?div?IS ??????PORT?( ?????????clk??????:?IN?STD_LOGIC; ?????????clk_1Hz??:?OUT?STD_LOGIC; ?????????clk_2Hz??:?OUT?STD_LOGIC ??????); ???END?COMPONENT; ??? --數(shù)碼管譯碼 COMPONENT?LED7S?is Port( din:?in?std_logic_vector(3?downto?0); dis1:?out?std_logic_vector(7?downto?0);--臺號1顯示 dis2:?out?std_logic_vector(7?downto?0);--臺號2顯示 dis3:?out?std_logic_vector(7?downto?0);--臺號3顯示 dis4:?out?std_logic_vector(7?downto?0);--臺號4顯示 y:?out?std_logic_vector(7?downto?0)); end?COMPONENT; ??? ??? ???SIGNAL?clk_1Hz????:?STD_LOGIC; ???SIGNAL?clk_2Hz????:?STD_LOGIC; ???SIGNAL?down_time??:?STD_LOGIC_VECTOR(3?DOWNTO?0); BEGIN --調用分頻模塊 ???i_div?:?div ??????PORT?MAP?( ?????????clk??????=>?clk, ?????????clk_1Hz??=>?clk_1Hz, ?????????clk_2Hz??=>?clk_2Hz ??????); --調用控制模塊??? ???i_control?:?control ??????PORT?MAP?( ?????????clk????????=>?clk, ?????????rst_n??????=>?rst_n, ?????????start_n????=>?start_n, ?????????key_1??????=>?key_1, ?????????key_2??????=>?key_2, ?????????key_3??????=>?key_3, ?????????key_4??????=>?key_4, ?????????clk_1Hz????=>?clk_1Hz, ?????????clk_2Hz????=>?clk_2Hz, ?????????LED1???????=>?LED1, ?????????LED2???????=>?LED2, ?????????LED3???????=>?LED3, ?????????LED4???????=>?LED4, ?????????beep???????=>?beep, ?????????down_time??=>?down_time ??????);
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=539