《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 基于PXI總線的數(shù)據(jù)傳輸接口設(shè)計(jì)與實(shí)現(xiàn)方案[圖]
基于PXI總線的數(shù)據(jù)傳輸接口設(shè)計(jì)與實(shí)現(xiàn)方案[圖]
摘要: 本文采用PLX公司生產(chǎn)的PCI9054接口芯片以及符合PXI總線電氣化特性的物理連接器來實(shí)現(xiàn)PXI總線協(xié)議,。使用PCI9054提供的DMA傳輸方式,并由其Local端配置和啟動DMA傳輸來完成數(shù)字頻譜數(shù)據(jù)的傳輸,,達(dá)到用PXI總線實(shí)現(xiàn)數(shù)字頻譜分析儀與工控機(jī)的高速數(shù)據(jù)傳輸?shù)哪康摹?
Abstract:
Key words :
0 引言

隨著無線通信業(yè)務(wù)的飛速發(fā)展,,頻譜資源顯得越來越缺乏,而實(shí)際中像廣播電視等頻段的頻譜利用率卻并不高,,提高頻譜的利用率成為一種共識。認(rèn)知無線電是一種按伺機(jī)方式充分利用頻譜的共享頻譜技術(shù),,因此可以用來提高頻譜利用率??焖贉?zhǔn)確的數(shù)字頻譜分析對認(rèn)知無線電的頻譜感知有非常重要的影響,。在認(rèn)知無線電系統(tǒng)中,,數(shù)字頻譜分析儀與下一級的處理模塊的數(shù)據(jù)傳輸速率是制約認(rèn)知無線電系統(tǒng)處理速度的一個(gè)瓶頸,,因此需要選擇一種高速穩(wěn)定的數(shù)據(jù)傳輸接口技術(shù),。

本文利用PXI總線技術(shù)來實(shí)現(xiàn)數(shù)字頻譜分析儀與下一級處理模塊的數(shù)據(jù)傳輸接口。PXI是CompactPCI extend for Instrumentation的簡稱,,即面向儀器系統(tǒng)的PCI擴(kuò)展,,由NI(美國國家儀器公司)于1997年10月率先推出,。它將CompactPCI規(guī)范定義的PCI總線技術(shù)發(fā)展為適合于工業(yè)控制、測量,、數(shù)據(jù)采集和試驗(yàn)應(yīng)用的電氣、機(jī)械和軟件規(guī)范,,從而形成了新的虛擬儀器體系結(jié)構(gòu),。PXI總線是一種高性能的32/64位地址數(shù)據(jù)復(fù)用總線,,支持突發(fā)傳輸,,是一種堅(jiān)固的基于PC的測量和自動化平臺,它的數(shù)據(jù)傳輸速率的峰值于33MHz、32bit的總線上可達(dá)132MB/s,;于66MHz、64bit的總線上則可高達(dá)528MB/s,,遠(yuǎn)高于GPIB(General-Purpose Interface Bus,,通用接口總線)與VXI(VME bus eXtension for Instrumentation,面向儀器系統(tǒng)的VME總線的擴(kuò)展)接口的傳輸速率?;赑CI總線發(fā)展而來的PXI系統(tǒng)具有較好兼容性、存取延時(shí)小,、成本低等優(yōu)點(diǎn),。PXI總線數(shù)據(jù)傳輸接口以其高傳輸速率和穩(wěn)定可靠的傳輸性能得到了越來越廣泛的應(yīng)用,。

PXI總線協(xié)議比較復(fù)雜,工程應(yīng)用中一般采用兩種方式,,一是采用FPGA(FieldProgrammable Gata Array,,現(xiàn)場可編程門陣列)來設(shè)計(jì)控制接口,,缺點(diǎn)是控制接口難度較大,、開發(fā)周期長、成本大,;二是采用接口芯片,,將復(fù)雜的PXI總線接口轉(zhuǎn)換為相對簡單的用戶接口,用戶只要設(shè)計(jì)轉(zhuǎn)換后的總線接口,。本文采用PXI總線專用接口芯片PCI9054來實(shí)現(xiàn)PXI總線的數(shù)據(jù)傳輸,。

