基于PXI總線(xiàn)的數據傳輸接口設計與實(shí)現方案
使用PCI9054 提供的DMA 傳輸方式,并由其Local 端配置和啟動(dòng)DMA 傳輸來(lái)完成數字頻譜數據的傳輸,達到用PXI 總線(xiàn)實(shí)現數字頻譜分析儀與工控機的高速數據傳輸的目的。
本文引用地址:http://dyxdggzs.com/article/150167.htm隨著(zhù)無(wú)線(xiàn)通信業(yè)務(wù)的飛速發(fā)展,頻譜資源顯得越來(lái)越缺乏,而實(shí)際中像廣播電視等頻段的頻譜利用率卻并不高,提高頻譜的利用率成為一種共識。認知無(wú)線(xiàn)電是一種按伺機方式充分利用頻譜的共享頻譜技術(shù),因此可以用來(lái)提高頻譜利用率??焖贉蚀_的數字頻譜分析對認知無(wú)線(xiàn)電的頻譜感知有非常重要的影響。在認知無(wú)線(xiàn)電系統中,數字頻譜分析儀與下一級的處理模塊的數據傳輸速率是制約認知無(wú)線(xiàn)電系統處理速度的一個(gè)瓶頸,因此需要選擇一種高速穩定的數據傳輸接口技術(shù)。
本文利用 PXI 總線(xiàn)技術(shù)來(lái)實(shí)現數字頻譜分析儀與下一級處理模塊的數據傳輸接口。PXI是CompactPCI extend for Instrumentation 的簡(jiǎn)稱(chēng),即面向儀器系統的PCI 擴展,由NI(美國國家儀器公司) 于1997 年10 月率先推出。它將CompactPCI 規范定義的PCI 總線(xiàn)技術(shù)發(fā)展為適合于工業(yè)控制、測量、數據采集和試驗應用的電氣、機械和軟件規范,從而形成了新的虛擬儀器體系結構。PXI 總線(xiàn)是一種高性能的32 /64 位地址數據復用總線(xiàn),支持突發(fā)傳輸,是一種堅固的基于PC 的測量和自動(dòng)化平臺, 它的數據傳輸速率的峰值于33 MHz、32 bit 的總線(xiàn)上可達132 MB/s; 于66 MHz、64 bit 的總線(xiàn)上則可高達528 MB/s,遠高于GPIB (General-Purpose Interface Bus,通用接口總線(xiàn))與VXI (VME bus eXtension for Instrumentation,面向儀器系統的VME 總線(xiàn)的擴展)接口的傳輸速率。基于PCI 總線(xiàn)發(fā)展而來(lái)的PXI 系統具有較好兼容性、存取延時(shí)小、成本低等優(yōu)點(diǎn)。PXI 總線(xiàn)數據傳輸接口以其高傳輸速率和穩定可靠的傳輸性能得到了越來(lái)越廣泛的應用。
PXI 總線(xiàn)協(xié)議比較復雜, 工程應用中一般采用兩種方式, 一是采用FPGA(FieldProgrammable Gata Array,現場(chǎng)可編程門(mén)陣列)來(lái)設計控制接口, 缺點(diǎn)是控制接口難度較大、開(kāi)發(fā)周期長(cháng)、成本大; 二是采用接口芯片, 將復雜的PXI 總線(xiàn)接口轉換為相對簡(jiǎn)單的用戶(hù)接口, 用戶(hù)只要設計轉換后的總線(xiàn)接口。本文采用PXI 總線(xiàn)專(zhuān)用接口芯片PCI9054 來(lái)實(shí)現PXI總線(xiàn)的數據傳輸。
PCI9054 是PLX 公司提供的一款PCI 專(zhuān)用接口芯片,它兼容PCI V2.2 的協(xié)議規范。其內部結構圖如圖1 所示。由圖可知,PCI9054 實(shí)現的是PCI Bus 端和Local Bus端的信號轉換,使得Local Bus 端不需要進(jìn)行復雜的PCI 協(xié)議邏輯的設計,只需要進(jìn)行簡(jiǎn)單的數據傳輸邏輯的設計就能實(shí)現符合PCI 協(xié)議規范的信號生成。
傳輸方式、PCI Target 傳輸方式以及PCI DMA 傳輸方式。PCI Initiator 傳輸方式下,PCI9054 成為PCI Bus 端的主機,同時(shí)是Local Bus 端的從機,由Local Bus 端主動(dòng)發(fā)起數據傳輸,PCI9054 被動(dòng)后再主動(dòng)向PCI Bus 發(fā)起傳輸。PCI Target 傳輸方式下PCI9054 的角色剛好與PCI Initiator 方式相反,成為PCI Bus端的從機以及Local Bus端的主機。而在PCI DMA方式下PCI9054同時(shí)是PCI Bus端和Local Bus 端的主機。在PCI9054 內部分別提供了這三種傳輸方式下的內部寄存器,方便設計者來(lái)對每一種傳輸方式進(jìn)行配置。
PCI9054 的本地端支持可編程的特點(diǎn),通過(guò)兩個(gè)模式選擇管腳MODE[1:0]來(lái)設置LocalBus 端分別工作在C 模式、J 模式、M 模式。這樣可以使得PCI9054 的Local Bus 可以?huà)燧d不同類(lèi)型的其他設備。
PCI9054 提供了兩個(gè)獨立的可編程DMA (Direct Memory Access,直接存儲器存取) 控制器;每個(gè)通道均支持塊和分散/集中的DMA 方式;在PCI 總線(xiàn)端支持32 位的數據位寬,時(shí)鐘速率達到33MHz;本地端可以編程實(shí)現8、16 或32 位的數據寬度;傳輸速率最高可達132MB/s;本地總線(xiàn)端時(shí)鐘最高可達50MHz 支持復用/非復用的32 位地址數據。
2 接口電路設計
PXI 總線(xiàn)接口電路的設計主要是對PCI9054 芯片的外圍電路進(jìn)行設計,主要包括四個(gè)部分:電源方案的設計、時(shí)鐘方案的設計、EEPROM 電路的設計,Local 端的連線(xiàn)方案設計。
PCI9054 芯片的正常工作電壓是3.3V,而在上位機的PXI 接口中,提供了三種電壓,3.3V、5V 和12V,因此PCI9054 的供電完全可以由上位機來(lái)提供。設計中,可以增加一個(gè)外部電壓的接入接口,方便開(kāi)發(fā)過(guò)程中的調試。
PCI9054 芯片需要兩個(gè)工作時(shí)鐘,一個(gè)是PCI Bus 端的工作時(shí)鐘,一個(gè)是Local Bus 端的工作時(shí)鐘,這兩個(gè)工作時(shí)鐘是獨立的,均需要外部邏輯輸入。PCI Bus 端的工作時(shí)鐘由上位機的PXI 接口提供,主要在PCB(Printed Circuit Board, 印刷電路板);布線(xiàn)的時(shí)候需要對該時(shí)鐘線(xiàn)進(jìn)行蛇形走線(xiàn)處理。Local Bus 端的工作時(shí)鐘由晶振提供,本方案中采用50MHz 的晶振。
EEPROM 電路的設計中需要注意EEDI 和EEDO 兩個(gè)管腳的連接,電路原理圖如圖2所示。注意在沒(méi)有掛載Local 端的設備同時(shí)又沒(méi)有EEPROM 時(shí),EEDI 和EEDO 需要通過(guò)一個(gè)1KΩ的電阻拉低。設計中,往往需要加上一個(gè)EEPROM 用來(lái)存儲對PCI9054 芯片的內部寄存器的設置。這些設置在每次上電時(shí)自動(dòng)進(jìn)行加載,對PCI9054 芯片的內部寄存器進(jìn)行配置,使得每次上電后,PCI9054 能按事先所配置的方式工作。因此,在設計電路完成之后還需要對EEPROM 的內容進(jìn)行設置,并通過(guò)PlxMon 工具寫(xiě)入。

