1、引言
FPGA是新型的可編程邏輯器件,能夠?qū)⒋罅康倪壿嫻δ芗捎趩蝹€(gè)器件中,它所提供的門(mén)數(shù)從幾百門(mén)到上百萬(wàn)門(mén),符合系統(tǒng)芯片(SOC—System On Chip)的發(fā)展要求,具有高度集成、低功耗、硬件升級(jí)等優(yōu)點(diǎn),可以滿足不同的需要。
隨著電于技術(shù)和傳感技術(shù)的不斷發(fā)展,使得可編程邏輯器件在現(xiàn)代數(shù)字系統(tǒng)和微電子技術(shù)應(yīng)用中起著越來(lái)越重要的作用,本文主要研究利用FPGA器件和MAXPLUSⅡ工具軟件設(shè)計(jì)溫控定時(shí)噴灌系統(tǒng)。文中還涉及到模數(shù)轉(zhuǎn)換器ADC0804、溫度傳感器AD590的應(yīng)用。
2、系統(tǒng)的硬件結(jié)構(gòu)
溫控定時(shí)噴灌系統(tǒng)的硬件結(jié)構(gòu)如圖一所示,由數(shù)字溫度表和FPGA兩部分組成。數(shù)字溫度表測(cè)量范圍為0一100℃.AD590溫度傳感器的感測(cè)能力是,溫度每升高1K就增加1μA的電流量,該電流流入1OKΩ的電阻后,將會(huì)產(chǎn)生1μA×1OKΩ=10mV的電壓。而00C(等于273 K)時(shí),輸出電流273μA,流入1OKΩ的電阻后,產(chǎn)生273μA×10 KΩ = 2.73 V的電壓。如果測(cè)到電壓為XXV,則可由公式(XXV -2.73V)÷ 10 mV得到要測(cè)的溫度。溫度傳感器AD590串接1OKΩ
的電阻,然后經(jīng)一個(gè)運(yùn)算放大器后,將電壓引入ADC0804的Vin(+)管腳。ADC0804是8位模數(shù)轉(zhuǎn)換器,測(cè)量精度為0.02 V,當(dāng)ADC 0804的轉(zhuǎn)換值為XXH時(shí),所測(cè)溫度為T(mén)=(XXH×0.02 V-2.73V) ÷lOmV=XXH ×2-273。

3、FPGA功能模塊的設(shè)計(jì)
FPGA器件設(shè)計(jì)采用自頂向下的設(shè)計(jì)方法,將任務(wù)分解為三大功能模塊,最后將各功能模塊連接形成頂層模塊,完成整體設(shè)計(jì)。三大功能模塊可用VHDL語(yǔ)言編程實(shí)現(xiàn),也可通過(guò)圖形輸入法設(shè)計(jì),F(xiàn)PGA是系統(tǒng)的核心,本系統(tǒng)選用了Altera公司的EP1K30TC144-3芯片,在MAXPLUSⅡ開(kāi)發(fā)平臺(tái)上,實(shí)現(xiàn)三大功能模塊: 數(shù)據(jù)處理模塊TDATA、時(shí)鐘模塊clock、噴灌控制模塊CONTROL。完成三個(gè)子模塊的設(shè)計(jì)后,用圖形輸入法形成的頂層設(shè)計(jì)如圖二所示。

3.1 時(shí)鐘模塊
用圖形輸入法形成的時(shí)鐘模塊clock如圖三,其中包括兩個(gè)模60計(jì)數(shù)器cntm60,一個(gè)模12計(jì)數(shù)器cntm12,它們輸出的信號(hào)分別對(duì)應(yīng)時(shí)、分、秒的各位。時(shí)鐘模塊亦可由VHDL語(yǔ)言編寫(xiě),該程序比較常見(jiàn),這里省略。

