







摘" 要:本設計利用FPGA控制DS1302時鐘芯片實現數字時鐘。FPGA芯片是系統的控制核心,按鍵通過FPGA的I/O口執行相應的操作,即對DS1302時鐘芯片的數據進行配置,然后FPGA定時讀取DS1302時鐘芯片的數據,傳到數碼管中譯碼顯示。在FPGA讀取數據的過程中,整點時蜂鳴器會發出SOS的聲音和LED燈閃爍,并有LCD液晶上閃現皮卡丘圖像。
關鍵詞:FPGA;數字時鐘;硬件描述語言;DS1302
中圖分類號:TP301" " " " 文獻標志碼:A" " " " "文章編號:2095-2945(2021)13-0080-03
Abstract: The design is to use DS1302 clock chip to realize digital clock on FPGA. The FPGA chip is the control core of the system. The keys are operated through the I/O port of the FPGA, that is, the data of the DS1302 clock chip is to be configured. Then the data of the DS1302 clock chip is read by the FPGA regularly and transmitted to the digital tube for decoding and displaying. In the process of reading data by FPGA, the buzzer will emit SOS sound and LED lamp flashing at the whole point, and Pikachu images will be flashed on LCD liquid crystal.
Keywords: FPGA; digital clock; hardware description language; DS1302
隨著數字化和信息化時代的到來,集成電路得到了很大的發展,數字時鐘應運而生并逐漸有取代鐘表的趨勢。數字時鐘相比于鐘表有走時精確、價格低廉、外觀多樣等獨到之處。
1 數字時鐘的總體結構
本系統設計方案:系統進行模塊化設計,包括時鐘模塊、按鍵控制模塊、數碼管譯碼顯示、蜂鳴器模塊和LCD液晶顯示模塊。采用FPGA作為系統的控制核心,按鍵通過FPGA的I/O口執行相應的操作,即對DS1302時鐘芯片的數據進行配置,然后FPGA定時讀取DS1302時鐘芯片的數據,傳到數碼管中譯碼顯示。DS1302時鐘芯片計時精度高可以保證時鐘的精準性,所以時鐘功能利用DS1302時鐘芯片實現。在工作時,5個按鍵有不同的功能,對數碼管顯示的數據進行相應的配置處理,保證可以顯示想要顯示的時間數據。另外,FPGA控制核心讀取時鐘芯片數據,在整點時蜂鳴器發出SOS響聲,LCD液晶閃現皮卡丘,實現整點報時功能。其系統整體框圖如圖1所示。
2 數字時鐘的工作原理
本設計采用的是DS1302時鐘芯片,利用FPGA對DS1302時鐘芯片進行操作,需要了解它的讀時序和寫時序及控制字節,DS1302時鐘芯片的控制字節如表1所示。
對數據進行操作首先要訪問地址,所以不管是進行讀操作還是寫操作,首先要訪問寄存器的地址。表1所示的控制字節各字節的含義是: BIT7是固定的,BIT6表示訪問寄存器還是RAM,BIT5...1表示地址,BIT0表示進行讀操作還是寫操作。
圖2是DS1302時鐘芯片寫操作的時序圖。共有2個字節,第一個是訪問寄存器的地址,第二個是向芯片寫入數據。寫操作時上升沿有效,從圖中可以看出,CE(/RST)信號是拉高的。
圖3是DS1302時鐘芯片讀操作的時序圖。大體上和寫操作的類似,不同的是第二個字節的操作動作。第二字節讀數據時鐘信號是下降沿有效。CE(/RST)信號同樣是必須拉高。
表2是DS1302時鐘芯片里的寄存器的字節配置。時分秒的寄存器高四位表示十位,低四位表示個位,但是秒和時寄存器的最高位比較特殊。需要注意的是,秒寄存器的最高位(BIT7)控制DS1302時鐘芯片的啟動和關閉,低電平是關閉,高電平是啟動。時寄存器的最高位(BIT7)用來確定時間是12小時還是24小時進制的,低電平是24小時制,高電平是12小時制,在日常生活中24小時制常見。控制寄存器(最后2個)的最高位(BIT7),低電平表示關閉寫保護,高電平表示打開寫保護。因此每次要更改數據時,要關閉寫保護。
3 系統硬件描述語言設計與仿真
系統采用模塊化和仿順序架構,分為命令控制模塊和函數模塊,系統軟件架構如圖4所示。函數模塊包括DS1302時鐘芯片讀寫函數、按鍵消抖函數、數碼管驅動函數、LCD驅動函數及蜂鳴器驅動函數。
命令控制模塊是對函數模塊的調用,根據設計需要,需要配置8個命令,利用Start_Sig信號的8位位寬來定義8種不同的操作。位寬對命令分配如表3所示。
首先,命令接口初始化DS1302時鐘芯片,使其輸出為00-00-00,然后從此時開始計時。也就是說,在初始狀態時輸出是24'h00_00_00。如果配置信號Start_Sig[7]接收到高脈沖,芯片就會停止計時,輸出也會保持不變,模塊就會進入配置模式。進入配置模式后,會對時鐘進行配置,接收到Start_Sig[6]的高脈沖,就可以變更時鐘值,時鐘值的范圍是00~23。接收到Start_Sig[5]的高脈沖,就可以變更分鐘值,分鐘值的范圍是00~59。接收到Start_Sig[4]的高脈沖,就可以變更秒鐘值,秒鐘值的范圍是00~59。接收到Start_Sig[3]的高脈沖,就開啟寫保護。接收到Start_Sig[2]的高脈沖,就讀取時鐘寄存器的值。接收到Start_Sig[1]的高脈沖,就讀取分鐘寄存器的值。接收到Start_Sig[0]的高脈沖,就讀取秒鐘寄存器的值。在配置模式中,其輸出會隨時鐘值的變化而變化,如果將時鐘設為12,那么輸出就會更新為24'h12_00_00。最后如果配置完的結果是24'h12_30_10,輸出結果也是如此,數碼管上顯示的就是這個結果,然后給Start_Sig[7]一個高脈沖,就會退出配置模式,回到正常模式,系統從此時計時開始。
整個設計分模塊進行,對各個模塊分別進行設計,最后將各個模塊綜合成數字時鐘系統。其模塊包括時鐘模塊、蜂鳴器模塊、按鍵控制模塊、數碼管顯示模塊、LCD液晶顯示模塊。系統運用Verilog HDL硬件描述語言在QuartusⅡ11.0軟件上編譯設計,該系統RTL仿真如圖5所示。把編譯完成的工程下載到開發板中實現全數字時鐘系統如圖6所示。
參考文獻:
[1]王善斌,曹幫琴.基于FPGA的任意函數發生器設計與實現[J].科技創新與應用,2017(9):76.
[2]王善斌,曹幫琴.基于FPGA與MSP430的數字頻率計設計與實現[J].山東理工大學學報(自然科學版),2016,30(5):61-63.
[3]王鳴哲.星載圖像壓縮系統中高速小波變換的FPGA設計與實現
[D].北京:中國科學院大學(中國科學院國家空間科學中心),2017.