名稱:簡單秒表設計仿真VHDL跑表(代碼在文末付費下載)
軟件:Quartus
語言:VHDL
代碼功能:
數(shù)字秒表功能描述
本次練習只需要一個數(shù)碼管(假設該數(shù)碼管已被選中),實現(xiàn)數(shù)碼管顯示功能,具體要求如下(設數(shù)碼管為共陽)
1)實現(xiàn)秒表計時功能。
2)復位時,數(shù)碼管顯示
3)數(shù)碼管依次從0變到9顯示。
2信號列表 clk:50MHz的工作時鐘,輸入
segment:8位,輸出,數(shù)碼管顯示信號,共8位。由低到高,分別表示數(shù)碼管的a,b,c,d,e,f,g,h。當該比特為0時,表示點亮相應位置;為1時熄滅。
本代碼包含2個工程,2工程代碼一樣,但是一個使用modelsim仿真,一個使用quartus自帶的wvf仿真。
演示視頻:
FPGA代碼資源下載網(wǎng):hdlcode.com
部分代碼展示
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; ???USE?ieee.std_logic_unsigned.all; ENTITY?miaobiao?IS ???PORT?( ??????clk??:?IN?STD_LOGIC;--50MHz ??????rst_n:?IN?STD_LOGIC;--復位 ??????segment:?OUT?STD_LOGIC_VECTOR(7?DOWNTO?0)--數(shù)碼管顯示信號 ???); END?miaobiao; ARCHITECTURE?RTL?OF?miaobiao?IS ???SIGNAL?clk_out?:?STD_LOGIC;--1Hz時鐘 ???SIGNAL?count???:?integer;???? ???SIGNAL?cnt0_9?:integer;--秒 BEGIN --時鐘分頻--計數(shù) ???PROCESS?(clk,rst_n) ???BEGIN ???IF(rst_n='0')THEN--復位 ??count<=0; ???ELSIF(clk'EVENT?AND?clk?=?'1')?THEN ??--IF(count=50000000)THEN--50MHz分頻到1Hz需要計數(shù)50000000 ??IF(count=500)THEN--仿真時將計數(shù)器改為500 count<=0; ??else count<=count+1;--計數(shù) ??END?IF; ???END?IF; ???END?PROCESS; --時鐘分頻--輸出秒脈沖信號clk_out ???PROCESS?(clk,rst_n) ???BEGIN ???IF(rst_n='0')THEN--復位 ??clk_out<='0'; ???ELSIF(clk'EVENT?AND?clk?=?'1')?THEN ??--IF(count=50000000)THEN--50MHz分頻到1Hz需要計數(shù)50000000 ??IF(count=500)THEN--仿真時將計數(shù)器改為500 clk_out<='1';--輸出1Hz秒計時信號 ??else clk_out<='0'; ??END?IF; ???END?IF; ???END?PROCESS; ??? ???--秒計數(shù) ???PROCESS?(clk_out,rst_n) ???BEGIN ???IF(rst_n='0')THEN--復位 ??cnt0_9<=0; ???ELSIF(clk_out'EVENT?AND?clk_out?=?'1')?THEN--使用秒脈沖信號計數(shù) ??IF(cnt0_9<9)THEN--最大到9 cnt0_9<=cnt0_9+1;--加 ??else cnt0_9<=0;--清零 ??END?IF;
設計文檔:
設計文檔.doc ----modeslim仿真
1. 工程文件
2. 程序文件
3. 程序編譯
4. Testbench
5. modelism仿真圖
6. quartus wvf仿真圖
點擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=201