引言
在自動控制的很多應用場合, 都需要實時對信號進行采樣分析, 然后由DSP來進行運算控制。AD芯片是采樣中最常用的芯片, 本文主要對ADI 公司的AD7862芯片進行介紹, 同時為它設計了驅動接口電路。由于AD7862不能自動工作, 需要給它提供相關的驅動信號才能觸發它進行轉換,本文用FPGA 芯片給它做一個接口驅動電路, 并詳細的介紹了驅動電路程序的設計, 設計的電路為AD7862提供了非常好的驅動作用, 并在實際運用中能使其穩定的工作。
1、AD7862芯片簡介
AD7862是美國AD I公司出品的12 bit高速, 低功耗轉換器, 單電源5伏供電。共有4 個模擬輸入端, 被分為兩個通道( A& B), 通過輸入端A0來進行選擇。每一個通道有兩個輸入端( VA1& VA2或者VB1&VB2) 。能夠接受的模擬信號的輸入范圍為正負10伏。不過模擬信號的輸入端的過壓保護允許輸入電壓達到正負17 伏。原理框圖如圖1所示。
?
圖1 AD7862原理框圖。
AD7862芯片具有以下特點:
( 1) 對每一個通道而言, 從啟動轉換到轉換完成需要3. 6 s的時間。
( 2) 芯片由5 V 單電源供電, 功耗低, 工作時典型值為60 mW。具有自動休眠模式, 當一次轉換完成后自動進入休眠模式, 節省電能。當下一個轉換周期來臨時在自動蘇醒。
( 3) 提供一個高速并行接口, 和微處理器、微控制器以及數字信號處理器的連接變得容易。
( 4) AD7862系列共有三個版本分別針對三種不同的輸入范圍。其中AD7862—10針對標準工業級輸入范圍正負10伏; AD7862—3 主要針對普通信號輸入范圍正負2. 5 V。
AD7862—2被用于單極0 到2. 5 V 的輸入范圍。對AD7862—10和AD7862-3來說, 轉換輸出的12位為二進制補碼, 對于AD7862-2來說, 輸出的為12位的原碼。
2、接口電路程序設計
在本設計中用的是AD7862??10, 采用高速轉換模式, 典型轉換時序如圖2所示。
?
圖2高速轉換模式時序圖。
圖2中對應的時間參數的要求如下表1所示。
表1高速采樣模式時序參數表。
?
從圖2的時序圖可以看出AD7862 通過輸入脈沖信號CONVST啟動轉換。在CONVST 信號的下降沿, 片上的兩個track /ho ld都同時的被設置為ho ld狀態, 兩個通道開始進行轉換。轉換時鐘由內置的晶振提供。BUSY 信號指示轉換結束, 同時兩個通道的轉換結果可以被讀出。由A0 的值來決定第一次讀取的值是VA1 或者VB1, 第二次讀取的是VA2或者VB2。當CS信號和RD信號為低時, 數據被從12位的并行數據線上讀取。在高速轉換模式下, AD7862 的轉換時間為3. 6 us, track /ho ld收集時間為0. 3 us。為了保證最佳轉換效果, 在轉換期間和下一次轉換開始前300 ns不能進行讀取操作。
上述的時序圖對應為先讀取VA1和VA2, 然后在讀取VB1和VB2, 對應的信號A0首先被設為低電平, 然后被拉為高電平。在設計驅動電路的過程中, 一定要保證設計的時序滿足上述時序參數的要求 , 不然就有可能發生采樣不準, 出錯。
結合AD7862的轉換速度, FPGA選擇10MH z的處理時鐘。對于整個轉換過程的控制用一個狀態機來完成, 狀態機分為12 個狀態( idle, convert1, busy1, reada1, w ait1, reada2,sw apchna,l convert2, busy2, readb1, w ait2, readb2), 其中idle狀態為空閑等待轉換狀態; convert1指示第一次轉換啟動狀態;busy1指示第一次轉換狀態; reada1狀態下讀取VA1; wait1狀態為讀取VA1和VA2之間的等待狀態; reada2狀態下讀取VA2; sw apchnal狀態指示交換到另一個通道進行轉換;convert2指示第二次轉換啟動狀態; 剩余狀態和前面的類似,只不過是針對VB1 和VB2 而言。設計代碼如下( 只描述VA1和VA2的部分, 剩下的類似):
process( clkdiv4, nrst)
beg in
if nrst = ‘0’ then
adc_state < = id le;
e lsif( r ising _edge( clkd iv4) ) then
case adc_state is
when? idle= >
ada0< = '0' ;
adconv< = '1';
adncs< = '1';
adnrd< = '1';
clkcnt< = 0;
if( start= ‘1’) then
adc_state< = convert1;
end if;
w hen? convert1= >
ada0< = '0';
adconv< = '0' ;
if( adbusy= '1') then
adc_state< = busy1;
end if;
w hen? busy1= >
adconv< = '1';
if( adbusy= '0') then
adc_state< = reada1;
end if;
when? reada1= >
if ( c lkcnt= 2) then
addataa1< = 0000 & adda tain;
end if;
if( c lkcnt= 4) then
adc_state< = w a it1;
adncs< = '1';
adnrd< = '1';
clkcnt< = 0;
else
clkcnt< = c lkcnt+ 1;
adncs< = '0';
adnrd< = '0';
end if;
when? wait1= >
adc_state< = reada2;
when reada2= >
if ( c lkcnt= 2) then
addataa2< = 0001 & adda tain;
end if;
3設計電路的仿真驗證
最終設計用Quartus 2 軟件編譯綜合后在板上測試,FPGA 接口電路接受到的轉換數據傳給DSP芯片, 然后將DSP受到的數據用實時監控軟件顯示。圖3是給AD 輸入端加50 H z的正弦波信號(同時對其中三個輸入端加信號), 監控軟件顯示的波形。
?
圖3 軟件顯示波形圖。
從圖3波形圖可以看出, 接口驅動電路成功的控制了AD7862芯片的采樣過程, 從而驗證了驅動電路設計的正確性。
評論
查看更多