軟件:Quartus
語(yǔ)言:VHDL
代碼功能:
2.多路智力搶答器的VHDL設(shè)計(jì)(每班20號(hào)以后的雙號(hào))
設(shè)計(jì)任務(wù)要求
(1)利用硬件描述語(yǔ)言和FPGA器件,設(shè)計(jì)實(shí)現(xiàn)一個(gè)可容納4、5、6、7組參賽者的多路智力搶答器,每組設(shè)置一個(gè)搶答按鈕供搶答者使用。
(2)電路具有第一搶答信號(hào)的鑒別和鎖存功能。
(3)設(shè)置計(jì)分電路。
(4)設(shè)置犯規(guī)扣分電路(選作)。
各模塊實(shí)體名:XXXX自己兩位學(xué)號(hào),XXXX—一自己根據(jù)功能需要起名
任務(wù)學(xué)號(hào)對(duì)應(yīng):20、22、24號(hào)選7路;26、28、30號(hào)選6路;32、34、36號(hào)-選5路;38、40、42號(hào)選4路
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
演示視頻:
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
5. 仿真圖
整體仿真圖
控制模塊仿真
計(jì)分模塊仿真
顯示模塊仿真
部分代碼展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; ???USE?ieee.std_logic_unsigned.all; ???USE?ieee.std_logic_arith.all; --數(shù)碼管顯示模塊 ENTITY?display_26?IS ???PORT?( ??????clk?????????????:?IN?STD_LOGIC; ??????score_1?????????:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--分?jǐn)?shù)1 ??????score_2?????????:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--分?jǐn)?shù)2 ??????score_3?????????:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--分?jǐn)?shù)3 ??????score_4?????????:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--分?jǐn)?shù)4 ??????score_5?????????:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--分?jǐn)?shù)3 ??????score_6?????????:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0);--分?jǐn)?shù)4 ??????--數(shù)碼管 ??????HEX0????????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ??????HEX1????????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ??????HEX2????????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ??????HEX3????????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ??????HEX4????????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0); ??????HEX5????????????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0) ???); END?display_26; ARCHITECTURE?behavioral?OF?display_26?IS BEGIN ???PROCESS?(clk) ???BEGIN ??????IF?(clk'EVENT?AND?clk?=?'1')?THEN ?????????CASE?score_1?IS--顯示1組分?jǐn)?shù) ????????????WHEN?"0000"?=> ???????????????HEX0?<=?"11000000"; ????????????WHEN?"0001"?=> ???????????????HEX0?<=?"11111001"; ????????????WHEN?"0010"?=> ???????????????HEX0?<=?"10100100"; ????????????WHEN?"0011"?=> ???????????????HEX0?<=?"10110000"; ????????????WHEN?"0100"?=> ???????????????HEX0?<=?"10011001"; ????????????WHEN?"0101"?=> ???????????????HEX0?<=?"10010010"; ????????????WHEN?"0110"?=> ???????????????HEX0?<=?"10000010"; ????????????WHEN?"0111"?=> ???????????????HEX0?<=?"11111000"; ????????????WHEN?"1000"?=> ???????????????HEX0?<=?"10000000"; ????????????WHEN?"1001"?=> ???????????????HEX0?<=?"10010000"; ????????????WHEN?OTHERS?=> ?????????END?CASE; ??????END?IF; ???END?PROCESS; ? ???PROCESS?(clk) ???BEGIN ??????IF?(clk'EVENT?AND?clk?=?'1')?THEN ?????????CASE?score_2?IS--顯示2組分?jǐn)?shù) ????????????WHEN?"0000"?=> ???????????????HEX1?<=?"11000000"; ????????????WHEN?"0001"?=> ???????????????HEX1?<=?"11111001"; ????????????WHEN?"0010"?=> ???????????????HEX1?<=?"10100100"; ????????????WHEN?"0011"?=> ???????????????HEX1?<=?"10110000"; ????????????WHEN?"0100"?=> ???????????????HEX1?<=?"10011001"; ????????????WHEN?"0101"?=> ???????????????HEX1?<=?"10010010"; ????????????WHEN?"0110"?=> ???????????????HEX1?<=?"10000010"; ????????????WHEN?"0111"?=> ???????????????HEX1?<=?"11111000"; ????????????WHEN?"1000"?=> ???????????????HEX1?<=?"10000000"; ????????????WHEN?"1001"?=> ???????????????HEX1?<=?"10010000"; ????????????WHEN?OTHERS?=> ?????????END?CASE; ??????END?IF; ???END?PROCESS;? ??? ???PROCESS?(clk) ???BEGIN ??????IF?(clk'EVENT?AND?clk?=?'1')?THEN ?????????CASE?score_3?IS--顯示3組分?jǐn)?shù) ????????????WHEN?"0000"?=> ???????????????HEX2?<=?"11000000"; ????????????WHEN?"0001"?=> ???????????????HEX2?<=?"11111001"; ????????????WHEN?"0010"?=> ???????????????HEX2?<=?"10100100"; ????????????WHEN?"0011"?=> ???????????????HEX2?<=?"10110000"; ????????????WHEN?"0100"?=> ???????????????HEX2?<=?"10011001"; ????????????WHEN?"0101"?=> ???????????????HEX2?<=?"10010010"; ????????????WHEN?"0110"?=> ???????????????HEX2?<=?"10000010"; ????????????WHEN?"0111"?=> ???????????????HEX2?<=?"11111000"; ????????????WHEN?"1000"?=> ???????????????HEX2?<=?"10000000"; ????????????WHEN?"1001"?=> ???????????????HEX2?<=?"10010000"; ????????????WHEN?OTHERS?=> ?????????END?CASE; ??????END?IF; ???END?PROCESS; ??? ??? ???PROCESS?(clk) ???BEGIN ??????IF?(clk'EVENT?AND?clk?=?'1')?THEN ?????????CASE?score_4?IS--顯示4組分?jǐn)?shù) ????????????WHEN?"0000"?=> ???????????????HEX3?<=?"11000000"; ????????????WHEN?"0001"?=> ???????????????HEX3?<=?"11111001"; ????????????WHEN?"0010"?=> ???????????????HEX3?<=?"10100100"; ????????????WHEN?"0011"?=> ???????????????HEX3?<=?"10110000"; ????????????WHEN?"0100"?=> ???????????????HEX3?<=?"10011001"; ????????????WHEN?"0101"?=> ???????????????HEX3?<=?"10010010"; ????????????WHEN?"0110"?=> ???????????????HEX3?<=?"10000010"; ????????????WHEN?"0111"?=> ???????????????HEX3?<=?"11111000"; ????????????WHEN?"1000"?=> ???????????????HEX3?<=?"10000000"; ????????????WHEN?"1001"?=> ???????????????HEX3?<=?"10010000"; ????????????WHEN?OTHERS?=> ?????????END?CASE; ??????END?IF; ???END?PROCESS; ???PROCESS?(clk) ???BEGIN ??????IF?(clk'EVENT?AND?clk?=?'1')?THEN ?????????CASE?score_5?IS--顯示5組分?jǐn)?shù) ????????????WHEN?"0000"?=> ???????????????HEX4?<=?"11000000"; ????????????WHEN?"0001"?=> ???????????????HEX4?<=?"11111001"; ????????????WHEN?"0010"?=> ???????????????HEX4?<=?"10100100"; ????????????WHEN?"0011"?=> ???????????????HEX4?<=?"10110000"; ????????????WHEN?"0100"?=> ???????????????HEX4?<=?"10011001"; ????????????WHEN?"0101"?=> ???????????????HEX4?<=?"10010010"; ????????????WHEN?"0110"?=> ???????????????HEX4?<=?"10000010"; ????????????WHEN?"0111"?=> ???????????????HEX4?<=?"11111000"; ????????????WHEN?"1000"?=> ???????????????HEX4?<=?"10000000"; ????????????WHEN?"1001"?=> ???????????????HEX4?<=?"10010000"; ????????????WHEN?OTHERS?=> ?????????END?CASE; ??????END?IF; ???END?PROCESS; ? ???PROCESS?(clk) ???BEGIN ??????IF?(clk'EVENT?AND?clk?=?'1')?THEN ?????????CASE?score_6?IS--顯示6組分?jǐn)?shù) ????????????WHEN?"0000"?=> ???????????????HEX5?<=?"11000000"; ????????????WHEN?"0001"?=> ???????????????HEX5?<=?"11111001"; ????????????WHEN?"0010"?=> ???????????????HEX5?<=?"10100100"; ????????????WHEN?"0011"?=> ???????????????HEX5?<=?"10110000"; ????????????WHEN?"0100"?=> ???????????????HEX5?<=?"10011001"; ????????????WHEN?"0101"?=> ???????????????HEX5?<=?"10010010"; ????????????WHEN?"0110"?=> ???????????????HEX5?<=?"10000010"; ????????????WHEN?"0111"?=> ???????????????HEX5?<=?"11111000"; ????????????WHEN?"1000"?=> ???????????????HEX5?<=?"10000000"; ????????????WHEN?"1001"?=> ???????????????HEX5?<=?"10010000"; ????????????WHEN?OTHERS?=> ?????????END?CASE; ??????END?IF; ???END?PROCESS;? END?behavioral;
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=522