呂小鳳,杜 丹,張萬玉
(1.中國電子科技集團(tuán)公司第五十四研究所,河北 石家莊 050081;2.陸裝駐石家莊地區(qū)第一軍代室,河北 石家莊 050081;3.陸軍裝備部裝備項(xiàng)目管理中心,北京 100071)
模擬數(shù)據(jù)的采集與處理是信息技術(shù)的一個(gè)重要分支,廣泛應(yīng)用于地空信息傳輸系統(tǒng)中。隨著信息技術(shù)的高速發(fā)展和對控制要求的不斷提高,地空信息系統(tǒng)對模數(shù)轉(zhuǎn)換速度和精度要求也在不斷提高[1]。A/D轉(zhuǎn)換芯片作為模擬量采集的核心部件,其內(nèi)部ADC容易受到輸入信號、電路布局以及芯片自身工藝的影響,使轉(zhuǎn)換結(jié)果無法滿足系統(tǒng)控制要求[2]。受硬件發(fā)展水平的限制,傳統(tǒng)的地空信息系統(tǒng)中,通常采用單片機(jī)對A/D轉(zhuǎn)換芯片進(jìn)行控制的方式來完成模擬信號的采集和轉(zhuǎn)換,處理速度慢,外圍控制通過FPGA完成,硬件電路結(jié)構(gòu)繁雜,軟件設(shè)計(jì)中數(shù)據(jù)交互同時(shí)涉及到單片機(jī)和FPGA,可靠性不高。鑒于以上A/D轉(zhuǎn)換發(fā)展與應(yīng)用存在的兩大瓶頸:① A/D轉(zhuǎn)換器的速率和性能;② 可編程邏輯器件的處理速度[3],本文利用MAXIM公司具有12位高精度的多通道A/D轉(zhuǎn)換芯片和具有高速數(shù)據(jù)處理能力的ALTERA公司Stratix系列+5 V工作電壓的FPGA作為主控芯片實(shí)現(xiàn)了A/D轉(zhuǎn)換,不僅接口簡單、轉(zhuǎn)換速度快、精度高[4],而且利用延時(shí)調(diào)整等技術(shù)解決了A/D轉(zhuǎn)換芯片與FPGA之間的高速數(shù)據(jù)傳輸問題。
設(shè)計(jì)之初,考慮到應(yīng)用的可擴(kuò)展性,要求可對多路模擬數(shù)據(jù)進(jìn)行轉(zhuǎn)換,常用的設(shè)計(jì)方法有2種:① 電路使用多片A/D轉(zhuǎn)換芯片,每片對一路模擬信號進(jìn)行轉(zhuǎn)換,多片芯片同步工作;② 電路選用多通道A/D轉(zhuǎn)換芯片,通過軟件控制依次完成多路模擬信號的轉(zhuǎn)換。
顯然,方案1可滿足系統(tǒng)的實(shí)時(shí)性和同步性要求,但是針對目前的系統(tǒng)小型化需求,芯片使用數(shù)量多,占電路板空間大,而且外圍電路復(fù)雜[5],大大增加了PCB設(shè)計(jì)難度。相較之下,方案2電路簡化,雖然對軟件控制的要求較高,但應(yīng)用上更加靈活[6]。
本設(shè)計(jì)使用的FPGA可編程器件選用ALTERA公司Stratix系列的EP1S20F484I6N,該芯片工作電壓為+5 V,A/D轉(zhuǎn)換器選用MAXIM公司的8通道12位高精度MAX197芯片,該芯片僅需+5 V供電,工作電壓與EP1S20F484I6N相匹配,二者硬件管腳可以直接相連,不需再使用電平轉(zhuǎn)換芯片,極大簡化了電路設(shè)計(jì)。
本文設(shè)計(jì)重點(diǎn)是為完成A/D轉(zhuǎn)換的MAX197芯片外圍電路提供可靠接口,實(shí)現(xiàn)多通道的模擬數(shù)據(jù)采集轉(zhuǎn)換功能。硬件電路主要由模擬數(shù)據(jù)接收和控制轉(zhuǎn)換處理電路組成。
為了保證電路的轉(zhuǎn)換精度和可靠性,合理的電路及PCB設(shè)計(jì)非常重要[7],尤其對于模數(shù)混合電路,如何減少模擬電路和數(shù)字電路之間的相互串?dāng)_,也是要精心考慮的問題[7-8]。
本設(shè)計(jì)在PCB優(yōu)化布局和走線的基礎(chǔ)上,將數(shù)字地和模擬地之間用0 Ω電阻連接,這樣可保證直流電位相等,能有效限制環(huán)路電流,抑制噪聲;否則,模擬信號將會(huì)受到干擾,嚴(yán)重影響轉(zhuǎn)換結(jié)果。
圖1 A/D轉(zhuǎn)換控制處理電路
軟件設(shè)計(jì)采用Verilog HDL語言利用FPGA編程,通過有限狀態(tài)機(jī)模式[13],實(shí)現(xiàn)對MAX197運(yùn)行模式的配置、模擬數(shù)據(jù)采集和轉(zhuǎn)換的控制。
程序流程如圖2所示。
圖2 A/D轉(zhuǎn)換程序流程
在本系統(tǒng)實(shí)際應(yīng)用中,A/D轉(zhuǎn)換只是硬件電路板上FPGA所需完成功能的一部分且數(shù)據(jù)采集對時(shí)間無嚴(yán)格要求。因此,為了保證設(shè)計(jì)中所用時(shí)鐘的全局性[14-15],MAX197選擇在外部時(shí)鐘模式下工作,信號獲取方式選用時(shí)序關(guān)系更為簡明的內(nèi)部自動(dòng)采集模式,模擬信號量程選擇0~5 V,則寫入的8位控制字為{5’b0,chNum},其中,chNum為模擬通道,數(shù)據(jù)位寬3 bit,有效范圍為3’b000~3’b111,用來表示當(dāng)前選定的模擬數(shù)據(jù)通道。
分步狀態(tài)執(zhí)行過程如下:
iSt0:初始化A/D轉(zhuǎn)換芯片。nCS,nWR,nRD,HNEN信號置1,數(shù)據(jù)讀寫使能triEn置0;
iSt1:nCS信號置0,拉低片選信號;
iSt2:nWR信號置0,拉低寫信號,準(zhǔn)備產(chǎn)生寫信號的上升沿;
iSt3:數(shù)據(jù)讀寫使能triEn置1,并按控制字格式編排數(shù)據(jù)準(zhǔn)備寫入數(shù)據(jù)總線,數(shù)據(jù)內(nèi)容為{5’b0,chNum};
iSt4:nWR信號置1,拉高寫控制信號,產(chǎn)生上升沿,此時(shí),數(shù)據(jù)讀寫使能triEn有效,將控制字寫入數(shù)據(jù)總線配置A/D轉(zhuǎn)換芯片MAX197的運(yùn)行模式,同時(shí)控制字中選定的模擬輸入通道上的數(shù)據(jù)開始進(jìn)行采集;
iSt5:數(shù)據(jù)讀寫使能triEn置0,并將nCS信號置1,拉高片選信號,不再對數(shù)據(jù)總線進(jìn)行操作,同時(shí)等待模擬數(shù)據(jù)采集轉(zhuǎn)換完成。當(dāng)檢測到nINT信號為低電平時(shí),表示模擬數(shù)據(jù)已轉(zhuǎn)換完成,轉(zhuǎn)換結(jié)果已在數(shù)據(jù)總線上等待讀出[16],否則,繼續(xù)等待;
iSt6:nCS信號置0,使片選信號有效;
iSt7:nRD信號置0,拉低讀控制信號,準(zhǔn)備從數(shù)據(jù)總線上讀取轉(zhuǎn)換結(jié)果;
iSt8:HNEN信號從狀態(tài)iSt0時(shí)一直為高電平,此時(shí)讀控制有效,從數(shù)據(jù)總線上讀取轉(zhuǎn)換結(jié)果的高4 bit,當(dāng)從總線上開始讀取轉(zhuǎn)換結(jié)果時(shí),轉(zhuǎn)換結(jié)束標(biāo)識(shí)信號nINT恢復(fù)高電平,等待下一次轉(zhuǎn)換;
iSt9:HNEN信號置0,準(zhǔn)備讀取轉(zhuǎn)換結(jié)果的低8 bit;
iSt10: HNEN信號為低電平且讀控制有效,從數(shù)據(jù)總線上讀取轉(zhuǎn)換結(jié)果的低8 bit;
iSt11:12 bit轉(zhuǎn)換結(jié)果已全部從數(shù)據(jù)總線上讀出,nRD信號置1,拉高讀控制信號,不再對數(shù)據(jù)總線進(jìn)行讀操作,同時(shí),HNEN信號置1,恢復(fù)到初始態(tài);
iSt12:nCS信號置1,拉高片選信號,使片選信號無效,使所有控制和狀態(tài)信號都恢復(fù)到初始態(tài)。
當(dāng)所有控制和狀態(tài)信號都恢復(fù)到初始態(tài)值時(shí),表示對當(dāng)前模擬通道的轉(zhuǎn)換操作已全部完成,狀態(tài)機(jī)跳轉(zhuǎn)到iSt0,開始進(jìn)行下一通道轉(zhuǎn)換操作,以此循環(huán)8次,可實(shí)現(xiàn)8個(gè)模擬通道的順序轉(zhuǎn)換。開啟新一輪的轉(zhuǎn)換時(shí),當(dāng)模擬通道的信號量程、極性有變或需改變芯片的運(yùn)行模式時(shí),需按格式對控制字進(jìn)行重新設(shè)置。如果在當(dāng)前轉(zhuǎn)換周期未結(jié)束時(shí)寫一個(gè)新的控制字將使當(dāng)前轉(zhuǎn)換失效,并啟動(dòng)一次新的采集轉(zhuǎn)換過程[17]。
在Quartus II開發(fā)平臺(tái)上,用Verilog語言進(jìn)行程序設(shè)計(jì),并用Quartus II軟件的嵌入式邏輯分析儀Signal Tap II通過JTAG端口來查看以實(shí)際系統(tǒng)速率運(yùn)行的系統(tǒng)內(nèi)的各設(shè)計(jì)節(jié)點(diǎn),從而實(shí)現(xiàn)對FPGA設(shè)計(jì)內(nèi)部節(jié)點(diǎn)的訪問。本設(shè)計(jì)的主時(shí)鐘將外部晶振從FPGA芯片的全局時(shí)鐘管腳輸入,使用Alter公司的PLL內(nèi)置模塊對輸入的外部時(shí)鐘倍頻[18],對高頻鐘分頻后為MAX197提供1 MHz時(shí)鐘。在模擬通道1上接入+5 V電壓,數(shù)據(jù)采集轉(zhuǎn)換時(shí)序如圖3所示。
圖3 通道1數(shù)據(jù)采集轉(zhuǎn)換時(shí)序
圖3中,clk是外部時(shí)鐘模式下由外部晶振為MAX197芯片提供的時(shí)鐘;iSt為狀態(tài)機(jī);doutTmp為FPGA內(nèi)部寄存器,存儲(chǔ)設(shè)置的控制字;dataIO為MAX197與FPGA交互的8 bit并行數(shù)據(jù)線;當(dāng)nCS有效,nWR為低電平時(shí),triEN使能將寄存器內(nèi)的數(shù)寫入數(shù)據(jù)線,初始化控制字。dout[i]為轉(zhuǎn)換結(jié)果。軟件設(shè)計(jì)中,所有賦值操作使用的都是非阻塞型過程賦值,則對應(yīng)的狀態(tài)機(jī)中,每一次信號的賦值要到下一個(gè)時(shí)鐘周期來臨時(shí)才會(huì)執(zhí)行。通過時(shí)序圖可以看到,在狀態(tài)機(jī)iSt為4時(shí),設(shè)置好的控制字寫入了數(shù)據(jù)總線dataIO,配置好MAX197轉(zhuǎn)換芯片的運(yùn)行模式,并選定當(dāng)前需轉(zhuǎn)換的模擬通道為通道1。狀態(tài)機(jī)iSt為5時(shí),nWR的上升沿到來,開始采集信號,經(jīng)過18個(gè)時(shí)鐘周期,信號采集并轉(zhuǎn)換完成;此時(shí),轉(zhuǎn)換結(jié)束標(biāo)識(shí)信號nINT變?yōu)榈碗娖?,并開始向數(shù)據(jù)線上準(zhǔn)備轉(zhuǎn)換結(jié)果。狀態(tài)機(jī)iSt為8時(shí),nRD為低電平,開始從數(shù)據(jù)線上讀取轉(zhuǎn)換結(jié)果,nINT恢復(fù)為高電平等待下一次轉(zhuǎn)換過程。dout[0]顯示模擬通道1上+5 V的電平信號轉(zhuǎn)換結(jié)果不穩(wěn)定,數(shù)值一直在12’hBA7~12’hCBD間不停跳動(dòng),換算成電平值則為3.63~3.98 V。說明每次對+5 V電平采樣時(shí),采樣到的電平值不穩(wěn)定且數(shù)值偏差很大,模擬信號受到了嚴(yán)重干擾。檢查電路布線,發(fā)現(xiàn)模擬地與數(shù)字地間未做等電位處理,可能造成模擬信號不能正確識(shí)別。將MAX197芯片的第28管腳和15管腳直接短接,并在模擬通道1上通過直流可調(diào)電源接入+5 V電壓,模擬通道2上接入約+2.5 V電壓,數(shù)據(jù)采集轉(zhuǎn)換時(shí)序如圖4和圖5所示。
圖4 優(yōu)化后通道1數(shù)據(jù)采集轉(zhuǎn)換時(shí)序
從圖4轉(zhuǎn)換結(jié)果可以看出,電路經(jīng)初步優(yōu)化后,+5 V電平的轉(zhuǎn)換結(jié)果穩(wěn)定,且轉(zhuǎn)換值12’hFFF正確。
圖5 優(yōu)化后通道2數(shù)據(jù)采集轉(zhuǎn)換時(shí)序
通道1轉(zhuǎn)換完成后在轉(zhuǎn)換周期結(jié)束前,通道號加1,準(zhǔn)備進(jìn)行通道2的數(shù)據(jù)轉(zhuǎn)換。圖5中,在新一輪轉(zhuǎn)換周期中,chNum值由0變?yōu)?,表示當(dāng)前選定模擬通道2,轉(zhuǎn)換芯片的運(yùn)行模式?jīng)]有改變,此時(shí),控制字doutTmp設(shè)置為’h01,dout[1]顯示模擬通道2上+2.5 V的電平信號轉(zhuǎn)換結(jié)果為12’h7FD~12’h7FF。
結(jié)合圖4和圖5,模擬信號經(jīng)初步抗干擾優(yōu)化處理后,+5 V,+2.5 V信號轉(zhuǎn)換結(jié)果正確且穩(wěn)定,芯片A/D采集轉(zhuǎn)換功能正常。
為測試軟件的通用性,改變模擬通道信號量程和極性,將模擬通道3上信號量程設(shè)置為±10 V,并將通道3接入穩(wěn)定-5 V電壓,數(shù)據(jù)采集轉(zhuǎn)換結(jié)果如圖6所示。
圖6 通道3數(shù)據(jù)采集轉(zhuǎn)換時(shí)序
圖6中,由于通道3信號量程改變,在進(jìn)行數(shù)據(jù)采集轉(zhuǎn)換前,控制字doutTmp應(yīng)設(shè)置為{5’b11,3’b10},表示當(dāng)前選定模擬通道3,且信號量程為±10 V,dout[2]顯示模擬通道3上-5 V的電平信號轉(zhuǎn)換結(jié)果為12’hBFE,轉(zhuǎn)換結(jié)果與實(shí)際相符,芯片A/D采集轉(zhuǎn)換功能依舊正常。
在實(shí)際地空信息系統(tǒng)特定功能機(jī)箱內(nèi),將重新優(yōu)化設(shè)計(jì)后的電路板與功放模塊連接,模塊反饋的模擬電壓作為A/D轉(zhuǎn)換電路的輸入信號來檢測硬件電路及軟件的實(shí)用性。在數(shù)據(jù)轉(zhuǎn)換測試中,通過功能機(jī)箱上的狀態(tài)顯示屏可查看12 bit A/D轉(zhuǎn)換結(jié)果。調(diào)節(jié)反饋電壓,當(dāng)電壓值為單極性且在0~+5 V間變化時(shí),轉(zhuǎn)換結(jié)果在12’h000~12’hFFF間變化。調(diào)節(jié)反饋電壓分別穩(wěn)定至+3.0 V,+2.5 V時(shí),使用3塊電路板進(jìn)行測試,轉(zhuǎn)換結(jié)果如表1所示。
表1 A/D轉(zhuǎn)換測試結(jié)果
電路板序號模塊反饋電壓/V芯片模擬信號輸入端電壓/V測試結(jié)果轉(zhuǎn)換值/V13.00002.999412’H9972.997623.00002.999712’H9982.998833.00002.999912’H9993.000012.50002.499212’H7FD2.496922.50002.499612’H7FE2.498232.50002.499912’H7FF2.4994
MAX197的采樣精度和其時(shí)序密切相關(guān),本設(shè)計(jì)電路使用FPGA做主控芯片,處理速度快,通過表1的測試數(shù)據(jù),對3塊不同的電路板灌裝本設(shè)計(jì)軟件后,誤差均不超過3 mV,轉(zhuǎn)換精度高,且多通道轉(zhuǎn)換模式和數(shù)據(jù)處理通過FPGA編程控制,在硬件電路不變的情況下修改軟件程序就能滿足多種數(shù)據(jù)采集需求[19]。該設(shè)計(jì)已應(yīng)用到實(shí)際的地空信息系統(tǒng)中,具有一定的實(shí)用價(jià)值,同時(shí)由于該設(shè)計(jì)采用Verilog語言完成電路的軟件設(shè)計(jì),易用性和可移植性得到了加強(qiáng),不僅使硬件功能的設(shè)計(jì)修改和產(chǎn)品升級變得十分方便,而且極大地提高了電子系統(tǒng)的靈活性和通用性。結(jié)合圖3~圖5的實(shí)驗(yàn)數(shù)據(jù),設(shè)計(jì)還強(qiáng)調(diào)了模數(shù)混合電路設(shè)計(jì)中信號抗干擾處理的重要性,具有一定的學(xué)習(xí)參考價(jià)值。