基于PXI總線的數(shù)據(jù)傳輸接口設(shè)計(jì)與實(shí)現(xiàn)方案
圖 4 中,S0 為空閑狀態(tài);S1 若在PCI9054 對(duì)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ā)信號(hào)均為PCI 9054Local Bus 端的控制信號(hào)。
圖 5 PCI 9054 內(nèi)部寄存器讀寫操作的狀態(tài)轉(zhuǎn)移圖
圖 5 中,S0為空閑狀態(tài),在讀寫啟動(dòng)信號(hào)en_rwreg=1的情況下進(jìn)入工作狀態(tài);S1為讀寫周期開始狀態(tài),有效Local Bus 端的讀寫周期開始信號(hào);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的程序還需要包括對(duì)FFT處理器的輸出數(shù)據(jù)進(jìn)行數(shù)據(jù)幀封裝,即給每一次FFT 處理器根據(jù)相應(yīng)的配置參數(shù)進(jìn)行處理輸出的數(shù)據(jù)加上幀頭,幀頭中包含了此次傳輸?shù)腇FT 數(shù)據(jù)所覆蓋的頻段以及數(shù)據(jù)的長(zhǎng)度信息。這樣做的好處是上位機(jī)不需要額外的同步信息,只需要根據(jù)幀頭中的頻段信息以及長(zhǎng)度信息就可以判斷當(dāng)前數(shù)據(jù)幀所表示的頻譜信息。利用PCI9054 內(nèi)部寄存器中的MailBox 寄存器組來實(shí)現(xiàn)數(shù)字頻譜儀與上位機(jī)之間的參數(shù)傳遞。由于數(shù)字頻譜儀需要的參數(shù)信息比較少,只需要頻段選擇信息,以及開始和結(jié)束數(shù)字頻譜儀的控制信號(hào),選擇MailBox 寄存器組中的第七個(gè)位寬為32 位的寄存器來傳遞控制信息。
整個(gè) FPGA 程序的流程示意圖如圖6 所示。
圖6 FPGA程序流程示意圖
3.2 接口驅(qū)動(dòng)程序的設(shè)計(jì)
接口驅(qū)動(dòng)程序的設(shè)計(jì)可以通過兩種方式實(shí)現(xiàn),一種是通過專用的驅(qū)動(dòng)程序開發(fā)工具進(jìn)行驅(qū)動(dòng)程序的設(shè)計(jì),如DDK、DriverStudio 和WinDriver 等,另外一種方式是通過PLX 公司提供的PCI軟件工具包SDK(Software Development Kit)實(shí)現(xiàn)接口的驅(qū)動(dòng)設(shè)計(jì),它提供了能夠?qū)崿F(xiàn)各種傳輸方式所需要的基本API 函數(shù)。
為了縮短開發(fā)周期,本文采用由PLX 公司提供的SDK 工具包進(jìn)行驅(qū)動(dòng)程序的開發(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,以及對(duì)接收的數(shù)據(jù)幀進(jìn)行解封裝的相關(guān)程序開發(fā)。
表1 Block DMA 模式下的SDK API 函數(shù)應(yīng)用列表
本文使用了 PCI9054 的DMA傳輸方式,并且在Local端發(fā)起DMA傳輸,在上位機(jī)上采用中斷的形式進(jìn)行響應(yīng),可以減少占用上位機(jī)CPU 處理時(shí)間,使得上位機(jī)在進(jìn)行數(shù)據(jù)傳輸的同時(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í)性。
評(píng)論