《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于CPCI總線的雷達(dá)數(shù)據(jù)傳輸接口設(shè)計(jì)
基于CPCI總線的雷達(dá)數(shù)據(jù)傳輸接口設(shè)計(jì)
2014年電子技術(shù)應(yīng)用第6期
魏 巍, 王 勤, 陳少平
1. 中南民族大學(xué) 智能無(wú)線通信湖北省重點(diǎn)實(shí)驗(yàn)室, 湖北 武漢430074) 2. 中南民族大學(xué) 電
摘要: 針對(duì)某雷達(dá)系統(tǒng)數(shù)據(jù)傳輸與控制的需求,提出了一種基于CPCI總線的雷達(dá)接收機(jī)數(shù)據(jù)傳輸接口實(shí)現(xiàn)方案。主要包括外圍板卡端基于FPGA+PCI橋芯片架構(gòu)的CPCI總線接口電路設(shè)計(jì),主控板卡端基于WDM框架的驅(qū)動(dòng)程序開(kāi)發(fā)。測(cè)試結(jié)果表明,主控板卡能夠有效完成與外圍板卡間的數(shù)據(jù)傳輸與控制,性能指標(biāo)符合系統(tǒng)設(shè)計(jì)要求。
關(guān)鍵詞: CPCI PCI9054 FPGA WDM驅(qū)動(dòng)
中圖分類號(hào): TN958
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2014)06-0085-04
The design of radar data transfer interface based on CPCI bus
Wei Wei, Wang Qin, Chen Shaoping
1. Hubei Key Laboratory of Intelligent Wireless Communications, South-Central University for Nationalities,Wuhan, 430074, China;2. College of Electronics and Information Engineering, South-Central University for Nationalities, Wuhan 430074, China
Abstract: According to the need of radar system data transfer and control, a scheme of radar receiver’s data transfer interface based on CPCI bus is presented. It includes CPCI bus interface circuit design of peripheral board based on the architecture of FPGA and PCI bridge chip; the driver design of main control board based on WDM framework. The experimental results show that the main control board and peripheral board can transfer data to each other efficiently, which meets the requirements of system.
Key words : CPCI; PCI9054; FPGA; WDM driver

       近年來(lái),隨著信息技術(shù)的不斷發(fā)展,通信、網(wǎng)絡(luò)、雷達(dá)、遙測(cè)遙感等諸多領(lǐng)域都面臨著數(shù)據(jù)量日趨龐大的問(wèn)題,這對(duì)數(shù)據(jù)傳輸技術(shù)也提出了更高的要求。尤其在雷達(dá)領(lǐng)域,雷達(dá)新體制新技術(shù)的提出與應(yīng)用,如數(shù)字波束形成技術(shù)、高速A/D轉(zhuǎn)換器件的應(yīng)用等等,使得雷達(dá)系統(tǒng)所需處理的信號(hào)通道數(shù)越來(lái)越多,數(shù)據(jù)率也越來(lái)越大,龐大數(shù)據(jù)量的實(shí)時(shí)傳輸逐漸成為制約雷達(dá)系統(tǒng)性能的瓶頸之一。當(dāng)前,高速數(shù)據(jù)傳輸技術(shù)已經(jīng)成為了人們研究的熱點(diǎn)問(wèn)題。

        CPCI(Compact PCI)總線是國(guó)際工業(yè)計(jì)算機(jī)制造者聯(lián)合會(huì)PICMG(PCI Industrial Computer Manufacturer’s Group)提出的一種高性能工業(yè)總線接口標(biāo)準(zhǔn)[1]。與傳統(tǒng)的工業(yè)計(jì)算機(jī)總線相比,CPCI總線具備以下幾個(gè)優(yōu)點(diǎn):(1)傳輸速率高。從總線速度上看,32 bit/33 MHz的CPCI總線最大傳輸速度為132 MB/s;對(duì)于64 bit/66 MHz CPCI總線則峰值速度可達(dá)528 MB/s。(2)與PCI總線標(biāo)準(zhǔn)完全兼容,有利于用戶將基于PCI總線開(kāi)發(fā)的成熟技術(shù)與產(chǎn)品向工業(yè)設(shè)備上推廣。(3)采用歐插機(jī)械結(jié)構(gòu)標(biāo)準(zhǔn),具備良好的耐用性、散熱性、抗震性和易維護(hù)性等性能,適合工控、軍事、電信等惡劣工作環(huán)境的使用。此外其還具有高擴(kuò)展、支持熱插拔等性能。CPCI總線的種種特性使得該技術(shù)在雷達(dá)、通信、控制等領(lǐng)域都得到了廣泛應(yīng)用[2-4]。

        本文以CPCI總線接口設(shè)計(jì)作為研究對(duì)象,針對(duì)某雷達(dá)系統(tǒng)數(shù)據(jù)傳輸與控制的需求,完成了雷達(dá)接收機(jī)數(shù)據(jù)傳輸接口的設(shè)計(jì)與開(kāi)發(fā),為雷達(dá)系統(tǒng)各板卡間的正常通信提供了保障。