3.2 數(shù)據(jù)處理模塊
數(shù)據(jù)處理模塊TDATA完成溫度數(shù)據(jù)的處理,實(shí)現(xiàn)T=(XXH×0.02 V-2.73V) ÷lOmV=XXH ×2-273的運(yùn)算,將接收到的轉(zhuǎn)換值調(diào)整成對(duì)應(yīng)的數(shù)字信號(hào),在讀 取 到 ADC0804的轉(zhuǎn)換數(shù)據(jù)后,先將轉(zhuǎn)換數(shù)據(jù)左移1位(相當(dāng)于數(shù)值乘2),然后減去“100010001” (273的二進(jìn)制表示)。當(dāng)溫度大于某一數(shù)值時(shí)(如25℃),數(shù)據(jù)處理模塊TDATA輸出的使能信號(hào)和清零信號(hào)為1,它們作為時(shí)鐘模塊的輸入端,控制時(shí)鐘是否開(kāi)始計(jì)時(shí)。主要程序如下:(為了結(jié)構(gòu)清晰,對(duì)部分內(nèi)容進(jìn)行了刪減)
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity tdata is
port (data:in std_logic_vector (7 downto 0);
t :out std_logic_vector (8 downto 0);
en:out std_logic;
clear:out std_logic);
end tdata ;
architecture aa of tdata is
signal datain : std_logic_vector (8 downto 0);
signal tin : std_logic_vector (8 downto 0);
begin
process(data)
begin
datain《=data&‘0’;
tin《=datain-“100010001”;
if(tin 》= “000011001”) then
en《=‘1’;
clear《=‘1’;
else en《=‘0’;
clear《=‘0’;
end if;
end process;
t《=tin;
……
3.3 噴灌控制模塊
該模塊的輸入信號(hào)來(lái)自數(shù)據(jù)處理模塊和時(shí)鐘模塊的輸出,當(dāng)溫度大于等于某一數(shù)值時(shí)(如25℃),噴灌控制模塊的輸出信號(hào)控制噴灌開(kāi)關(guān)自動(dòng)打開(kāi)一定時(shí)間(如2小時(shí))。主要程序如下:(為了結(jié)構(gòu)清晰,對(duì)部分內(nèi)容進(jìn)行了刪減)
……
begin
process(hour,t)
begin
if(t 》= “000011001” and hour 》= “0000” and hour 《=“0010”) then
control《=‘1’;
else control《=‘0’;
end if;
end process;
……
4、 仿真
本文設(shè)計(jì)的VHDL語(yǔ)言程序已在MAXPLUSⅡ工具軟件上進(jìn)行了編譯、仿真和調(diào)試,通過(guò)編程器下載到了EP1K30TC144-3芯片中實(shí)際測(cè)試并獲得了滿足設(shè)計(jì)要求的結(jié)果。
數(shù)據(jù)處理模塊的功能仿真結(jié)果如圖四所示。當(dāng)轉(zhuǎn)換數(shù)據(jù)為95H,計(jì)算所測(cè)溫度為95H× 2-273=25℃,仿真結(jié)果正確。

噴灌控制模塊的功能仿真結(jié)果如圖五所示??梢钥吹?,當(dāng)溫度大于等于25℃時(shí),噴灌控制模塊的輸出信號(hào)控制噴灌開(kāi)關(guān)自動(dòng)打開(kāi)2小時(shí)。

5、 結(jié)論
通過(guò)以上對(duì)溫控定時(shí)噴灌系統(tǒng)的設(shè)計(jì),看到應(yīng)用FPGA器件和EDA技術(shù),不僅縮短了系統(tǒng)的設(shè)計(jì)周期,還減少了系統(tǒng)體積,提高了系統(tǒng)的可靠性。具有設(shè)計(jì)周期短、設(shè)計(jì)費(fèi)用和風(fēng)險(xiǎn)低、功能靈活的特點(diǎn)。本文給出的設(shè)計(jì)思想也適用于其它基于PLD器件的系統(tǒng)設(shè)計(jì)。
本文設(shè)計(jì)了基于VHDL 語(yǔ)言的溫控定時(shí)噴灌系統(tǒng)的幾個(gè)模塊:數(shù)據(jù)處理模塊TDATA、時(shí)鐘模塊clock、噴灌控制模塊CONTROL。每個(gè)模塊都通過(guò)了功能仿真和時(shí)序仿真,生成了可綜合的網(wǎng)表文件,并下載到EP1K30TC144-3芯片中。仿真和測(cè)試的結(jié)果表明每個(gè)模塊均完成了其邏輯功能。
責(zé)任編輯:gt
電子發(fā)燒友App

















評(píng)論