名稱:脈沖按鍵電話按鍵顯示器VHDL代碼AX301開發(fā)板Quartus
軟件:Quartus
語言:VHDL
代碼功能:
4、脈沖按鍵電話按鍵顯示器
設計一個具有8位顯示的電話按鍵顯示器,要求:
(1)能準確地反映按鍵數(shù)字;
(2)顯示器顯示從低位向高位前移,逐位顯示按鍵數(shù)字,最低位為當前輸入位;
(3)*設置一個“重撥”鍵,按下此鍵,能顯示最后一次輸入的電話號碼;
(4)*掛機2秒后能消除顯示。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在AX301開發(fā)板驗證,開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
設計文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. 管腳分配
5. RTL圖
6. Testebnch
7. 仿真圖
整體仿真圖
按鍵消抖模塊
控制模塊
顯示模塊
部分代碼展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; --電話按鍵顯示 ENTITY?telephone?IS ???PORT?( ??????clk??????:?IN?STD_LOGIC; ??????key1_in??:?IN?STD_LOGIC; ??????key2_in??:?IN?STD_LOGIC; ??????recall???:?IN?STD_LOGIC;--重播鍵 ??????close????:?IN?STD_LOGIC;--掛機鍵 ??????DIG??????:?OUT?STD_LOGIC_VECTOR(5?DOWNTO?0);--數(shù)碼管位選 ??????SEG??????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--數(shù)碼管段選 ???); END?telephone; ARCHITECTURE?trans?OF?telephone?IS ???COMPONENT?display?IS ??????PORT?( ?????????clk??????:?IN?STD_LOGIC; ?????????number???:?IN?STD_LOGIC_VECTOR(3?DOWNTO?0); ?????????tele_num?:?IN?STD_LOGIC_VECTOR(23?DOWNTO?0); ?????????DIG??????:?OUT?STD_LOGIC_VECTOR(5?DOWNTO?0); ?????????SEG??????:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0) ??????); ???END?COMPONENT; ??? ???COMPONENT?xiaodou?IS ??????PORT?( ?????????clkin????:?IN?STD_LOGIC; ?????????key_in???:?IN?STD_LOGIC; ?????????key_neg??:?OUT?STD_LOGIC ??????); ???END?COMPONENT; ??? ???COMPONENT?control?IS ??????PORT?( ?????????clk??????:?IN?STD_LOGIC; ?????????rst_n????:?IN?STD_LOGIC; ?????????key0?????:?IN?STD_LOGIC; ?????????key1?????:?IN?STD_LOGIC; ?????????key2?????:?IN?STD_LOGIC; ?????????key3?????:?IN?STD_LOGIC; ?????????key4?????:?IN?STD_LOGIC; ?????????recall???:?IN?STD_LOGIC; ?????????close????:?IN?STD_LOGIC; ?????????number???:?OUT?STD_LOGIC_VECTOR(3?DOWNTO?0); ?????????tele_num?:?OUT?STD_LOGIC_VECTOR(23?DOWNTO?0) ??????); ???END?COMPONENT; ??? ??? ???SIGNAL?number????:?STD_LOGIC_VECTOR(3?DOWNTO?0);--輸入數(shù)量 ???SIGNAL?tele_num??:?STD_LOGIC_VECTOR(23?DOWNTO?0);--電話號碼 ???SIGNAL?key0??????:?STD_LOGIC; ???SIGNAL?key1??????:?STD_LOGIC; ???SIGNAL?key2??????:?STD_LOGIC; ???SIGNAL?key3??????:?STD_LOGIC; ???SIGNAL?key4??????:?STD_LOGIC; BEGIN ???--消抖模塊 ???i1_xiaodou?:?xiaodou ??????PORT?MAP?( ?????????clkin????=>?clk, ?????????key_in???=>?key1_in, ?????????key_neg??=>?key1 ??????); ??? ??? ???--消抖模塊 ???i2_xiaodou?:?xiaodou ??????PORT?MAP?( ?????????clkin????=>?clk, ?????????key_in???=>?key2_in, ?????????key_neg??=>?key2 ??????); ??? ??? ???--控制模塊 ???i_control?:?control ??????PORT?MAP?( ?????????clk???????=>?clk, ?????????rst_n?????=>?'1',--復位 ?????????key0??????=>?'0', ?????????key1??????=>?key1, ?????????key2??????=>?key2, ?????????key3??????=>?'0', ?????????key4??????=>?'0', ?????????recall????=>?recall,--重播鍵 ?????????close?????=>?close,--掛機鍵 ?????????number????=>?number,--輸入數(shù)量 ?????????tele_num??=>?tele_num--電話號碼 ??????); ??? ??? ??? --顯示模塊 ???i_display?:?display ??????PORT?MAP?( ?????????clk???????=>?clk, ?????????number????=>?number,--輸入數(shù)量 ?????????tele_num??=>?tele_num,--電話號碼 ?????????DIG???????=>?DIG,--數(shù)碼管位選 ?????????SEG???????=>?SEG--數(shù)碼管段選 ??????); ??? END?trans;
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=329
閱讀全文