紀欣然,丁 一,梁致源
(浙江大學 控制科學與工程學系,浙江 杭州 310027)
現(xiàn)場可編程門陣列(Field Programmable Gate Arrays,F(xiàn)PGA)是一種可編程使用的信號處理器件。通過改變配置信息,用戶可對其功能進行定義,以滿足設計需求。通過開發(fā),F(xiàn)PGA能夠?qū)崿F(xiàn)任何數(shù)字器件的功能。與傳統(tǒng)數(shù)字電路相比,F(xiàn)PGA具有可編程、高集成度、高可靠性和高速等優(yōu)點[1]。
本文以FPGA平臺為基礎,在QuartusⅡ開發(fā)環(huán)境下設計開發(fā)多功能數(shù)字鐘。數(shù)字鐘實現(xiàn)的功能如下:
1)計時功能:進行正常的時、分、秒計時,并由6只8段數(shù)碼管分別顯示時、分、秒時間。
2)校時功能:當時校時按鍵按下時,計時器時位迅速增加,并按24小時循環(huán);當分校時按鍵按下時,計時器分位迅速增加,并按60分循環(huán)[2]。
3)整點報時功能:當計時到達59分53秒時開始報時,在59分53秒、55秒、57秒蜂鳴聲頻率為512 Hz;到達59分59秒為最后一聲報時,蜂鳴聲頻率為l kHz。
4)世界時鐘功能:默認當前顯示時間為北京時間(GMT+8),當按下世界時按鍵時,顯示時間將轉換為格林威治標準時(GMT)。數(shù)字鐘電路的模塊框圖,如圖1所示。
圖1 系統(tǒng)框圖Fig.1 System block diagram
系統(tǒng)主要由6大模塊組成,即分頻模塊、計時模塊、校時模塊、譯碼顯示模塊、整點報時模塊和世界時鐘模塊。
本設計選用的FPGA開發(fā)板板載20 MHz有源晶振,為了得到占空比50%的1 Hz時基脈沖及2 kHz方波信號 (用于驅(qū)動譯碼顯示模塊以及為整點報時模塊提供不同頻率的信號以產(chǎn)生不同音調(diào)的聲音),需要對板載時鐘信號進行分頻。分頻模塊采用VHDL語言實現(xiàn),對20 MHz時鐘信號分別進行兩千萬和一萬分頻。具體實現(xiàn)代碼如下:
計時模塊由60進制秒計數(shù)器、60進制分計數(shù)器和24進制時計數(shù)器級聯(lián)構成,采用同步時序電路實現(xiàn)[3]。當計數(shù)器處于正常計數(shù)狀態(tài)時,3個計數(shù)器的時鐘信號均為1 Hz時基脈沖,秒計數(shù)器對1 Hz的時基脈沖進行計數(shù),其進位輸出信號cos_in作為分計數(shù)器的使能信號,而分計數(shù)器的進位輸出信號com_in又作為時計數(shù)器的使能信號。在計時模塊的基礎上,數(shù)字鐘通過增加兩個按鍵分別實現(xiàn)對小時和分鐘的調(diào)整。這兩個按鍵能夠產(chǎn)生時計數(shù)器和分計數(shù)器的另一路使能信號,即按下時校時按鍵時,時計數(shù)器使能信號持續(xù)有效,由于采用同步時序電路,時計數(shù)器能夠持續(xù)增加,達到調(diào)整時間的目的。按下分校時按鍵時原理相同。此外,校時模塊還對校時按鍵進行防抖動處理,提高系統(tǒng)的可靠性和抗干擾能力。
譯碼顯示模塊采用原理圖方式實現(xiàn)[4]。本設計選用的FPGA開發(fā)板設有6位8段共陽極數(shù)碼管,并采用動態(tài)顯示方式。計時模塊輸出秒低位、秒高位、分低位、分高位、時低位、時高位共6×4路信號,經(jīng)由74151數(shù)據(jù)選擇器選擇1×4路信號[5],該信號通過74248顯示譯碼器得到驅(qū)動8段數(shù)碼管的1組段選信號(段碼)。同時,2 kHz方波信號經(jīng)由74160分頻得到3路信號,驅(qū)動74151及 74138 3:8譯碼器產(chǎn)生位選信號(位碼)。
整點報時模塊根據(jù)秒計數(shù)器、分計數(shù)器輸出的數(shù)值決定是否報時,當時間為59分53秒、55秒、57秒時,報時頻率為512 Hz;當時間為59分59秒時,報時頻率為1 kHz。不同頻率的信號通過蜂鳴器產(chǎn)生不同音調(diào)的蜂鳴聲。報時模塊使能時,計時模塊輸出信號如表1所示。
表1 報時模塊使能時計時模塊輸出信號Tab.1 Timer module output when chronopher enabled
本設計中加入了世界時鐘模塊,能夠?qū)⒈本r間快速轉換為格林威治標準時。北京位于東八區(qū),格林威治位于本初子午線附近,北京時間比格林威治標準時快8小時,要完成時間轉換,需要將北京時間減去8小時,在24進制中相當于加16小時。基于此設計加法和比較電路。在時計數(shù)器輸出信號的基礎上,利用74283四位全加器[6]將時低位加6(01102),時高位加1(00012)。由于74283四位全加器為16進制,而時間要求是10進制,故在時低位加6之后需要用7485四位比較器[7]判斷計算結果是否大于9,若結果大于9,則需要在此基礎上繼續(xù)加6,將結果修正為十進制,過程中產(chǎn)生的進位信號作為時高位的CIN信號;若結果小于9,則可直接輸出。第一級加法和比較電路如圖2所示。完成時低位加6,時高位加1的變換后,需要判斷變換后的時間是否大于24。若大于24,則需要減24;若小于24,則可直接輸出。世界時間轉換流程圖如圖3所示。
圖2 第一級加法和比較電路Fig.2 Primary summing and comparison circuit
圖3 世界時間轉換流程圖Fig.3 World-time transformation flow chart
在QuartusⅡ開發(fā)環(huán)境中完成上述各模塊的原理圖設計和程序編寫,并對設計好的電路進行編譯、仿真,得到的仿真波形符合設計要求。根據(jù)所采用的硬件平臺,在頂層電路中進行管腳分配、再編譯。然后將編譯好的目標文件下載到FPGA開發(fā)板中進行驗證和調(diào)試[8]。測試結果,數(shù)碼管能夠正確顯示計時時間,能夠通過按鍵調(diào)整時間,整點報時和世界時鐘均能夠正常工作,實驗結果符合設計要求。
[1]楊海鋼.FPGA器件設計技術發(fā)展綜述[J].電子與信息學報,2010,32(3):714-727.
YANG Hai-gang.An overview to FPGA device design technology[J].Journal of Electronics&Information Technology,2010,32(3):714-727.
[2]徐大詔.基于FPGA實現(xiàn)的數(shù)字鐘設計 [J].信息技術,2009,33(12):101-104.
XU Da-zhao.Digital clock design based on FPGA[J].Information Technology,2009,33(12):101-104.
[3]王小海,祁才君.集成電子技術基礎教程[M].2版.北京:高等教育出版社,2008.
[4]葛亞明.零基礎學FPGA:基于Altera FPGA器件&Verilog HDL語言[M].北京:機械工業(yè)出版社,2010.
[5]Texas Instruments.Data selectors/multiplexers[EB/OL].[1988-03-01].http://www.ti.com/lit/ds/symlink/sn74151a.pdf.
[6]Texas Instruments.4-bit magnitude comparators datasheet[EB/OL].[1988-03-01].http://www.ti.com/lit/ds/symlink/sn 7485.pdf.
[7]Texas Instruments.4-bit binary full adders with fast carrydatasheet[EB/OL].[2001-03-08].http://www.ti.com/lit/ds/symlink/sn74283.pdf.
[8]Altera Corporation.My First FPGA Tutorial[M].[S.l.]:[s.n.],2007.