1 系統(tǒng)需求

        該雷達(dá)系統(tǒng)的結(jié)構(gòu)框圖如圖1所示,系統(tǒng)涵蓋主控板卡,數(shù)據(jù)采集板卡、同步控制板卡和頻率合成板卡等多種不同類型的外圍板卡。其中主控板卡負(fù)責(zé)收集多塊數(shù)據(jù)采集板卡的數(shù)據(jù)進(jìn)行后續(xù)信號(hào)處理,以及完成對(duì)所有外圍板卡的參數(shù)配置與控制。主控板與外圍板卡的通信通過(guò)數(shù)據(jù)總線來(lái)完成。經(jīng)過(guò)分析,得知多塊數(shù)據(jù)采集板卡向主控板上傳數(shù)據(jù)的最大傳輸速率和不超過(guò)10 MB/s,而主控板下發(fā)控制參數(shù)信息至外圍板卡的傳輸速率則要求更低。因此CPCI總線的傳輸速率足以勝任系統(tǒng)需求。

        該雷達(dá)系統(tǒng)的主控板卡為外購(gòu)產(chǎn)品,因此設(shè)計(jì)的重點(diǎn)在于外圍板卡端的數(shù)據(jù)總線接口設(shè)計(jì)以及主控板卡端的驅(qū)動(dòng)開(kāi)發(fā)。此外對(duì)于雷達(dá)外圍板卡端而言,雖然可分為多塊不同類型的板卡,功能不同,但其CPCI總線接口電路的設(shè)計(jì)應(yīng)基本一致,保證版本的統(tǒng)一性,方便調(diào)試與維護(hù)。