1 PCI9054接口芯片

PCI9054是PLX公司提供的一款PCI專用接口芯片,它兼容PCI V2.2的協(xié)議規(guī)范,。其內(nèi)部結(jié)構(gòu)圖如圖1所示,。由圖可知,PCI9054實(shí)現(xiàn)的是PCI Bus端和Local Bus端的信號轉(zhuǎn)換,,使得Local Bus端不需要進(jìn)行復(fù)雜的PCI協(xié)議邏輯的設(shè)計(jì),,只需要進(jìn)行簡單的數(shù)據(jù)傳輸邏輯的設(shè)計(jì)就能實(shí)現(xiàn)符合PCI協(xié)議規(guī)范的信號生成。

基于PXI總線的數(shù)據(jù)傳輸接口設(shè)計(jì)與實(shí)現(xiàn)方案
圖1 PCI9054內(nèi)部結(jié)構(gòu)示意圖

PCI9054內(nèi)部狀態(tài)機(jī)給用戶提供了三種傳輸方式:PCI Initiator傳輸方式,、PCI Target傳輸方式以及PCI DMA傳輸方式,。PCI Initiator傳輸方式下,PCI9054成為PCI Bus端的主機(jī),,同時(shí)是Local Bus端的從機(jī),,由Local Bus端主動發(fā)起數(shù)據(jù)傳輸,PCI9054被動后再主動向PCI Bus發(fā)起傳輸。PCI Target傳輸方式下PCI9054的角色剛好與PCI Initiator方式相反,,成為PCI Bus端的從機(jī)以及Local Bus端的主機(jī),。而在PCI DMA方式下PCI9054同時(shí)是PCI Bus端和Local Bus端的主機(jī)。在PCI9054內(nèi)部分別提供了這三種傳輸方式下的內(nèi)部寄存器,,方便設(shè)計(jì)者來對每一種傳輸方式進(jìn)行配置,。

PCI9054的本地端支持可編程的特點(diǎn),通過兩個(gè)模式選擇管腳MODE[1:0]來設(shè)置LocalBus端分別工作在C模式,、J模式,、M模式。這樣可以使得PCI9054的Local Bus可以掛載不同類型的其他設(shè)備,。

PCI9054提供了兩個(gè)獨(dú)立的可編程DMA(Direct Memory Access,,直接存儲器存取)控制器;每個(gè)通道均支持塊和分散/集中的DMA方式,;在PCI總線端支持32位的數(shù)據(jù)位寬,,時(shí)鐘速率達(dá)到33MHz;本地端可以編程實(shí)現(xiàn)8,、16或32位的數(shù)據(jù)寬度,;傳輸速率最高可達(dá)132MB/s;本地總線端時(shí)鐘最高可達(dá)50MHz支持復(fù)用/非復(fù)用的32位地址數(shù)據(jù),。

2 接口電路設(shè)計(jì)

PXI總線接口電路的設(shè)計(jì)主要是對PCI9054芯片的外圍電路進(jìn)行設(shè)計(jì),,主要包括四個(gè)部分:電源方案的設(shè)計(jì)、時(shí)鐘方案的設(shè)計(jì),、EEPROM電路的設(shè)計(jì),,Local端的連線方案設(shè)計(jì)。

PCI9054芯片的正常工作電壓是3.3V,,而在上位機(jī)的PXI接口中,,提供了三種電壓,3.3V,、5V和12V,,因此PCI9054的供電完全可以由上位機(jī)來提供。設(shè)計(jì)中,,可以增加一個(gè)外部電壓的接入接口,,方便開發(fā)過程中的調(diào)試。