圖 2 EEPROM 電路設計原理圖
在 Local 端的連線(xiàn)方案設計中,需要注意兩點(diǎn):一是本地時(shí)鐘的接入,本地時(shí)鐘作為PCI9054 識別Local 端是否有設備的依據,若在EEPROM 的EEDI 和EEDO 沒(méi)有下拉的情況下,一定要接入本地時(shí)鐘,不然連接上位機后,上位機進(jìn)入不了系統。二是若需要用到PCI Initiator 傳輸方式,則必須將LBE[3:0]#全部拉低,否則就會(huì )造成讀寫(xiě)出現上位機死機現象。
3 接口程序設計
由于數據傳輸接口涉及到數字頻譜儀和上位機,其程序設計也包括兩個(gè)部分:一部分是數字頻譜儀端的程序設計,即PCI9054 Local 端的程序設計,由于本項目中在PCI9054 的Local端掛載的是FPGA 芯片,需要在FPGA 中進(jìn)行Local 端的接口邏輯程序設計;另一部分是上位機端的程序設計,主要是基于操作系統的驅動(dòng)程序以及上層應用程序設計。
3.1 FPGA 程序設計
FPGA 程序的設計主要是對PCI9054 的Local 端時(shí)序邏輯進(jìn)行設計。由圖2 可知,在PCI9054 內部的Local 端存在三種傳輸方式狀態(tài)機:PCI Initiator 方式、PCI Target 方式、PCIDMA 方式。因此,在對Local 端的控制進(jìn)行設計時(shí),可以用不同的狀態(tài)機來(lái)匹配PCI9054的內部狀態(tài)機,達到實(shí)現各種方式的數據傳輸。
本文根據系統的特點(diǎn),選擇使用PCI DMA的傳輸方式。在FPGA端的程序采用層次化和模塊化的設計,分為上下兩層結構:下層是鏈路層,實(shí)現PCI DMA 方式下,長(cháng)字(4Bytes)數據流的雙向傳輸鏈路的建立;上層是鏈路適配層,實(shí)現數字頻譜儀的數據按照一定的幀格式封轉成幀。PCI DMA 方式的設置和啟動(dòng)也在FPGA 中完成,程序采用模塊化的設計方式,將數據傳輸模塊與控制模塊區分。在控制模塊中,分成三層:第一層是寄存器讀寫(xiě)層,實(shí)現對PCI9054 內部寄存器的讀寫(xiě)操作;第二層是參數獲取與PCI DMA 方式配置層,實(shí)現從PCI9054 內部消息寄存器獲取數字頻譜儀的控制參數以及對PCI DMA 方式進(jìn)行配置與啟動(dòng)控制;第三層是上層控制層,用來(lái)解析控制參數以及控制生成數據幀。整個(gè)程序結構圖如圖3 所示。

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

評論