2 硬件設(shè)計(jì)

        目前常見(jiàn)的CPCI總線接口實(shí)現(xiàn)方案有多種:(1)FPGA IPcore方案,可用各大FPGA公司提供的PCI總線接口IP核來(lái)完成。該方案結(jié)構(gòu)簡(jiǎn)單,無(wú)需關(guān)心PCI總線協(xié)議,但需要購(gòu)買使用許可,費(fèi)用較高。(2)在FPGA內(nèi)自己實(shí)現(xiàn)PCI協(xié)議及相應(yīng)邏輯功能[5],該方案電路設(shè)計(jì)簡(jiǎn)單,費(fèi)用較低,但開(kāi)發(fā)難度較高,研發(fā)周期過(guò)長(zhǎng)。(3)PCI橋芯片+FPGA架構(gòu)方案[2-3,6],該方案電路結(jié)構(gòu)較前兩者相對(duì)復(fù)雜一些,但因使用了橋芯片,無(wú)需太多關(guān)心PCI總線協(xié)議,研發(fā)周期快,且費(fèi)用較低。綜合以上因素,選取了第三種方案搭建硬件接口電路,其結(jié)構(gòu)框圖如圖2所示。

        其中PCI橋芯片完成CPCI總線與本地端總線的協(xié)議轉(zhuǎn)換,在這里選擇了PLX Technology公司32 bit寬/33 MHz低成本PCI橋芯片PCI9054。FPGA主要負(fù)責(zé)數(shù)據(jù)的緩沖與轉(zhuǎn)發(fā),并對(duì)PCI9054進(jìn)行相應(yīng)的控制操作。當(dāng)外圍板卡即本地端用戶功能設(shè)備上傳數(shù)據(jù)時(shí),F(xiàn)PGA通過(guò)內(nèi)部開(kāi)設(shè)的緩沖區(qū),將用戶端的數(shù)據(jù)進(jìn)行打包發(fā)送給PCI9054,由PCI芯片轉(zhuǎn)換成CPCI總線協(xié)議數(shù)據(jù)上傳至主控板卡端。當(dāng)主控端發(fā)送控制指令時(shí),F(xiàn)PGA同樣在獲得PCI芯片的本地總線數(shù)據(jù)后,發(fā)送至本地端用戶功能設(shè)備中。此外EEPOM與FPGA配置芯片分別完成上電時(shí)對(duì)PCI芯片以及FPGA的參數(shù)配置與初始化。

        PCI9054負(fù)責(zé)完成主控板與外圍板端FPGA之間的通信,其主要控制步驟如下:

        (1)主控板向外圍板發(fā)出讀寫請(qǐng)求時(shí),PCI9054向FPGA發(fā)出申請(qǐng)本地總線信號(hào)LHOLD(高有效)。

        (2) FPGA檢測(cè)到LHOLD有效后,若本地總線空閑,即對(duì)PCI9054回應(yīng)總線應(yīng)答信號(hào)LHOLDA(高有效),表示申請(qǐng)本地總線有效。

        (3)PCI9054檢測(cè)到申請(qǐng)總線有效后,給出地址有效信號(hào)ADS(低有效),同時(shí)給出讀寫的地址。

        (4)FPGA檢測(cè)到ADS后,根據(jù)PCI9054的讀寫控制信號(hào)LW/R(高為讀,低為寫),進(jìn)行讀寫數(shù)據(jù)操作;并同時(shí)向PCI9054發(fā)送數(shù)據(jù)有效信號(hào)READY(低有效)。此時(shí)PCI橋芯片根據(jù)讀寫要求,將數(shù)據(jù)發(fā)送至FPGA或上傳至主控板。

        (5)當(dāng)傳輸最后一個(gè)數(shù)據(jù)時(shí),PCI9054 將BLAST指示信號(hào)置低(低有效)。FPGA隨即在下一個(gè)時(shí)鐘將READY信號(hào)拉高表示傳輸結(jié)束。

        (6)當(dāng)PCI9054檢測(cè)到READY為高電平時(shí)放棄本地總線,結(jié)束通信。

        在主控板卡與外圍板卡的數(shù)據(jù)傳輸過(guò)程中,F(xiàn)PGA開(kāi)設(shè)有雙口RAM作為數(shù)據(jù)緩沖區(qū),本地端功能設(shè)備和PCI芯片均可對(duì)其進(jìn)行讀寫操作。設(shè)計(jì)采用乒乓操作工作模式,避免兩者對(duì)同一地址同時(shí)讀寫的沖突。此外在硬件電路設(shè)計(jì)中,針對(duì)該雷達(dá)不同類型的外圍板卡所需緩沖數(shù)據(jù)塊大小的需求不盡相同的情況,通過(guò)選用同系列、同封裝、不同資源的FPGA芯片,統(tǒng)一考慮它們的電源、地以及I/O管腳的分布情況,綜合設(shè)計(jì)電路版圖,使得同一塊PCB板上可以根據(jù)不同需求焊接合適資源的FPGA芯片。該設(shè)計(jì)既有效降低了成本,又便于以后的維護(hù)與升級(jí)。

3 驅(qū)動(dòng)開(kāi)發(fā)