PCI9054芯片需要兩個(gè)工作時(shí)鐘,,一個(gè)是PCI Bus端的工作時(shí)鐘,,一個(gè)是Local Bus端的工作時(shí)鐘,這兩個(gè)工作時(shí)鐘是獨(dú)立的,,均需要外部邏輯輸入,。PCI Bus端的工作時(shí)鐘由上位機(jī)的PXI接口提供,,主要在PCB(Printed Circuit Board,印刷電路板),;布線的時(shí)候需要對該時(shí)鐘線進(jìn)行蛇形走線處理,。Local Bus端的工作時(shí)鐘由晶振提供,本方案中采用50MHz的晶振,。

EEPROM電路的設(shè)計(jì)中需要注意EEDI和EEDO兩個(gè)管腳的連接,,電路原理圖如圖2所示。注意在沒有掛載Local端的設(shè)備同時(shí)又沒有EEPROM時(shí),,EEDI和EEDO需要通過一個(gè)1KΩ的電阻拉低,。設(shè)計(jì)中,往往需要加上一個(gè)EEPROM用來存儲對PCI9054芯片的內(nèi)部寄存器的設(shè)置,。這些設(shè)置在每次上電時(shí)自動進(jìn)行加載,,對PCI9054芯片的內(nèi)部寄存器進(jìn)行配置,使得每次上電后,,PCI9054能按事先所配置的方式工作。因此,,在設(shè)計(jì)電路完成之后還需要對EEPROM的內(nèi)容進(jìn)行設(shè)置,,并通過PlxMon工具寫入。

基于PXI總線的數(shù)據(jù)傳輸接口設(shè)計(jì)與實(shí)現(xiàn)方案
圖2 EEPROM電路設(shè)計(jì)原理圖

在Local端的連線方案設(shè)計(jì)中,,需要注意兩點(diǎn):一是本地時(shí)鐘的接入,,本地時(shí)鐘作為PCI9054識別Local端是否有設(shè)備的依據(jù),若在EEPROM的EEDI和EEDO沒有下拉的情況下,,一定要接入本地時(shí)鐘,,不然連接上位機(jī)后,上位機(jī)進(jìn)入不了系統(tǒng),。二是若需要用到PCI Initiator傳輸方式,,則必須將LBE[3:0]#全部拉低,否則就會造成讀寫出現(xiàn)上位機(jī)死機(jī)現(xiàn)象,。

3 接口程序設(shè)計(jì)

由于數(shù)據(jù)傳輸接口涉及到數(shù)字頻譜儀和上位機(jī),,其程序設(shè)計(jì)也包括兩個(gè)部分:一部分是數(shù)字頻譜儀端的程序設(shè)計(jì),即PCI9054 Local端的程序設(shè)計(jì),,由于本項(xiàng)目中在PCI9054的Local端掛載的是FPGA芯片,,需要在FPGA中進(jìn)行Local端的接口邏輯程序設(shè)計(jì);另一部分是上位機(jī)端的程序設(shè)計(jì),,主要是基于操作系統(tǒng)的驅(qū)動程序以及上層應(yīng)用程序設(shè)計(jì),。

3.1 FPGA程序設(shè)計(jì)

FPGA程序的設(shè)計(jì)主要是對PCI9054的Local端時(shí)序邏輯進(jìn)行設(shè)計(jì)。由圖2可知,,在PCI9054內(nèi)部的Local端存在三種傳輸方式狀態(tài)機(jī):PCI Initiator方式,、PCI Target方式,、PCIDMA方式。因此,,在對Local端的控制進(jìn)行設(shè)計(jì)時(shí),,可以用不同的狀態(tài)機(jī)來匹配PCI9054的內(nèi)部狀態(tài)機(jī),達(dá)到實(shí)現(xiàn)各種方式的數(shù)據(jù)傳輸,。

