1、引言
FPGA是新型的可編程邏輯器件,能夠將大量的邏輯功能集成于單個器件中,它所提供的門數(shù)從幾百門到上百萬門,符合系統(tǒng)芯片(SOC—System On Chip)的發(fā)展要求,具有高度集成、低功耗、硬件升級等優(yōu)點,可以滿足不同的需要。
隨著電于技術和傳感技術的不斷發(fā)展,使得可編程邏輯器件在現(xiàn)代數(shù)字系統(tǒng)和微電子技術應用中起著越來越重要的作用,本文主要研究利用FPGA器件和MAXPLUSⅡ工具軟件設計溫控定時噴灌系統(tǒng)。文中還涉及到模數(shù)轉換器ADC0804、溫度傳感器AD590的應用。
2、系統(tǒng)的硬件結構
溫控定時噴灌系統(tǒng)的硬件結構如圖一所示,由數(shù)字溫度表和FPGA兩部分組成。數(shù)字溫度表測量范圍為0一100℃.AD590溫度傳感器的感測能力是,溫度每升高1K就增加1μA的電流量,該電流流入1OKΩ的電阻后,將會產生1μA×1OKΩ=10mV的電壓。而00C(等于273 K)時,輸出電流273μA,流入1OKΩ的電阻后,產生273μA×10 KΩ = 2.73 V的電壓。如果測到電壓為XXV,則可由公式(XXV -2.73V)÷ 10 mV得到要測的溫度。溫度傳感器AD590串接1OKΩ
的電阻,然后經(jīng)一個運算放大器后,將電壓引入ADC0804的Vin(+)管腳。ADC0804是8位模數(shù)轉換器,測量精度為0.02 V,當ADC 0804的轉換值為XXH時,所測溫度為T=(XXH×0.02 V-2.73V) ÷lOmV=XXH ×2-273。
3、FPGA功能模塊的設計
FPGA器件設計采用自頂向下的設計方法,將任務分解為三大功能模塊,最后將各功能模塊連接形成頂層模塊,完成整體設計。三大功能模塊可用VHDL語言編程實現(xiàn),也可通過圖形輸入法設計,F(xiàn)PGA是系統(tǒng)的核心,本系統(tǒng)選用了Altera公司的EP1K30TC144-3芯片,在MAXPLUSⅡ開發(fā)平臺上,實現(xiàn)三大功能模塊: 數(shù)據(jù)處理模塊TDATA、時鐘模塊clock、噴灌控制模塊CONTROL。完成三個子模塊的設計后,用圖形輸入法形成的頂層設計如圖二所示。
3.1 時鐘模塊
用圖形輸入法形成的時鐘模塊clock如圖三,其中包括兩個模60計數(shù)器cntm60,一個模12計數(shù)器cntm12,它們輸出的信號分別對應時、分、秒的各位。時鐘模塊亦可由VHDL語言編寫,該程序比較常見,這里省略。
3.2 數(shù)據(jù)處理模塊
數(shù)據(jù)處理模塊TDATA完成溫度數(shù)據(jù)的處理,實現(xiàn)T=(XXH×0.02 V-2.73V) ÷lOmV=XXH ×2-273的運算,將接收到的轉換值調整成對應的數(shù)字信號,在讀 取 到 ADC0804的轉換數(shù)據(jù)后,先將轉換數(shù)據(jù)左移1位(相當于數(shù)值乘2),然后減去“100010001” (273的二進制表示)。當溫度大于某一數(shù)值時(如25℃),數(shù)據(jù)處理模塊TDATA輸出的使能信號和清零信號為1,它們作為時鐘模塊的輸入端,控制時鐘是否開始計時。主要程序如下:(為了結構清晰,對部分內容進行了刪減)
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 噴灌控制模塊
該模塊的輸入信號來自數(shù)據(jù)處理模塊和時鐘模塊的輸出,當溫度大于等于某一數(shù)值時(如25℃),噴灌控制模塊的輸出信號控制噴灌開關自動打開一定時間(如2小時)。主要程序如下:(為了結構清晰,對部分內容進行了刪減)
……
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、 仿真
本文設計的VHDL語言程序已在MAXPLUSⅡ工具軟件上進行了編譯、仿真和調試,通過編程器下載到了EP1K30TC144-3芯片中實際測試并獲得了滿足設計要求的結果。
數(shù)據(jù)處理模塊的功能仿真結果如圖四所示。當轉換數(shù)據(jù)為95H,計算所測溫度為95H× 2-273=25℃,仿真結果正確。
噴灌控制模塊的功能仿真結果如圖五所示??梢钥吹?,當溫度大于等于25℃時,噴灌控制模塊的輸出信號控制噴灌開關自動打開2小時。
5、 結論
通過以上對溫控定時噴灌系統(tǒng)的設計,看到應用FPGA器件和EDA技術,不僅縮短了系統(tǒng)的設計周期,還減少了系統(tǒng)體積,提高了系統(tǒng)的可靠性。具有設計周期短、設計費用和風險低、功能靈活的特點。本文給出的設計思想也適用于其它基于PLD器件的系統(tǒng)設計。
本文設計了基于VHDL 語言的溫控定時噴灌系統(tǒng)的幾個模塊:數(shù)據(jù)處理模塊TDATA、時鐘模塊clock、噴灌控制模塊CONTROL。每個模塊都通過了功能仿真和時序仿真,生成了可綜合的網(wǎng)表文件,并下載到EP1K30TC144-3芯片中。仿真和測試的結果表明每個模塊均完成了其邏輯功能。
責任編輯:gt
評論