3.1 WDM驅(qū)動(dòng)簡(jiǎn)介

        雷達(dá)系統(tǒng)的主控板卡采用Windows XP 操作系統(tǒng)。在該操作系統(tǒng)平臺(tái)上,應(yīng)用程序直接訪問(wèn)硬件設(shè)備是受限制的,必須獲得可工作在Windows系統(tǒng)內(nèi)核下的驅(qū)動(dòng)程序的支持。綜合考慮選用WDM驅(qū)動(dòng)框架模式,完成了CPCI總線數(shù)據(jù)接口的驅(qū)動(dòng)開(kāi)發(fā)。WDM模型驅(qū)動(dòng)是微軟公司為Windows系統(tǒng)下的設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)提供的一種靈活、簡(jiǎn)化的驅(qū)動(dòng)模型,能有效降低所必需開(kāi)發(fā)的驅(qū)動(dòng)程序的數(shù)量以及復(fù)雜性[7]。

        在WDM驅(qū)動(dòng)下訪問(wèn)硬件設(shè)備時(shí),應(yīng)用程序通過(guò)調(diào)用Win32API函數(shù)產(chǎn)生控制命令,操作系統(tǒng)的I/O管理器將獲取的控制命令轉(zhuǎn)化為對(duì)應(yīng)的IRP(I/O處理請(qǐng)求包)送給驅(qū)動(dòng)程序的入口點(diǎn)。IRP是Windows內(nèi)核中一種非常重要的數(shù)據(jù)結(jié)構(gòu),它包含了應(yīng)用程序發(fā)出控制命令的信息,不同的IRP會(huì)根據(jù)類型被分到驅(qū)動(dòng)的不同例程中進(jìn)行處理[8]。隨后驅(qū)動(dòng)程序通過(guò)硬件抽象層(HAL)調(diào)用來(lái)訪問(wèn)硬件設(shè)備。當(dāng)IRP結(jié)束時(shí),驅(qū)動(dòng)調(diào)用IoCompleteRequest函數(shù)通知I/O管理器,并向I/O管理器返回相關(guān)參數(shù)及數(shù)據(jù),應(yīng)用程序回讀數(shù)據(jù),完成本次操作。圖3為應(yīng)用程序通過(guò)調(diào)用WDM驅(qū)動(dòng)程序與底層硬件進(jìn)行通信的整個(gè)過(guò)程(灰色部分為論文需設(shè)計(jì)研發(fā)的工作)。

3.2 WDM驅(qū)動(dòng)功能實(shí)現(xiàn)

        論文利用Driver Studio工具,調(diào)用其自帶的Driver wizard設(shè)置向?qū)蒞DM驅(qū)動(dòng)框架[9],并根據(jù)雷達(dá)系統(tǒng)的硬件設(shè)備情況添加相應(yīng)的代碼。驅(qū)動(dòng)實(shí)現(xiàn)的功能主要包括三個(gè)部分:硬件訪問(wèn)、中斷處理與DMA傳輸。

3.2.1 硬件訪問(wèn)

        硬件訪問(wèn)是指對(duì)硬件設(shè)備實(shí)現(xiàn)基本的識(shí)別與訪問(wèn)功能。WDM驅(qū)動(dòng)可以通過(guò)GUID接口方式或符號(hào)鏈接名方式來(lái)獲取有效的設(shè)備句柄,從而識(shí)別、打開(kāi)或關(guān)閉設(shè)備。在前者方案中,每塊板卡需要生成對(duì)應(yīng)不同GUID標(biāo)識(shí)符的驅(qū)動(dòng),打開(kāi)設(shè)備比較繁瑣;對(duì)于后者,所有板卡通用一個(gè)驅(qū)動(dòng)程序,只根據(jù)板卡在不同的插槽位置對(duì)應(yīng)不同的符號(hào)鏈接名打開(kāi)設(shè)備。相比較而言獲取設(shè)備句柄更為簡(jiǎn)單。論文采用符號(hào)鏈接名方式實(shí)現(xiàn)設(shè)備的識(shí)別。

        對(duì)于硬件的訪問(wèn),在X86處理器中存在兩套獨(dú)立的地址空間:內(nèi)存地址和I/O地址。PCI橋芯片將本地端內(nèi)存單元通過(guò)映射的方式定位到這兩種獨(dú)立的地址空間。在驅(qū)動(dòng)程序中,可通過(guò)調(diào)用WDM驅(qū)動(dòng)框架提供的KIoRange類(對(duì)I/O映射空間的訪問(wèn))和KMemoryRange類(對(duì)內(nèi)存映射空間的訪問(wèn))來(lái)實(shí)現(xiàn)對(duì)映射的訪問(wèn)。

        本文通過(guò)調(diào)用KIoRange類對(duì)I/O映射空間訪問(wèn),實(shí)現(xiàn)對(duì)硬件的操作。打開(kāi)設(shè)備后,應(yīng)用程序可通過(guò)Win32的API函數(shù)DeviceIoControl向驅(qū)動(dòng)發(fā)起相應(yīng)的控制命令和參數(shù)。驅(qū)動(dòng)獲取命令及參數(shù)后通過(guò)KIoRange類的成員函數(shù)FORM.outd(ULONG ByteOffset,ULONG Data)對(duì)寄存器進(jìn)行操作。例如配置PCI9054的中斷寄存器:

        m_IoPortRange0.outd(INTCSR, mm_Data);

