名稱:數(shù)字鐘控制系統(tǒng)電路VHDL電子鐘秒表鬧鐘DE1-SOC開發(fā)板(代碼在文末下載)
軟件:Quartus II
語言:VHDL
代碼功能:
數(shù)字鐘控制系統(tǒng)電路的設(shè)計(jì)是一個綜合設(shè)計(jì)型數(shù)字系統(tǒng)實(shí)用電路的設(shè)計(jì)。
其設(shè)計(jì)的數(shù)字鐘控制系統(tǒng)電路應(yīng)具備以下的功能:
1.正常的顯示時間的小時、分鐘和秒的計(jì)時顯示;
2.該數(shù)字鐘應(yīng)具有校時電路功能(即當(dāng)時間不準(zhǔn)時,可以通過調(diào)整時間的分鐘和小時來進(jìn)行校時)。
3.該數(shù)字鐘應(yīng)該具有秒表的功能。
4.該數(shù)字鐘應(yīng)該具有鬧鐘的功能(即能任意設(shè)置鬧鐘的時間,也能實(shí)現(xiàn)鬧鐘的關(guān)閉功能)。
FPGA代碼Verilog/VHDL代碼資源下載:www.hdlcode.com
本代碼已在開發(fā)板驗(yàn)證,開發(fā)板如下,其他開發(fā)板可以修改管腳適配:
演示視頻:
部分代碼展示:
--該電路VHDL代碼用于設(shè)置FPGA實(shí)驗(yàn)開發(fā)板上6個數(shù)碼管上顯示的內(nèi)容,根據(jù)狀態(tài)控制器的狀態(tài),顯示相關(guān)電路模塊輸出的結(jié)果 --當(dāng)狀態(tài)控制器狀態(tài)為000、001、010時,顯示數(shù)字鐘電路運(yùn)行的結(jié)果,只不過000是正常顯示,001和010是閃爍顯示設(shè)置的分鐘或小時 --當(dāng)狀態(tài)控制器狀態(tài)為011和100時,顯示鬧鐘設(shè)置的結(jié)果,只不過011是閃爍顯示分鐘,100是閃爍顯示小時,秒固定值為00 --當(dāng)狀態(tài)控制器狀態(tài)為101時,顯示秒表電路運(yùn)行的結(jié)果 LIBRARY?IEEE;--引用IEEE庫 USE?IEEE.STD_LOGIC_1164.ALL;--STD_LOGIC、STD_LOGIC_VECTOR數(shù)據(jù)類型在此程序包中,而且程序包 --還包含此兩種數(shù)據(jù)類型的邏輯運(yùn)算。且IEEE庫不屬于VHDL標(biāo)準(zhǔn)庫,必須予以聲明 USE?IEEE.STD_LOGIC_UNSIGNED.ALL;--對STD_LOGIC_VECTOR數(shù)據(jù)類型進(jìn)行無符號數(shù)運(yùn)算需聲明UNSIGNED, --如需進(jìn)行有符號數(shù)運(yùn)算,則需聲明SIGNED ENTITY?XIANSHICONTROL?IS PORT(--該模塊電路輸入有數(shù)字鐘輸出的秒、分、時,鬧鐘輸出的秒、分、時,秒表輸出的百分之一秒、秒、分,使數(shù)碼管閃爍的頻率2HZ時鐘信號 --及狀態(tài)控制器的3個輸出? ??????????????????????????????STATE:?IN?STD_LOGIC_VECTOR(2?DOWNTO?0); ??????????????CLK_2P:?IN?STD_LOGIC; SZSSHI,SZSGE,SZFSHI,SZFGE,SZMSHI,SZMGE:?IN?STD_LOGIC_VECTOR(6?DOWNTO?0); MBBSHI,MBBGE,MBMSHI,MBMGE,MBFSHI,MBFGE:?IN?STD_LOGIC_VECTOR(6?DOWNTO?0); ?????????????NZFSHI,NZFGE,NZSSHI,NZSGE:?IN?STD_LOGIC_VECTOR(6?DOWNTO?0); XSSSHI,XSSGE,XSFSHI,XSFGE,XSMSHI,XSMGE:OUT?STD_LOGIC_VECTOR(6?DOWNTO?0)); END?ENTITY?XIANSHICONTROL; ARCHITECTURE?A?OF?XIANSHICONTROL?IS SIGNAL?TMP0,TMP1,TMP2,TMP3,TMP4,TMP5:STD_LOGIC_VECTOR(6?DOWNTO?0); SIGNAL?TEMP1,TEMP0:STD_LOGIC_VECTOR(6?DOWNTO?0); SIGNAL?CLK:STD_LOGIC_VECTOR(6?DOWNTO?0); BEGIN U1:BLOCK BEGIN PROCESS(CLK_2P,STATE)--進(jìn)程,用于設(shè)置閃爍的輸出結(jié)果 BEGIN--有四種狀態(tài)需要使數(shù)碼管閃爍 IF(STATE="001")THEN--調(diào)整時鐘分鐘時 IF(CLK_2P='0')THEN--當(dāng)2HZ的閃爍時鐘信號為低電平時,數(shù)碼管熄滅 TEMP0<="1111111";TEMP1<="1111111"; ELSE--當(dāng)2HZ的閃爍時鐘信號為高電平時,數(shù)碼管正常顯示時鐘的分鐘 TEMP0<=SZFGE;TEMP1<=SZFSHI; END?IF; ELSIF(STATE="010")THEN--調(diào)整時鐘小時時 IF(CLK_2P='0')THEN--當(dāng)2HZ的閃爍時鐘信號為低電平時,數(shù)碼管熄滅 TEMP0<="1111111";TEMP1<="1111111"; ELSE--當(dāng)2HZ的閃爍時鐘信號為高電平時,數(shù)碼管正常顯示時鐘的小時 TEMP0<=SZSGE;TEMP1<=SZSSHI; END?IF; ELSIF(STATE="011")THEN--調(diào)整鬧鐘分鐘時 IF(CLK_2P='0')THEN--當(dāng)2HZ的閃爍時鐘信號為低電平時,數(shù)碼管熄滅 TEMP0<="1111111";TEMP1<="1111111"; ELSE--當(dāng)2HZ的閃爍時鐘信號為高電平時,數(shù)碼管正常顯示鬧鐘的分鐘 TEMP0<=NZFGE;TEMP1<=NZFSHI; END?IF; ELSIF(STATE="100")THEN--調(diào)整鬧鐘小時時 IF(CLK_2P='0')THEN--當(dāng)2HZ的閃爍時鐘信號為低電平時,數(shù)碼管熄滅 TEMP0<="1111111";TEMP1<="1111111"; ELSE--當(dāng)2HZ的閃爍時鐘信號為高電平時,數(shù)碼管正常顯示鬧鐘的小時 TEMP0<=NZSGE;TEMP1<=NZSSHI; END?IF; END?IF; END?PROCESS; END?BLOCK?U1; U2:BLOCK BEGIN PROCESS(STATE)--進(jìn)程,根據(jù)狀態(tài)控制器的狀態(tài),設(shè)置6個數(shù)碼管上顯示的內(nèi)容 BEGIN IF(STATE="000")THEN--正常顯示時鐘運(yùn)行結(jié)果時,將時鐘的秒、分鐘、小時數(shù)正常顯示在6個數(shù)碼管上 TMP5<=SZSSHI;TMP4<=SZSGE;TMP3<=SZFSHI;TMP2<=SZFGE;TMP1<=SZMSHI;TMP0<=SZMGE; ELSIF(STATE="001")THEN--設(shè)置時鐘分鐘時,將時鐘的分鐘閃爍顯示在中間兩位數(shù)碼管上,時鐘的秒和小時正常顯示 TMP5<=SZSSHI;TMP4<=SZSGE;TMP3<=TEMP1;TMP2<=TEMP0;TMP1<=SZMSHI;TMP0<=SZMGE; ELSIF(STATE="010")THEN--設(shè)置時鐘小時時,將時鐘的小時閃爍顯示在中間兩位數(shù)碼管上,時鐘的秒和分鐘正常顯示 TMP5<=TEMP1;TMP4<=TEMP0;TMP3<=SZFSHI;TMP2<=SZFGE;TMP1<=SZMSHI;TMP0<=SZMGE; ELSIF(STATE="011")THEN--設(shè)置鬧鐘分鐘時,將鬧鐘的分鐘閃爍顯示在中間兩位數(shù)碼管上,鬧鐘的秒和小時正常顯示 TMP5<=NZSSHI;TMP4<=NZSGE;TMP3<=TEMP1;TMP2<=TEMP0;TMP1<="0000001";TMP0<="0000001"; ELSIF(STATE="100")THEN--設(shè)置鬧鐘小時時,將鬧鐘的小時閃爍顯示在中間兩位數(shù)碼管上,鬧鐘的秒和分鐘正常顯示 TMP5<=TEMP1;TMP4<=TEMP0;TMP3<=NZFSHI;TMP2<=NZFGE;TMP1<="0000001";TMP0<="0000001"; ELSIF(STATE="101")THEN--秒表正常工作時,將秒表的百分之一秒、秒、分鐘正常顯示在6個數(shù)碼管上 TMP5<=MBFSHI;TMP4<=MBFGE;TMP3<=MBMSHI;TMP2<=MBMGE;TMP1<=MBBSHI;TMP0<=MBBGE; END?IF; END?PROCESS; XSSSHI<=TMP5;XSSGE<=TMP4;XSFSHI<=TMP3;XSFGE<=TMP2;XSMSHI<=TMP1;XSMGE<=TMP0; END?BLOCK?U2; END?ARCHITECTURE?A;
設(shè)計(jì)文檔:
1. 工程文件
2. 程序文件
3. 程序編譯
4. RTL圖
5. 管腳分配
6. 仿真圖
1. 50MHz分頻到500Hz
2. 5分頻模塊
3. 25分頻模塊信號
4. 2分頻模塊
5. 狀態(tài)設(shè)置模塊
6. 秒表計(jì)數(shù)器
7. 二進(jìn)制翻轉(zhuǎn)模塊
8. 60進(jìn)制計(jì)數(shù)器模塊
9. 24進(jìn)制計(jì)數(shù)器模塊
10. 顯示控制模塊
11. 狀態(tài)控制模塊
12. 鬧鐘控制模塊
13. 七段譯碼器模塊
點(diǎn)擊鏈接獲取代碼文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=257