基于CPCI和光纖接口的數(shù)據(jù)采集卡設(shè)計(jì)與實(shí)現(xiàn)
摘要:設(shè)計(jì)了一套基于CPCI總線,PCI9054橋接芯片和可編程邏輯器件(FPGA)的高速數(shù)據(jù)采集卡。FPGA作為本地主控芯片,根據(jù)工控機(jī)經(jīng)PCI9054轉(zhuǎn)發(fā)的采集命令,通過(guò)光纖接口實(shí)現(xiàn)與雷達(dá)接收機(jī)的通信。采用高速RAM緩存數(shù)據(jù),采集的接收機(jī)測(cè)試數(shù)據(jù)的分析結(jié)果可在工控機(jī)上顯示,從而實(shí)現(xiàn)了對(duì)雷達(dá)接收機(jī)性能的快速測(cè)試。該采集卡具有較強(qiáng)的通用性和可擴(kuò)展性,詳細(xì)介紹了高速數(shù)據(jù)采集卡的組成和工作原理、硬件設(shè)計(jì)。
關(guān)鍵詞:光纖接口;CPCI總線;PCI9054;FPGA;雷達(dá)接收機(jī)測(cè)試
隨著雷達(dá)技術(shù)的發(fā)展和雷達(dá)型號(hào)的增多,現(xiàn)代雷達(dá)接收機(jī)數(shù)據(jù)處理速度顯著提高。因此,在雷達(dá)接收機(jī)的測(cè)試和維護(hù)中,對(duì)接收機(jī)測(cè)試系統(tǒng)的數(shù)據(jù)處理能力、可擴(kuò)展性等性能要求也在不斷提高。傳統(tǒng)的雷達(dá)接收機(jī)測(cè)試系統(tǒng)由于專用性強(qiáng)、兼容性差、擴(kuò)展能力不足,而CPCI總線的通用性、高可靠性和抗震動(dòng)性使其在雷達(dá)信號(hào)處理板中得到廣泛的應(yīng)用。同時(shí),由于傳輸高速雷達(dá)信號(hào)的需求,光纖在雷達(dá)系統(tǒng)中得到了廣泛的應(yīng)用?;谝陨戏治?,本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于光纖接口,使用CPCI總線通信的高速、通用性強(qiáng)的高速數(shù)據(jù)采集卡。通過(guò)實(shí)際測(cè)試,該采集卡可以很好地完成數(shù)據(jù)采集等雷達(dá)接收機(jī)測(cè)試的功能,并具有較好的通用性和可擴(kuò)展性。
1 系統(tǒng)設(shè)計(jì)
高速數(shù)據(jù)采集卡主要由StratixⅡGX FPGA、光纖接口、SRAM、PCI9054橋接芯片等構(gòu)成。本系統(tǒng)設(shè)計(jì)的目的是應(yīng)用于雷達(dá)數(shù)據(jù)的采集和分析,為了高速、可靠地傳輸雷達(dá)信號(hào),決定采用光纖作為傳輸媒介,充分利用光纖傳輸損耗小、抗干擾能力強(qiáng)、傳輸速率高等優(yōu)點(diǎn)。
采用FPGA作為信號(hào)采集系統(tǒng)的核心,這種方式最大的優(yōu)點(diǎn)就是結(jié)構(gòu)靈活,有較強(qiáng)的通用性,適合模塊化設(shè)計(jì),能夠提高效率,同時(shí)其開(kāi)發(fā)周期較短,系統(tǒng)容易維護(hù)和擴(kuò)展。圖1是該系統(tǒng)的硬件框圖。
其工作流程如下:PC機(jī)通過(guò)CPCI接口將采集命令等送入FPGA,F(xiàn)PGA對(duì)命令進(jìn)行譯碼,通過(guò)光纖接口向雷達(dá)接收機(jī)發(fā)出參數(shù)設(shè)置命令,然后通過(guò)光纖接口接收采集的雷達(dá)接收機(jī)數(shù)據(jù)。光纖接口將光信號(hào)轉(zhuǎn)換成串行電信號(hào)送入FPGA,F(xiàn)PGA對(duì)數(shù)據(jù)進(jìn)行串/并轉(zhuǎn)換、數(shù)據(jù)緩沖等所必須的信號(hào)處理過(guò)程,然后存儲(chǔ)到高速RAM中。當(dāng)計(jì)算機(jī)發(fā)出數(shù)據(jù)傳輸命令后,再將數(shù)據(jù)通過(guò)CPCI總線送入計(jì)算機(jī)進(jìn)行存儲(chǔ)、分析處理和顯示等。同時(shí)系統(tǒng)還保留了一部分電信號(hào)的接口,便于和現(xiàn)有的系統(tǒng)兼容。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 時(shí)鐘設(shè)計(jì)
系統(tǒng)中FPGA的時(shí)鐘信號(hào)由一個(gè)125 MHz晶振直接提供,PCI9054的時(shí)鐘由一個(gè)40 MHz晶振提供。高速RAM和光纖接口的時(shí)鐘信號(hào)則是由FPGA通過(guò)內(nèi)部的PLL提供。因?yàn)闀r(shí)鐘信號(hào)是非常敏感的信號(hào),所以要盡量減少反射和串?dāng)_等一些問(wèn)題。在時(shí)鐘信號(hào)線上串接適當(dāng)?shù)钠ヅ潆娮杩梢杂行У販p少反射,減少串?dāng)_則需要在時(shí)鐘走線周圍留出額外的空間。在本設(shè)計(jì)中,將時(shí)鐘線單獨(dú)放在兩個(gè)地平面層中間的一層,保證了時(shí)鐘信號(hào)的完整性。
2.2 CPCI接口設(shè)計(jì)
目前,PCI接口的設(shè)計(jì)有兩種方法,一種為使用專用的PCI接口芯片來(lái)設(shè)計(jì),這種方法相對(duì)來(lái)說(shuō)較為簡(jiǎn)單;另一種方法是利用FPGA進(jìn)行設(shè)計(jì),這種方法比較復(fù)雜,開(kāi)發(fā)難度較大。本設(shè)計(jì)采用第一種方法,即采用PCI9054接口芯片實(shí)現(xiàn)PCI總線。
PCI9054芯片適用于通用的32位、33 MHz的局部總線設(shè)計(jì)。它的本地總線可為三種模式:M模式,C模式和J模式,可利用模式選擇引腳加以選擇。本設(shè)計(jì)選用C模式,即32位的地址/數(shù)據(jù)總線非復(fù)用。
PCI9054提供了三種物理總線接口:PCI總線接口、LOCAL總線接口、串行EPROM接口。CPCI接口設(shè)計(jì)思路是:FPGA通過(guò)PCI9054與PCI總線相連,在FPGA內(nèi)部實(shí)現(xiàn)PCI本地端的時(shí)序控制。PCI9054芯片內(nèi)部2個(gè)獨(dú)立DMA通道,可以實(shí)現(xiàn)系統(tǒng)數(shù)據(jù)在PC機(jī)內(nèi)存與數(shù)據(jù)采集卡之間的高速傳輸。PCI9054接口電路如圖2所示。
[!--empirenews.page--]
CPCI數(shù)據(jù)采集卡的上電工作流程是:將PCI卡插到工控機(jī)插槽中后系統(tǒng)上電自檢,此時(shí)PCI9054的RST#復(fù)位,PCI9054芯片檢測(cè)E2PROM是否存在,如果存在,PCI9054會(huì)根據(jù)E2PROM的配置信息初始化其內(nèi)部寄存器,BIOS根據(jù)PCI9054配置寄存器的內(nèi)容進(jìn)行系統(tǒng)資源分配,進(jìn)入系統(tǒng)后安裝PCI9054驅(qū)動(dòng)。由以上進(jìn)程可以看出,E2PROM的配置對(duì)于CPCI的正常工作起著重要的作用。
E2PROM配置信息主要包括以下兩部分:PCI配置寄存器填寫(xiě)生產(chǎn)商ID號(hào)、器件ID號(hào)、類碼子系統(tǒng)ID號(hào)和子系統(tǒng)生產(chǎn)商ID號(hào);本地配置寄存器的配置,即對(duì)本地地址空間及其本地總線屬性的配置。
2.3 光纖接口設(shè)計(jì)
光電轉(zhuǎn)換驅(qū)動(dòng)器選用LTP-ST11MB。這款芯片數(shù)據(jù)速率高達(dá)2.5 GHz,兼容光纖通道協(xié)議,具有良好的EMI性能。由于該芯片差分輸出信號(hào)的電平是LVPECL或PECL的,所以要采用AC耦合電路來(lái)完成兩種電平的轉(zhuǎn)換。耦合電容如果選的太大,將嚴(yán)重減緩信號(hào)的傳輸速度,且由于充放電時(shí)問(wèn)過(guò)長(zhǎng),對(duì)高速信號(hào)的響應(yīng)將變得很壞;如果太小,將改變線路的阻抗特性,增大衰減。綜合考慮,耦合電容的容值在0.01μF比較適當(dāng)。光纖接口的供電部分要注意的是,發(fā)送器和接收器最好采用獨(dú)立的電源。光纖接口的外圍電路配置如圖3所示。
[!--empirenews.page--]
2.4 SRAM讀寫(xiě)設(shè)計(jì)
RAM有多種寫(xiě)的模式,可以按位擦寫(xiě)也可以按區(qū)塊擦寫(xiě)。本系統(tǒng)選用相對(duì)簡(jiǎn)單快速的連續(xù)寫(xiě)的模式,此種模式需要一開(kāi)始就向RAM依次寫(xiě)入控制字,然后每個(gè)時(shí)鐘信號(hào)寫(xiě)入一個(gè)字。讀操作只要各控制線置位正確讀取相應(yīng)地址位的數(shù)據(jù),不需輸入控制序列脈沖通過(guò)CE的變化來(lái)判斷讀。
RAM的讀操作時(shí)序如圖4所示。
2.5 FPGA控制程序的設(shè)計(jì)
如前面所述,F(xiàn)PGA主要完成時(shí)序協(xié)調(diào)和傳輸控制以及數(shù)據(jù)流的串/并轉(zhuǎn)換和緩存,如圖5所示。
FPGA選用Altera公司的StratixⅡGX系列,內(nèi)部帶有高速收發(fā)通道,可支持高速串行數(shù)據(jù)的傳輸;有多達(dá)20個(gè)嵌入3.125 Gb/s收發(fā)器和45個(gè)差分I/O,適合于高吞吐量的數(shù)據(jù)通道,包括高速背板和芯片間通信。該系列器件的嵌入收發(fā)器模塊采用通用技術(shù)和一些需要時(shí)鐘數(shù)據(jù)恢復(fù)(CDR)技術(shù)的新興接口之間接收和發(fā)送數(shù)據(jù)。每個(gè)收發(fā)器模塊具有四個(gè)全雙工通道串行編碼和同步數(shù)據(jù),在外部環(huán)境和StratixⅡGX器件
通道之間傳送。StratixⅡGX器件支持多種協(xié)議,包括10 Gb以太網(wǎng)XAUI,InfiniBand和SONET/SDH。同時(shí)內(nèi)置高速DSP模塊,可實(shí)現(xiàn)快速的乘法操作及FIR濾波器等功能,便于進(jìn)行數(shù)據(jù)的快速處理。
根據(jù)系統(tǒng)主要的功能,F(xiàn)PGA控制程序主要包括時(shí)鐘模塊、數(shù)據(jù)處理模塊、RAM讀寫(xiě)控制模塊、CPCI總線控制模塊、光纖接口模塊和其他接口控制等。
時(shí)鐘模塊主要將輸入的時(shí)鐘信號(hào)進(jìn)行整形,并利用FPGA內(nèi)部的PLL,配置全局和局部時(shí)鐘,為各個(gè)模塊提供所需的時(shí)鐘信號(hào)。StratixⅡ GX FPGA系列具有8個(gè)鎖相環(huán)(PLL)和16個(gè)全局時(shí)鐘網(wǎng)絡(luò),提供含有多級(jí)時(shí)鐘結(jié)構(gòu)的完整時(shí)鐘管理解決方案。在本設(shè)計(jì)中,使用了Quartus軟件中內(nèi)置的PLL模塊,以簡(jiǎn)化設(shè)計(jì)。圖6為PLL模塊部分。
數(shù)據(jù)處理模塊將各部分送來(lái)的數(shù)據(jù)進(jìn)行相應(yīng)的處理操作,包括指令譯碼、數(shù)據(jù)格式轉(zhuǎn)換等,是整個(gè)控制程序的核心。
RAM讀寫(xiě)模塊負(fù)責(zé)數(shù)據(jù)的存儲(chǔ),根據(jù)數(shù)據(jù)處理模塊的命令,向RAM中寫(xiě)入數(shù)據(jù)或者將RAM中的數(shù)據(jù)讀出并送往其他模塊。
CPCI總線控制模塊負(fù)責(zé)FPGA和PCI9054接口芯片的通信,實(shí)現(xiàn)PCI本地端的時(shí)序控制,完成接收機(jī)測(cè)試數(shù)據(jù)和設(shè)置命令的傳輸?shù)取?br />
光纖接口模塊使用StratixⅡGX內(nèi)部的嵌入式千兆位收發(fā)器功能模塊,接收光纖接口傳來(lái)的高速串行信號(hào),同時(shí)在FPGA內(nèi)部實(shí)現(xiàn)自定義的收發(fā)協(xié)議,完成解包頭、解波門(mén)、分IQ路等功能。程序中使用了Quartus軟件中的ALTGXB模塊,部分設(shè)計(jì)如圖7所示。
除此之外,因?yàn)楸A袅艘徊糠蛛娊涌?,F(xiàn)PGA程序還有一個(gè)接口控制模塊,以實(shí)現(xiàn)原有的電接口相關(guān)功能,保證數(shù)據(jù)采集卡可以和較早型號(hào)的接收機(jī)測(cè)試系統(tǒng)保持兼容。[!--empirenews.page--]
3 CPCI驅(qū)動(dòng)的開(kāi)發(fā)
開(kāi)發(fā)基于PCI的數(shù)據(jù)采集卡的驅(qū)動(dòng)程序,主要有三個(gè)方面的問(wèn)題:硬件訪問(wèn)、中斷處理和DMA傳輸。
結(jié)合實(shí)際要求,從開(kāi)發(fā)效率和驅(qū)動(dòng)程序的執(zhí)行效率兩方面考慮,這里選擇使用DriverStudio進(jìn)行驅(qū)動(dòng)程序的開(kāi)發(fā)。DriverStudio是一整套開(kāi)發(fā)、調(diào)試和檢測(cè)Windows平臺(tái)下設(shè)備驅(qū)動(dòng)程序的工具軟件包。它提供了一套完整的調(diào)試和性能測(cè)試工具,例如Driver Works,Drivet Monitor和SoftICE等。DriverWorks把微軟的DDK用類的形式進(jìn)行封裝,簡(jiǎn)化了WDM驅(qū)動(dòng)程序的開(kāi)發(fā),使用非常方便;SoftICE用來(lái)調(diào)試內(nèi)核模式的驅(qū)動(dòng)程序;DriverMonitor可以很方便地觀察驅(qū)動(dòng)程序的調(diào)試信息。DriverStudio所具備的高性能工具和對(duì)現(xiàn)代軟件工程的實(shí)踐,很大程度上方便了設(shè)備驅(qū)動(dòng)程序的編寫(xiě)。所以選擇DriverStudio開(kāi)發(fā)設(shè)備驅(qū)動(dòng)程序。
下面以DMA傳輸為例,介紹CPCI驅(qū)動(dòng)程序的開(kāi)發(fā):
編寫(xiě)WDM驅(qū)動(dòng)程序的DMA傳輸有特定的機(jī)制。DriverStudio中DMA整體的流程大致如下:當(dāng)應(yīng)用程序發(fā)出IRP_M J_READ的Irp后,驅(qū)動(dòng)程序調(diào)用Irp的處理函數(shù)Handler,在這個(gè)Handler中初始化KDMATransfer,初始化完畢就調(diào)用DMAReady()函數(shù),在DMAReady()函數(shù)中啟動(dòng)首次DMA傳輸即StartDMA,傳輸完后發(fā)生中斷,在中斷里調(diào)用Continue()啟動(dòng)下次傳輸,直到全部數(shù)據(jù)完成。DMA過(guò)程的流程圖如圖8所示。
4 結(jié)語(yǔ)
文中設(shè)計(jì)的基于CPCI總線的通用雷達(dá)接收機(jī)測(cè)試系統(tǒng),采用了光纖作為雷達(dá)數(shù)據(jù)傳輸?shù)耐ǖ?,具有較好的數(shù)據(jù)處理能力。實(shí)驗(yàn)證明該系統(tǒng)的軟硬件設(shè)計(jì)是成功的,可對(duì)多型雷達(dá)的性能進(jìn)行快速的測(cè)試。該設(shè)計(jì)對(duì)于數(shù)據(jù)處理要求高、實(shí)時(shí)性強(qiáng)、數(shù)據(jù)量大、處理算法復(fù)雜多變的雷達(dá)信號(hào)處理系統(tǒng),有著重要的實(shí)際意義,具有廣闊的應(yīng)用前景。