本文根據(jù)系統(tǒng)的特點(diǎn),,選擇使用PCI DMA的傳輸方式。在FPGA端的程序采用層次化和模塊化的設(shè)計(jì),,分為上下兩層結(jié)構(gòu):下層是鏈路層,,實(shí)現(xiàn)PCI DMA方式下,長字(4Bytes)數(shù)據(jù)流的雙向傳輸鏈路的建立,;上層是鏈路適配層,,實(shí)現(xiàn)數(shù)字頻譜儀的數(shù)據(jù)按照一定的幀格式封轉(zhuǎn)成幀。PCI DMA方式的設(shè)置和啟動也在FPGA中完成,,程序采用模塊化的設(shè)計(jì)方式,,將數(shù)據(jù)傳輸模塊與控制模塊區(qū)分。在控制模塊中,,分成三層:第一層是寄存器讀寫層,,實(shí)現(xiàn)對PCI9054內(nèi)部寄存器的讀寫操作;第二層是參數(shù)獲取與PCI DMA方式配置層,,實(shí)現(xiàn)從PCI9054內(nèi)部消息寄存器獲取數(shù)字頻譜儀的控制參數(shù)以及對PCI DMA方式進(jìn)行配置與啟動控制,;第三層是上層控制層,用來解析控制參數(shù)以及控制生成數(shù)據(jù)幀,。整個(gè)程序結(jié)構(gòu)圖如圖3所示,。

基于PXI總線的數(shù)據(jù)傳輸接口設(shè)計(jì)與實(shí)現(xiàn)方案
圖3 FPGA程序結(jié)構(gòu)圖

上述FPGA程序中主要包括了兩個(gè)狀態(tài)機(jī)的設(shè)計(jì),一個(gè)PCI DMA數(shù)據(jù)傳輸方式的狀態(tài)機(jī)設(shè)計(jì),,一個(gè)是PCI 9054內(nèi)部寄存器讀寫操作的狀態(tài)機(jī)設(shè)計(jì),。它們的狀態(tài)轉(zhuǎn)移圖分別如圖4和圖5所示。

基于PXI總線的數(shù)據(jù)傳輸接口設(shè)計(jì)與實(shí)現(xiàn)方案
圖4 PCI DMA數(shù)據(jù)傳輸狀態(tài)轉(zhuǎn)移圖

圖4中,,S0為空閑狀態(tài),;S1若在PCI9054對Local Bus進(jìn)行寫的操作中為數(shù)據(jù)接收狀態(tài),若在PCI9054讀Local Bus的操作中為數(shù)據(jù)準(zhǔn)備狀態(tài),;S2為PCI 9054讀Local Bus的操作中的數(shù)據(jù)發(fā)送狀態(tài),;S3為讀寫操作的終止?fàn)顟B(tài)。圖中各狀態(tài)轉(zhuǎn)移觸發(fā)信號均為PCI 9054Local Bus端的控制信號,。

基于PXI總線的數(shù)據(jù)傳輸接口設(shè)計(jì)與實(shí)現(xiàn)方案
圖5 PCI 9054內(nèi)部寄存器讀寫操作的狀態(tài)轉(zhuǎn)移圖

圖5中,,S0為空閑狀態(tài),在讀寫啟動信號en_rwreg=1的情況下進(jìn)入工作狀態(tài),;S1為讀寫周期開始狀態(tài),,有效Local Bus端的讀寫周期開始信號,;S2為讀寫周期等待狀態(tài),等待PCI9054的LREADY#有效,;S3為突發(fā)讀寫方式下的響應(yīng)狀態(tài),,突發(fā)讀寫方式下,PCI9054的LREADY#有效后,,使能內(nèi)部邏輯進(jìn)行相應(yīng)的響應(yīng),;S4為讀寫周期響應(yīng)狀態(tài),在非突發(fā)讀寫方式下或者突發(fā)讀寫的終止周期中的響應(yīng)狀態(tài),。

