徐其善 徐芳芳.成都理工大學(xué)信息科學(xué)與技術(shù)學(xué)院 .蘇州高博軟件技術(shù)學(xué)院
?
基于FPGA的時間溫度監(jiān)視器
徐其善1徐芳芳2
1.成都理工大學(xué)信息科學(xué)與技術(shù)學(xué)院2.蘇州高博軟件技術(shù)學(xué)院
摘要:利用Verilog HDL 語言采用自頂向下的設(shè)計方法實現(xiàn)多功能數(shù)字鐘。具有良好可讀性、可移植性等特點,同時具有實時溫度顯示功能。通過Alteral Quartus II 完成設(shè)計仿真,具有時、分、秒、溫度顯示,以及校對功能。系統(tǒng)主芯片采用EP3C25Q240C8,由時鐘模塊、控制模塊、計時模塊、溫度模塊、數(shù)據(jù)譯碼模塊、顯示模塊組成。由按鍵輸入進行數(shù)字鐘的校時功能。
關(guān)鍵字:數(shù)字鐘 VerilogHDL DS18B20
本設(shè)計為一個多功能的數(shù)字鐘,含有24和60進制兩種計數(shù)模塊。有24小時計數(shù)時、分、秒顯示和校對功能。以硬件描述語言Verilog HDL為系統(tǒng)邏輯描述手段,采用自頂向下方法,主芯片EP3C25Q240C8,由時、控制、計時、數(shù)據(jù)譯碼、顯示模塊組成。溫度傳感器DS18B20對環(huán)境中的溫度進行采集,經(jīng)過CPU處理,以數(shù)碼管的形式顯示實時溫度。
計數(shù)的功能,秒和分鐘都是60進制的計數(shù)器產(chǎn)生,小時是24進制計數(shù)器產(chǎn)生。因此需要1Hz信號,主芯片晶振的頻率是50MHZ的。對50Mhz的系統(tǒng)時鐘信號進行分頻,得到1Hz的信號。計數(shù)模塊首先實現(xiàn)計數(shù)的功能,在編寫程序過程中,重要的是各個特殊情況的表示。先將特殊的狀況表示出來然后處理一般情況。 二十四進制計數(shù)器首先考慮個位的情況,個位有兩個特殊情況3和9。當(dāng)個位為3若果十位為2的時候下一個狀態(tài)應(yīng)該將十位和個位的寄存器清零即跳變成00進行模為24的計數(shù)否則個位進行加1計數(shù);當(dāng)個位為9時,個位要歸零重新計數(shù)同時十位進加1計數(shù)。其他情況個位正常進行加1計數(shù)。六十進制計數(shù)器設(shè)計判斷個位,若是9將個位數(shù)置零同時向十位數(shù)進1,判斷十位上的數(shù)字是否是5,若是下一狀態(tài)跳到0,若不是就加一循環(huán)計數(shù);若個位不是9那么個位繼續(xù)向上加一計數(shù)。譯碼顯示設(shè)計中要顯示時分秒所以要六個數(shù)碼管,設(shè)定一個16位的計數(shù)器對時鐘信號的上升沿進行計數(shù),到達一定的次數(shù)后對數(shù)碼管進行掃描點亮,并利用高三位構(gòu)成一個8選一的數(shù)據(jù)選擇器,相當(dāng)于掃描周期為2的13次方個時鐘周期,選擇不同位數(shù)的數(shù)碼管讓其點亮同時將該位要顯示的七段字型碼賦值給發(fā)光二極管讓其顯示。
本設(shè)計中用到按鍵較多,采用軟件方法去抖動,該按鍵使用的是產(chǎn)生負(fù)脈沖的接法。因此使用鐘頻為500Hz信號周期為2ms的5級寄存器加一個或門當(dāng)上升沿到來時,將移位寄存器的低四位和按鍵的輸入賦值給移位寄存器,實現(xiàn)左移功能,經(jīng)移位寄存器進行按位或運算最終賦值給按鍵輸出來避開抖動。按鍵常態(tài)輸出為高,當(dāng)按下輸出低,五位移位寄存器按位與只有五位數(shù)據(jù)全為低時輸出才為低即延時5個時鐘周期10ms才判斷按鍵按下。時間調(diào)節(jié)為了增加設(shè)計的實用性,還要加上時間的調(diào)節(jié)模塊實現(xiàn)小時和分鐘的調(diào)節(jié)功能調(diào)整小時和分鐘的值,在調(diào)節(jié)分鐘的模塊中。每按鍵一次,經(jīng)過去抖動模塊進入調(diào)節(jié)分模塊中。
將DS18B20的DQ與FPGA的一個IO連接,并加4.7K的上拉電阻到電源。添加了一個發(fā)光二極管以提示溫度傳感器正常工作。選擇3.3V接在實驗板JP4的1腳,GND接在JP4的2腳。溫度傳感器可完成對溫度的測量,2位轉(zhuǎn)化用16位符號擴展的二進制補碼讀數(shù)形式提供,溫度表達形式為 0.0625℃/LSB ,其中 S 為符號位。存儲在 DS18B20 的兩個 8 比特的 RAM 中,二進制中的前面 5 位是符號位,當(dāng)測得的溫度大于 0時,5 位符號位為 0,將測到的數(shù)值乘于 0.0625 即可得到實際溫度。初始化時序包括一個主機發(fā)出的復(fù)位脈沖以及從機的應(yīng)答脈沖這一過程,復(fù)位脈沖是480~960us的低電平然后釋放總線,將總線拉至高電平,時間持續(xù)15~60us之后從機開始向總線發(fā)出一個應(yīng)答脈沖60~240us的低電平信號,表示從機已準(zhǔn)備好,在初始化過程中主機接收脈沖的時間最少為480us。DSl8B20的訪問步驟為:先進行初始化(Ini—tialization),然后發(fā)送ROM命令,最后發(fā)送Func—tion功能命令。對DSl8B20訪問必須通過上述步驟完成。
參考文獻
[1]劉靳.劉篤仁.Verilog程序設(shè)計與EDA.西安電子科技大學(xué)出版社
[2]劉君.常明.秦娟.基于硬件描述語言(VHDL)的數(shù)字時鐘設(shè)計.天津理工大學(xué)學(xué)報.2007.第23卷第4期.40-41
[3]李晨.數(shù)字電路EDA綜合實驗.南京大學(xué)金陵學(xué)院.2010
[4]夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計教程.北京航空航天大學(xué)出版社.2008