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