INTCSR為定義的中斷寄存器,mm_Data為獲得的需要修改的中斷寄存器參數(shù)。

3.2.2 中斷處理

        系統(tǒng)主要存在兩類中斷需要處理:(1)數(shù)據(jù)采集板卡請(qǐng)求數(shù)據(jù)上傳時(shí)所生成的本地中斷;(2)PCI9054完成了DMA傳輸后產(chǎn)生的DMA中斷。WDM框架驅(qū)動(dòng)將中斷的處理封裝成類KInterrupt。進(jìn)入中斷服務(wù)例程前,通過(guò)調(diào)用KInterrupt的成員函數(shù)InitializeAndConnect初始化中斷變量和調(diào)用宏LinkTo鏈接到中斷例程(Isr_Irq)中。代碼如下:

        status = m_Irq.InitializeAndConnect(

              pResListTranslated, 

              LinkTo(Isr_Irq), 

              this);

        進(jìn)入中斷服務(wù)例程后,通過(guò)PCI9054的中斷寄存器進(jìn)行中斷類型判斷:若為本地中斷,則關(guān)閉本地中斷清除中斷標(biāo)志位,產(chǎn)生通知事件給應(yīng)用程序,通知主控板卡需進(jìn)行數(shù)據(jù)的DMA傳輸;如為DMA中斷,則表明DMA傳輸完成,需禁止該中斷并清除中斷標(biāo)志位,隨后啟動(dòng)延遲過(guò)程調(diào)用例程(DPC)進(jìn)行處理。其過(guò)程將在下節(jié)進(jìn)一步說(shuō)明。中斷處理的流程圖如圖4所示。

        該雷達(dá)系統(tǒng)存在多塊外圍板卡同時(shí)掛在CPCI總線上的情況,它們共享一個(gè)中斷向量。面對(duì)多外圍板卡的中斷處理時(shí),驅(qū)動(dòng)程序通過(guò)查詢各個(gè)設(shè)備的中斷寄存器狀態(tài),判斷來(lái)自哪個(gè)設(shè)備的中斷,并以事件形式通知應(yīng)用程序,迅速對(duì)中斷事件進(jìn)行處理。

