摘 要: 介紹一種基于CPLD" title="CPLD">CPLD的多普勒聲納" title="多普勒聲納">多普勒聲納回波信號仿真卡的設(shè)計實(shí)現(xiàn),該板卡作為PXI測試系統(tǒng)的一個組成模塊,數(shù)據(jù)交換基于PXI總線" title="PXI總線">PXI總線,使用S5920" title="S5920">S5920實(shí)現(xiàn)總線控制,利用CPLD實(shí)現(xiàn)板卡的時序邏輯控制,外圍電路包括信號調(diào)理與匹配電路、DDS電路、A/D采集電路、高速FIFO" title="FIFO">FIFO存儲電路、D/A轉(zhuǎn)換電路等。重點(diǎn)介紹了CPLD內(nèi)部功能模塊的實(shí)現(xiàn)。該設(shè)計已成功應(yīng)用于多普勒聲納的PXI測試系統(tǒng)中。
關(guān)鍵詞: 多普勒聲納;PXI總線;S5920;CPLD;FIFO
水下航行器可利用聲波信號的多普勒效應(yīng)進(jìn)行導(dǎo)航,多普勒聲納按一定的角度向海底發(fā)射聲波,利用回波信號的多普勒頻移測得航行器相對于海底的速度,然后通過對地速的積分結(jié)合航向信息就可以獲得導(dǎo)航解[1]。在水下航行器的研制、生產(chǎn)、實(shí)驗(yàn)、驗(yàn)收等環(huán)節(jié)中,經(jīng)常需要對導(dǎo)航聲納的性能參數(shù)進(jìn)行測試,若進(jìn)行實(shí)物的水下航行實(shí)驗(yàn),不僅會花費(fèi)大量的人力、物力和財力,而且實(shí)時參數(shù)的獲取也有一定的困難。本文提出一種利用模塊化的PXI總線測試平臺對水下航行器導(dǎo)航系統(tǒng)進(jìn)行測試的解決方案,使得對導(dǎo)航系統(tǒng)的測試可以在陸上實(shí)驗(yàn)室完成。測試平臺大部分由成熟的通用測試模塊構(gòu)成,其中對回波信號多普勒效應(yīng)的模擬是整個系統(tǒng)設(shè)計的關(guān)鍵環(huán)節(jié),本文通過設(shè)計專門的多普勒聲納回波信號仿真卡實(shí)現(xiàn)[2]。
1 仿真卡的組成與工作原理
1.1 仿真卡組成
仿真卡主要由總線接口芯片、CPLD、門限比較電路、DDS(直接數(shù)字頻率合成)電路、A/D采集電路、FIFO存儲電路、D/A 轉(zhuǎn)換電路以及輸入輸出端的信號調(diào)理與匹配電路等組成。導(dǎo)航系統(tǒng)包括4個安裝在航行器底部的多普勒聲納,因此仿真卡有4個相對獨(dú)立的工作通道,分別模擬多普勒聲納4個不同方向的回波信號,其中一個通道的結(jié)構(gòu)組成如圖1所示。
1.2 工作原理
總線接口芯片S5920實(shí)現(xiàn)仿真卡與PXI測試系統(tǒng)的橋接,可簡化接口部分的設(shè)計。CPLD實(shí)現(xiàn)仿真卡的總體時序邏輯控制。對接換能器輸出的模擬信號在板卡上經(jīng)信號預(yù)處理電路后分為兩路,一路信號送A/D采集電路,另一路信號進(jìn)入門限比較電路。當(dāng)多普勒聲納發(fā)射信號時,對接換能器對應(yīng)有模擬信號輸出,門限比較電路會產(chǎn)生一個觸發(fā)信號送CPLD,CPLD啟動仿真卡的數(shù)據(jù)采集過程。數(shù)據(jù)采集與回波信號模擬的時序邏輯如圖2所示,t1為發(fā)射信號周期,T為發(fā)射脈沖寬度,采集數(shù)據(jù)同時存入4路FIFO存儲器,經(jīng)過t2時間的延遲后由CPLD控制讀取4路FIFO中的數(shù)據(jù)并進(jìn)行D/A轉(zhuǎn)換,然后經(jīng)數(shù)字衰減電路和信號匹配電路后由對接換能器發(fā)射出去。若聲速為c,則該回波信號模擬的是傳播距離為m=ct2/2的回波信號,T′為回波信號的脈沖寬度。
DDS芯片產(chǎn)生A/D采集芯片、FIFO芯片以及D/A轉(zhuǎn)換芯片的工作時鐘,CPLD通過程控DDS產(chǎn)生不同的工作時鐘信號,使得D/A轉(zhuǎn)換時鐘不同于A/D采集時鐘,從而實(shí)現(xiàn)采集數(shù)據(jù)在時間上的拉伸與壓縮,模擬回波信號的多普勒效應(yīng)。真實(shí)回波信號在信道中傳輸后會有不同程度的衰減,因此D/A轉(zhuǎn)換后的數(shù)據(jù)需經(jīng)數(shù)字衰減電路進(jìn)行程控衰減。信號預(yù)處理電路和信號匹配電路的核心都是一級射隨電路。板卡上共有5片DDS,產(chǎn)生5路時鐘信號,DDS0時鐘作為A/D采集時A/D芯片和FIFO芯片的工作時鐘,另4路時鐘DDS1~DDS4作為D/A轉(zhuǎn)換時FIFO芯片和D/A芯片的工作時鐘,DDS芯片和數(shù)字衰減器需經(jīng)CPLD配置參數(shù)才能正常運(yùn)行。
2 主要功能模塊硬件設(shè)計
功能仿真卡硬件設(shè)計要滿足以下指標(biāo):
(1)板卡作為PXI測試系統(tǒng)的一個模塊,與PXI主機(jī)的數(shù)據(jù)交換基于PXI總線;
(2)系統(tǒng)運(yùn)行的邏輯控制和部分芯片的配置功能由CPLD[3]完成;
(3)板卡數(shù)據(jù)采集系統(tǒng)的時鐘由程控的DDS產(chǎn)生,數(shù)據(jù)采集頻率10MHz~40MHz;
(4)采集數(shù)據(jù)的存儲采用高速大容量的FIFO存儲器實(shí)現(xiàn),存儲深度為1MB;
(5)A/D采集和D/A轉(zhuǎn)換采用8bit芯片,工作頻率≥40MHz[4]。
PXI總線是在PCI局部總線的基礎(chǔ)上增加了用于多板同步的觸發(fā)總線和參考時鐘而成的,PXI是PCI總線的一種擴(kuò)展總線,因此完全兼容PCI總線的規(guī)范協(xié)議。利用成熟的PCI模塊,通過軟件兼容性設(shè)計與修改,就可以完成PXI系統(tǒng)的設(shè)計與開發(fā)。由于PCI總線協(xié)議的邏輯時序比較復(fù)雜,這里采用PCI總線接口芯片S5920來實(shí)現(xiàn)接口功能[5]。S5920內(nèi)部配置寄存器的定義信息存儲在外接的EEPROM芯片AT24C02中,系統(tǒng)上電時由操作系統(tǒng)的配置軟件讀取。
CPLD是整個仿真卡的主控模塊,根據(jù)S5920提供的控制信息,控制實(shí)現(xiàn)各部分電路的時序邏輯功能。CPLD采用Altera公司MAX II系列的EPM1270芯片。MAX II CPLD采用類似于FPGA的全新架構(gòu),與傳統(tǒng)的CPLD相比,可以提供給用戶更多的邏輯資源,更多的用戶I/O,同時具有更低的功耗。
DDS采用AD公司的AD9850芯片。AD9850內(nèi)部包含高性能的D/A轉(zhuǎn)換器和高速比較器,通過設(shè)置32bit的頻率控制字,可產(chǎn)生0~40MHz的穩(wěn)定方波信號。射隨電路采用低噪聲、高精度運(yùn)算放大器OP37。門限比較電路采用低偏置電壓的四路比較器LM339,參考電壓由外部基準(zhǔn)源ADR510提供。AD采集部分由寬頻帶電流反饋運(yùn)放OPA681和8bit精度A/D轉(zhuǎn)換芯片ADS831組成,ADS831采用內(nèi)置參考電壓,單極性輸入信號,輸入電壓信號范圍為1.5V~3.5V。FIFO存儲器采用IDT公司512KB的IDT72V2113,為實(shí)現(xiàn)1MB的存儲深度,IDT72V2113設(shè)置成512K×9bit工作方式,并采用兩片進(jìn)行級聯(lián)。AD9709和高速運(yùn)放AD843構(gòu)成D/A轉(zhuǎn)換電路,AD9709是一種雙通道8位D/A轉(zhuǎn)換器,因此4個轉(zhuǎn)換通道只需要兩片AD9709。程控衰減電路采用AD7111N和OP37構(gòu)成的典型應(yīng)用電路,通過鎖存一個字節(jié)的配置數(shù)據(jù),AD7111N可以實(shí)現(xiàn)0~88.5dB的程控衰減,衰減步長為0.375dB。
3 CPLD功能實(shí)現(xiàn)
CPLD模塊的設(shè)計是整個仿真卡的核心,其要實(shí)現(xiàn)的功能包括:(1)接口功能。能夠?qū)崿F(xiàn)CPLD與PCI橋芯片S5920的數(shù)據(jù)通信,并鎖存所預(yù)設(shè)的參數(shù);(2)根據(jù)主機(jī)設(shè)定的參數(shù),正確配置5片DDS和4片數(shù)字衰減器;(3)初始化各外圍芯片,運(yùn)行過程中控制其運(yùn)行狀態(tài),必要時可重新復(fù)位;(4)根據(jù)外部觸發(fā)信號啟動A/D采集,并按照預(yù)設(shè)參數(shù)值適時啟動D/A轉(zhuǎn)換過程。
CPLD的開發(fā)工具采用Altera公司提供的集成開發(fā)工具Quartus II 5.1[6]。設(shè)計方法采用VHDL和原理圖的混合設(shè)計。CPLD控制器的內(nèi)部功能實(shí)現(xiàn)較為復(fù)雜,模塊之間的邏輯聯(lián)系較多,下面僅以接口功能模塊、配置模塊和邏輯控制模塊三個主要部分來介紹CPLD的內(nèi)部功能實(shí)現(xiàn)。
3.1 接口功能模塊
接口模塊的功能主要是使CPLD能夠正確接收主機(jī)的控制和數(shù)據(jù)信息,并對數(shù)據(jù)進(jìn)行鎖存。S5920將PCI總線信號轉(zhuǎn)換成相對簡單的外加總線(ADD_ON_BUS)信號,根據(jù)S5920的不同數(shù)據(jù)傳輸方式,外加總線信號也分為直通通道引腳和郵箱通道引腳兩大類。這里采用直通通道傳輸方式,圖3為直通通道主動操作方式下不使用PTADR#信號的PCI寫時序圖。PTATN信號低電平有效表示一個PCI總線周期正在進(jìn)行;PTBURST信號無效表示未用猝發(fā)傳送方式,而是單周期方式;PTNUM是直通通道的通道號;PTWR信號有效表示是進(jìn)行寫操作;PTBE是直通通道的字節(jié)允許標(biāo)志,指示32位雙字中的哪個字節(jié)有效;DXFR為主動方式傳送完畢信號,其為低電平時表示有數(shù)據(jù)正在傳送,因此接口模塊是在DXFR低電平的時鐘上跳沿時鎖存數(shù)據(jù)。
數(shù)據(jù)傳送采用16位總線方式,低8位是數(shù)據(jù),高8位是地址信息,接口模塊在接收到16位信息后直接對地址譯碼后將數(shù)據(jù)鎖存入存儲區(qū)中的相應(yīng)地址。這些數(shù)據(jù)信息包括系統(tǒng)的運(yùn)行參數(shù)、DDS與數(shù)字衰減器的配置數(shù)據(jù)以及主機(jī)控制板卡工作狀態(tài)的控制信息。同時接口模塊還要提供外加總線的時鐘信號ADCLK作為S5920的工作時鐘。
3.2 配置模塊
系統(tǒng)在啟動或復(fù)位后,需要對DDS和數(shù)字衰減器進(jìn)行配置,配置數(shù)據(jù)由主機(jī)寫入接口模塊進(jìn)行鎖存。由于DDS與數(shù)字衰減器的配置過程類似,這里以相對復(fù)雜的DDS配置過程為例說明相應(yīng)功能的CPLD實(shí)現(xiàn)。
AD9850的配置可采用并行或串行配置方式,這里采用并行方式,配置時序如圖4所示。40bit的配置數(shù)據(jù)分成5個字節(jié),第一個字節(jié)是相位調(diào)制和電源功能信息,后4個字節(jié)是頻率控制字。配置前先由RESET信號對芯片復(fù)位,5個字節(jié)的配置數(shù)據(jù)在W_CLK的上升沿寫入AD9850,F(xiàn)Q_UD是配置結(jié)束信號,AD9850在FQ_UD的上跳沿刷新輸出頻率。
CPLD內(nèi)部的DDS配置模塊的頂層原理圖文件如圖5所示。主要包括一個配置邏輯產(chǎn)生模塊dds_cfg、6bit計數(shù)器lpm_counter0和一個T觸發(fā)器lpm_tff1。5片DDS共用一個dds_reset信號,圖中6位計數(shù)器lpm_count0作為地址發(fā)生器,dds_cfg模塊根據(jù)不同的地址信息讀取配置數(shù)據(jù)并產(chǎn)生如圖5所示的配置邏輯信號。計數(shù)器使能的有效信號由預(yù)設(shè)參數(shù)結(jié)束后的啟動信號begin產(chǎn)生,配置完成后的cnt_clken信號使計數(shù)器使能信號變低,使整個配置模塊停止工作,從而完成配置過程。
3.3 邏輯控制模塊
CPLD的控制功能主要由邏輯控制模塊實(shí)現(xiàn),控制模塊的主要功能示意圖如圖6。4片F(xiàn)IFO的讀空信號(FIFO_OR)取邏輯與后經(jīng)脈沖同步產(chǎn)生一個脈沖復(fù)位信號,這里取與的目的是取最后讀空的FIFO讀空標(biāo)志,同時主機(jī)的控制信號經(jīng)或門也可以對系統(tǒng)進(jìn)行復(fù)位。這樣每個工作周期系統(tǒng)便自動復(fù)位,而主機(jī)也可以隨時對仿真卡進(jìn)行復(fù)位。外部觸發(fā)信號與主機(jī)的控制信號取與后作為計數(shù)器的時鐘使能信號。比較器將計數(shù)器的計數(shù)值與上位機(jī)的預(yù)設(shè)參數(shù)相比較,當(dāng)計數(shù)到預(yù)設(shè)值后產(chǎn)生相應(yīng)的控制信號送時鐘控制模塊。時鐘控制模塊主要是根據(jù)計數(shù)比較結(jié)果、FIFO讀空信號以及外部觸發(fā)信號控制A/D、D/A和FIFO芯片的工作時鐘,以控制各外圍電路的工作,同時時鐘控制模塊還對DDS產(chǎn)生的時鐘信號進(jìn)行必要的整形或反相,以滿足外圍電路正常工作的時序要求。
4 CPLD內(nèi)部設(shè)計仿真與板卡調(diào)試
CPLD內(nèi)部設(shè)計的功能仿真和時序仿真都通過Quartus II集成的仿真工具進(jìn)行。由于時序仿真包含了布局布線后的延時信息,能夠真實(shí)地反映芯片的工作情況。時序仿真前,需要編輯完整的測試激勵文件,設(shè)置正確的時序約束參數(shù),如設(shè)置具有一定裕量的時鐘周期、時鐘建立時間、時鐘保持時間等,剪除非相關(guān)時鐘域中的時序路徑,并將內(nèi)部非時鐘路徑的T觸發(fā)器輸入端管腳設(shè)置為非時鐘等。最終時序仿真的結(jié)果完全能夠滿足設(shè)計的功能要求與時序要求。
由于在Windows XP系統(tǒng)中應(yīng)用程序無法直接對硬件端口進(jìn)行操作,因此需要編寫專用的驅(qū)動程序。這里采用目前應(yīng)用廣泛的WinDriver開發(fā)工具,利用它的向?qū)Чぞ?,不需要深入了解操作系統(tǒng)的整個內(nèi)核體系結(jié)構(gòu),就可以開發(fā)出高質(zhì)量的驅(qū)動程序,應(yīng)用程序采用Visual C++開發(fā)。將仿真卡在整個PXI測試系統(tǒng)中進(jìn)行調(diào)試,發(fā)現(xiàn)該板卡能夠完全滿足最初的設(shè)計要求,且運(yùn)行穩(wěn)定可靠。
基于CPLD多普勒聲納回波信號仿真卡的研制,滿足了設(shè)計指標(biāo)要求,特別是CPLD的應(yīng)用使得整個板卡具有結(jié)構(gòu)簡單、成本低、可靠性高等優(yōu)點(diǎn)。該仿真卡現(xiàn)在已成功應(yīng)用于對某水下航行器多普勒導(dǎo)航聲納進(jìn)行陸上檢測的PXI測試系統(tǒng)中,并取得了良好的效果。
參考文獻(xiàn)
[1] 李俊,沈安文.基于多普勒速度聲納的水下航行器導(dǎo)航方法[J].華中科技大學(xué)學(xué)報,2004,(1):73-75.
[2] 謝志剛,陳自力.PXI總線數(shù)字輸入/輸出模塊的設(shè)計與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2005,(2):67-69.
[3] MAX II Device Handbook Data Sheet.2004,4.
[4] 王立欣,劉雙寶.基于PCI總線的100MSps,256MBit數(shù)據(jù)采集系統(tǒng)[J].哈爾濱工業(yè)大學(xué)學(xué)報,2005,(2):246-248.
[5] AMCC S5920 32-Bit PCI Bus Target Interface Data Sheet.1998,10.
[6] 王誠,吳繼華.Altera FPGA/CPLD設(shè)計(基礎(chǔ)篇、高級篇)[M].北京:人民郵電出版社,2005.