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