在實(shí)現(xiàn)了上述兩個(gè)狀態(tài)機(jī)模塊后,,F(xiàn)PGA的程序還需要包括對FFT處理器的輸出數(shù)據(jù)進(jìn)行數(shù)據(jù)幀封裝,即給每一次FFT處理器根據(jù)相應(yīng)的配置參數(shù)進(jìn)行處理輸出的數(shù)據(jù)加上幀頭,,幀頭中包含了此次傳輸?shù)腇FT數(shù)據(jù)所覆蓋的頻段以及數(shù)據(jù)的長度信息,。這樣做的好處是上位機(jī)不需要額外的同步信息,只需要根據(jù)幀頭中的頻段信息以及長度信息就可以判斷當(dāng)前數(shù)據(jù)幀所表示的頻譜信息,。利用PCI9054內(nèi)部寄存器中的MailBox寄存器組來實(shí)現(xiàn)數(shù)字頻譜儀與上位機(jī)之間的參數(shù)傳遞,。由于數(shù)字頻譜儀需要的參數(shù)信息比較少,只需要頻段選擇信息,,以及開始和結(jié)束數(shù)字頻譜儀的控制信號,,選擇MailBox寄存器組中的第七個(gè)位寬為32位的寄存器來傳遞控制信息。

整個(gè)FPGA程序的流程示意圖如圖6所示,。

基于PXI總線的數(shù)據(jù)傳輸接口設(shè)計(jì)與實(shí)現(xiàn)方案
圖6 FPGA程序流程示意圖

3.2 接口驅(qū)動程序的設(shè)計(jì)

接口驅(qū)動程序的設(shè)計(jì)可以通過兩種方式實(shí)現(xiàn),一種是通過專用的驅(qū)動程序開發(fā)工具進(jìn)行驅(qū)動程序的設(shè)計(jì),,如DDK,、DriverStudio和WinDriver等,另外一種方式是通過PLX公司提供的PCI軟件工具包SDK(Software Development Kit)實(shí)現(xiàn)接口的驅(qū)動設(shè)計(jì),,它提供了能夠?qū)崿F(xiàn)各種傳輸方式所需要的基本API函數(shù),。

為了縮短開發(fā)周期,本文采用由PLX公司提供的SDK工具包進(jìn)行驅(qū)動程序的開發(fā),。運(yùn)用其SDK提供的工作API函數(shù)實(shí)現(xiàn)Block DMA模式下的Burst Forever(無限突發(fā))方式的數(shù)據(jù)傳輸,。主要用到的函數(shù)如表1所示。

由于本系統(tǒng)的特殊應(yīng)用,,還需要增加一些上層的應(yīng)用程序,,才能實(shí)現(xiàn)整個(gè)數(shù)字頻譜儀數(shù)據(jù)的正常工作,主要包括數(shù)字頻譜儀的參數(shù)控制字的生成和寫PCI9054內(nèi)部寄存器MailBoxReg7,,以及對接收的數(shù)據(jù)幀進(jìn)行解封裝的相關(guān)程序開發(fā),。

表1 Block DMA模式下的SDK API函數(shù)應(yīng)用列表
基于PXI總線的數(shù)據(jù)傳輸接口設(shè)計(jì)與實(shí)現(xiàn)方案

4 結(jié)論

本文使用了PCI9054的DMA傳輸方式,并且在Local端發(fā)起DMA傳輸,,在上位機(jī)上采用中斷的形式進(jìn)行響應(yīng),,可以減少占用上位機(jī)CPU處理時(shí)間,,使得上位機(jī)在進(jìn)行數(shù)據(jù)傳輸?shù)耐瑫r(shí)可以進(jìn)行其他的操作。PXI接口加上PCI9054的開發(fā)模式,,使得開發(fā)周期縮短了很多,,避免了復(fù)雜的PXI總線協(xié)議的邏輯設(shè)計(jì)和驗(yàn)證工作。本系統(tǒng)采用的PXI總線的傳輸位寬32位,,采用無限突發(fā)的傳輸方式,,在數(shù)據(jù)傳輸周期中的數(shù)據(jù)傳輸速率為132MB/s,但是由于增加了額外的控制周期以及其他的一些控制邏輯,,使得數(shù)據(jù)的平均傳輸速率并沒有達(dá)到這個(gè)值,,但是完全可以匹配目前FFT處理器的處理速率,可以保證數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性,。

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