名稱(chēng):數(shù)字秒表VHDL精度毫秒可回看(代碼在文末付費(fèi)下載)
軟件:Quartus
語(yǔ)言:VHDL
代碼功能:
數(shù)字秒表的VHDL設(shè)計(jì),可以顯示秒和毫秒??梢詥?dòng)、停止、復(fù)位。要求可以存儲(chǔ)6組時(shí)間,可以回看存儲(chǔ)的時(shí)間。
本資源內(nèi)含2個(gè)工程文件,兩個(gè)工程文件功能相同,均能實(shí)現(xiàn)上述數(shù)字秒表功能,但是代碼實(shí)現(xiàn)方式不同,詳見(jiàn)下述設(shè)計(jì)文檔_1和設(shè)計(jì)文檔_2.
本代碼已在實(shí)驗(yàn)箱驗(yàn)證,實(shí)驗(yàn)箱資料:
實(shí)驗(yàn)電路結(jié)構(gòu)圖及芯片引腳對(duì)應(yīng)表(1).doc
演示視頻:
FPGA代碼資源下載網(wǎng):hdlcode.com
部分代碼展示
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; ???USE?ieee.std_logic_unsigned.all; --秒表控制模塊 ENTITY?control?IS ???PORT?( ??????clk_in??????????:?IN?STD_LOGIC;--1KHz ??????reset_p???????????:?IN?STD_LOGIC;--復(fù)位 ??????key_1???????????:?IN?STD_LOGIC;--啟動(dòng) ??????key_2???????????:?IN?STD_LOGIC;--停止 ??current_state:?OUT?STD_LOGIC_VECTOR(1?DOWNTO?0);--當(dāng)前狀態(tài) ??????Millisecond??:?OUT?STD_LOGIC_VECTOR(11?DOWNTO?0);--毫秒 ??????Second???????:?OUT?STD_LOGIC_VECTOR(11?DOWNTO?0)--秒 ???); END?control; ARCHITECTURE?RTL?OF?control?IS ???SIGNAL?state?:?STD_LOGIC_VECTOR(1?DOWNTO?0)?:=?"00";????--?創(chuàng)建信號(hào)??? ???constant?S0:?STD_LOGIC_VECTOR(1?DOWNTO?0)?:=?"00"; ???constant?S1:?STD_LOGIC_VECTOR(1?DOWNTO?0)?:=?"01"; ???constant?S2:?STD_LOGIC_VECTOR(1?DOWNTO?0)?:=?"10"; ???constant?S3:?STD_LOGIC_VECTOR(1?DOWNTO?0)?:=?"11"; ???SIGNAL?num1?????:?STD_LOGIC_VECTOR(3?DOWNTO?0):=?"0000"; ???SIGNAL?num2?????:?STD_LOGIC_VECTOR(3?DOWNTO?0):=?"0000"; ???SIGNAL?num3?????:?STD_LOGIC_VECTOR(3?DOWNTO?0):=?"0000"; ???SIGNAL?num4?????:?STD_LOGIC_VECTOR(3?DOWNTO?0):=?"0000"; ???SIGNAL?num5?????:?STD_LOGIC_VECTOR(3?DOWNTO?0):=?"0000"; ???SIGNAL?num6?????:?STD_LOGIC_VECTOR(3?DOWNTO?0):=?"0000"; ??? ???SIGNAL?haomiao_cnt:?STD_LOGIC_VECTOR(11?DOWNTO?0)?:=?"000000000000"; ???SIGNAL?miao_cnt:?STD_LOGIC_VECTOR(11?DOWNTO?0)?:=?"000000000000"; BEGIN ???--計(jì)時(shí)狀態(tài)機(jī) ???PROCESS?(clk_in) ???BEGIN ??????IF?(clk_in'EVENT?AND?clk_in?=?'1')?THEN ?????????IF?(reset_p?=?'1')?THEN--按下復(fù)位 ????????????state?<=?S3;--復(fù)位狀態(tài) ?????????ELSE ????????????CASE?state?IS ???????????????WHEN?S3?=>--復(fù)位狀態(tài) ??????????????????state?<=?S0; ???????????????WHEN?S0?=>--空閑狀態(tài) ??????????????????IF?(key_1?=?'1')?THEN--按下啟動(dòng) ?????????????????????state?<=?S1; ??????????????????ELSE ?????????????????????state?<=?S0; ??????????????????END?IF; ???????????????WHEN?S1?=>--計(jì)時(shí)狀態(tài) ??????????????????IF?(key_2?=?'1')?THEN--按下停止 ?????????????????????state?<=?S2; ??????????????????ELSE ?????????????????????state?<=?S1; ??????????????????END?IF; ???????????????WHEN?S2?=>--停止?fàn)顟B(tài) ??????????????????state?<=?S2; ???????????????WHEN?OTHERS?=> ????????????END?CASE; ?????????END?IF; ??????END?IF; ???END?PROCESS; ??? ???PROCESS?(clk_in) ???BEGIN ??????IF?(clk_in'EVENT?AND?clk_in?=?'1')?THEN ????IF?(reset_p?=?'1')?THEN--復(fù)位 ????????????num1?<=?"0000"; num2?<=?"0000"; num3?<=?"0000"; num4?<=?"0000"; num5?<=?"0000"; num6?<=?"0000"; ?????????ELSIF?(state?=?S1)?THEN--計(jì)時(shí)狀態(tài) if(num6="0010"?and?num5="0100"?and?num4="0000"?and?num3="0000"?and?num2="0000"?and?num1="0000")then num1?<=?num1; num2?<=?num2; num3?<=?num3; num4?<=?num4; num5?<=?num5; num6?<=?num6;? ????????????elsif?num1="1001"?then? num1<="0000";?--此IF語(yǔ)句完成個(gè)位十進(jìn)制計(jì)數(shù) if?num2="1001"?then? num2<="0000";?--此IF語(yǔ)句完成十位十進(jìn)制計(jì)數(shù) if?num3="1001"?then? num3<="0000";?--此IF語(yǔ)句完成百位十進(jìn)制計(jì)數(shù) if?num4="1001"?then? num4<="0000";?--此IF語(yǔ)句完成千位十進(jìn)制計(jì)數(shù) if?num5="1001"?then? num5<="0000";?--此IF語(yǔ)句完成萬(wàn)位十進(jìn)制計(jì)數(shù) if?num6="1001"?then? num6<="0000";?--此IF語(yǔ)句完成十萬(wàn)位十進(jìn)制計(jì)數(shù) else num6<=num6+"0001"; end?if; else num5<=num5+"0001"; end?if; else? num4<=num4+"0001"; end?if; ?else? num3<=num3+"0001"; ?end?if; else? num2<=num2+"0001"; end?if; else? num1<=num1+"0001"; end?if; end?if; end?if; --end?if; ???END?PROCESS; ??? haomiao_cnt<=num3?&?num2?&?num1;--毫秒百十個(gè)位 miao_cnt<=num6?&?num5?&?num4;--秒百十個(gè)位 ???--信號(hào)輸出 ???Millisecond?<=?haomiao_cnt; ???Second?<=?miao_cnt; ???current_state<=state; ??? END?RTL;
設(shè)計(jì)文檔:
設(shè)計(jì)文檔_2.doc
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
5. 管腳分配
6. 仿真圖
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=199