3.2.3 DMA傳輸

        雷達(dá)系統(tǒng)數(shù)據(jù)采集板卡上傳采集數(shù)據(jù)或主控板卡下發(fā)控制參數(shù)均可由DMA傳輸方式完成的,它們的工作原理基本相同。以上傳為例,數(shù)據(jù)采集板卡在本地端FPGA內(nèi)緩沖一定量的數(shù)據(jù)后,向主控板卡申請(qǐng)中斷。主控板接收到該中斷后發(fā)起總線操作,控制外圍板卡進(jìn)行DMA傳輸,DMA傳輸流程圖如圖5所示。

        進(jìn)入DMA傳輸流程時(shí),驅(qū)動(dòng)程序通過(guò)控制DMA傳輸?shù)腒DmaTransfer類的成員函數(shù)Initiate()完成DMA的初始化工作。隨后系統(tǒng)進(jìn)入回調(diào)例程,若有數(shù)據(jù)需要傳輸,則配置PCI9054的DMA寄存器,并開(kāi)始DMA傳輸。當(dāng)傳輸完成后,PCI9054產(chǎn)生DMA中斷,在驅(qū)動(dòng)程序的中斷服務(wù)例程中,啟動(dòng)DPC進(jìn)入DpcFor_Irq例程,在DpcFor_Irq內(nèi)通過(guò)調(diào)用KdmaTransfer類的成員函數(shù)Continue()進(jìn)入DMA的回調(diào)例程,再次檢測(cè)是否有待傳輸?shù)臄?shù)據(jù)。若所有數(shù)據(jù)傳輸完畢則完成DMA操作,結(jié)束IRP;否則進(jìn)入下一輪DMA,一直到數(shù)據(jù)傳輸完畢為止。

        本文對(duì)安裝有WDM框架驅(qū)動(dòng)的板卡進(jìn)行了測(cè)試。圖6為外圍板卡端FPGA抓取DMA傳輸?shù)谋镜乜偩€時(shí)序圖,表明主控板卡與外圍板卡的DMA傳輸工作正常。實(shí)驗(yàn)測(cè)試實(shí)際DMA傳輸速率約為35 MB/s,完全能夠滿足該雷達(dá)系統(tǒng)數(shù)據(jù)傳輸?shù)男枨蟆?/p>

        本文針對(duì)某雷達(dá)系統(tǒng)數(shù)據(jù)傳輸與控制的要求,提出了一種基于CPCI總線的雷達(dá)接收機(jī)數(shù)據(jù)傳輸接口實(shí)現(xiàn)方案。在外圍板卡端,完成了基于FPGA+PCI橋芯片架構(gòu)的CPCI總線接口電路設(shè)計(jì);在主控板卡端,進(jìn)行了基于WDM框架的驅(qū)動(dòng)程序開(kāi)發(fā),實(shí)現(xiàn)了主控板對(duì)多塊外圍板的硬件訪問(wèn)、中斷處理和DMA傳輸?shù)榷喾N功能。論文的測(cè)試結(jié)果表明主控板卡能夠有效完成與外圍板卡間的數(shù)據(jù)傳輸與控制,性能指標(biāo)符合系統(tǒng)設(shè)計(jì)要求。

參考文獻(xiàn)

[1] Wikipedia, Compact PCI[EB/OL].[2014-01-02].http://en.Wikipedia.org/wiki/CompactPCI, 2013.

[2] 熊杰, 潘小鋒, 莊屹立,等.基于CPCI總線的認(rèn)知無(wú)線電系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2012,20(3):754-757.

[3] 董勇偉, 周良將,唐波,等. SAR實(shí)時(shí)成像處理平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J].系統(tǒng)工程與電子技術(shù), 2009,31(8):1882- 

     1886.

[4] 何莉, 龔宗洋, 張為公,等.基于CPCI總線的運(yùn)動(dòng)控制卡及其VxWorks下的驅(qū)動(dòng)設(shè)計(jì)[J]. 測(cè)控技術(shù),2008,27(8): 50-52. 

[5] 方明. 基于FPGA開(kāi)發(fā)的CPCI總線多功能卡及WDM驅(qū)動(dòng)程序設(shè)計(jì)與實(shí)現(xiàn)[D]. 上海:上海交通大學(xué), 2009.

[6] 段玲琳,段曉超,葉明傲.CPCI外設(shè)板卡通用設(shè)計(jì)方法[C].計(jì)算機(jī)技術(shù)與應(yīng)用學(xué)術(shù)會(huì)議, 2009.

[7] 張帆, 史彩成. Windows驅(qū)動(dòng)開(kāi)發(fā)技術(shù)詳解[M]. 北京: 電子工業(yè)出版社, 2008.

[8] 武安河. Windows2000/XP WDM 設(shè)備驅(qū)動(dòng)程序開(kāi)發(fā)(第二版)[M]. 北京: 電子工業(yè)出版社, 2005.

[9] 李勇, 李宇. PCI總線設(shè)備開(kāi)發(fā)寶典[M]. 北京: 北京航空航天大學(xué)出版社, 2005.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。