白宏義,李錦明,郭 淳
(中北大學電子測試國家重點實驗室,山西太原 030051)
隨著電子技術(shù)發(fā)展,在基于計算機控制的采集系統(tǒng)中,建立采集設備和計算機高速有效的數(shù)據(jù)傳輸通道成為至關(guān)重要的一環(huán)。在采集大容量、高帶寬的數(shù)據(jù)時,PXI接口速度可以達到132 MB/s,數(shù)據(jù)位能夠擴展到64位,有著較大的優(yōu)點[1-2]。當前,開發(fā)PXI總線接口主要使用專用PCI接口芯片PCI9054和PCI9052[3-4],成本較高,開發(fā)周期較長。
因此,提出單獨采用FPGA實現(xiàn)PXI協(xié)議,能夠降低成本,加快開發(fā)周期,具有一定的工程應用價值。
板卡主要作用是接收采集設備發(fā)來的2路高速LVDS接口,通過FIFO對數(shù)據(jù)進行緩存,然后將數(shù)據(jù)通過PXI接口發(fā)送給計算機,上位機對數(shù)據(jù)進行實時監(jiān)測。實現(xiàn)PXI接口包括3部分,PXI協(xié)議VHDL實現(xiàn)模塊,WDM驅(qū)動,PXI接口電路。系統(tǒng)的總體設計如圖1所示。
圖1 總體設計框圖
LVDS電路采用的是DS92LV1023和DS92LV1224芯片,能夠產(chǎn)生低壓差分信號,DS92LV1023內(nèi)部有10位并行總線,能夠?qū)崟r將10位并行數(shù)據(jù)轉(zhuǎn)成內(nèi)部包含時鐘的高速串行數(shù)據(jù),DS92LV1224可以將內(nèi)部包含時鐘的高速串行數(shù)據(jù)轉(zhuǎn)成并行數(shù)據(jù),將內(nèi)部的時鐘信號剝離出來,進行時鐘重建。同時,F(xiàn)PGA作為主控芯片,可以實時完成TCLK和RCLK的同步,從而保證了大容量數(shù)據(jù)高速穩(wěn)定傳輸[5-6]。如圖2和圖3所示是兩組芯片硬件電路設計。
圖2 LVDS發(fā)送端電路設計圖
主控芯片F(xiàn)PGA采用EP2C35F484C8,速度為-8,編譯后系統(tǒng)速度可以達到133 MHz[7]。PXI接口涉及到諸多信號,信號根據(jù)不同功能可以分為幾種類型。PXI接口作為一個功能模塊,通過FPGA芯片的I/O管腳與PXI接口信號組相連[8],如圖4所示。
板卡以quartus軟件為開發(fā)環(huán)境進行搭建和實現(xiàn),總體邏輯設計圖如圖5所示,接收控制模塊用來控制LVDS的時序,接收采集系統(tǒng)發(fā)來的數(shù)據(jù)。數(shù)據(jù)處理模塊用來對數(shù)據(jù)進行編幀,串并轉(zhuǎn)換等操作。PXI協(xié)議VHDL實現(xiàn)模塊用來實現(xiàn)PXI協(xié)議和接口邏輯,并控制PXI接口時序進行PXI總線與FPGA進行數(shù)據(jù)交互。測試臺發(fā)來數(shù)據(jù),接收控制模塊接收數(shù)據(jù)并將其放入4K的FIFO模塊中;數(shù)據(jù)處理模塊對收到數(shù)據(jù)加上幀頭幀尾等標志。隨后數(shù)據(jù)進入16K的FIFO模塊,根據(jù)full2信號判斷FIFO模塊的數(shù)據(jù)量,如果達到標定的數(shù)據(jù)量,控制PXI總線對數(shù)據(jù)進行讀寫操作。
圖3 LVDS接受端電路設計圖
圖4 PXI接口電路
圖5 軟件設計總體框圖
板卡設計的PXI接口包含4個模塊,如圖6所示。
圖6 PXI接口
3.1.1 配置空間設置
該模塊用來定義PCI配置空間。配置空間共有16個寄存器,即16個雙字空間,AD(5∶2)就對應這16個地址。第1個地址的高16位是板卡的設備ID號:4258;第1個地址的低16位是板卡的供應商ID號:1100。PCI配置空間有6個基址寄存器Base 0-5,板卡主要用到兩個基址寄存器。
Base0寄存器:分配一段地址空間給FPGA的內(nèi)存寄存器,用內(nèi)存映射的形式訪問FPGA的內(nèi)存寄存器。
Base1寄存器:分配一段地址空間給FPGA的IO寄存器,用I/O的形式訪問FPGA的IO寄存器。
3.1.2 接口邏輯
接口邏輯包含兩部分:地址譯碼,命令譯碼。地址譯碼是對總線發(fā)來的地址進行鎖存,用來判斷設備是否應該響應當前總線操作;命令譯碼是對總線鎖存的命令類型進行鎖存:對總線發(fā)來的不同命令做出相應的操作。在地址和命令傳輸結(jié)束后,總線在過程中成為數(shù)據(jù)總線,用于傳輸數(shù)據(jù)。
3.1.3 奇偶校驗
在地址段和數(shù)據(jù)段中,奇偶校驗對地址數(shù)據(jù)總線和命令操作位的正確性進行保護。既對AD(31∶0)與CBE(3∶0)進行校驗。PXI數(shù)據(jù)總線校驗保證0數(shù)據(jù)誤碼。
3.1.4 狀態(tài)機
PXI總線傳輸主要通過幀開始標志信號FRAME;初始化設備選擇信號IRTY;目標設備準備就緒信號TRDY;設備選擇命中信號DEVSEL;總線命令和字節(jié)允許信號CBE;地址數(shù)據(jù)復用信號AD進行控制。圖7為PXI讀寫操作狀態(tài)機,共分為5個狀態(tài),S1是空閑狀態(tài),S2是地址或過渡狀態(tài),S3是忙狀態(tài),S4是傳輸狀態(tài),S5是停止狀態(tài)。
S1狀態(tài)是PXI設備的初始狀態(tài),如果FRAME=1或者IRDY=0,一直保持該空閑狀態(tài)。當FRAME=0和IRDY=1,S1進入S2狀態(tài) 即是地址過渡狀態(tài),開始進行地址周期,主要是對地址,命令和FRAME進行判斷。主設備IRDY低電平表明準備接收發(fā)來的第1個數(shù)據(jù)項。當主設備IRDY和FRAME同時低電平且DEVSEL=1時,表明它已經(jīng)完成交易的第一個數(shù)據(jù)段并且進入S4狀態(tài)。如果IRDY和FRAME沒有同時為低,一直維持S2狀態(tài)。如果信號DEVSEL=0進入S3狀態(tài),表示主設備不進行采樣操作,同時目標還沒有聲明交易,即總線訪問的地址沒有命中,處于總線忙狀態(tài)。IRDY和TRDY同時低電平,表明數(shù)據(jù)是完整,成功地讀取了第一個(且唯一的)數(shù)據(jù)項。在狀態(tài)S4的時候 如果FRAME變低,開始進入停止狀態(tài),在S3狀態(tài)時,如果FRAME變低,開始進入停止狀態(tài)。
圖7 讀寫狀態(tài)機
用QuartusⅡ 12.0下的SignalTap工具對PXI信號進行捕捉,得到PXI讀寫操作時序如圖8和圖9所示。圖6中AD(31∶0)輸出值為42581100,表示設備的ID號是4258,供應商ID號是1100;CBE(3∶0)輸出值為1010表示進行配置空間讀操作。圖7中CBE(3∶0)輸出值為1010表示對配置寄存器進行寫操作,AD(31∶0)輸出0X4是地址,0X7是數(shù)據(jù),表示向配置寄存器地址0X4寫入數(shù)據(jù)0X7。
圖8 PXI讀操作時序
圖9 PXI寫操作時序
讀寫時序說明:
第1個周期:主機把FRAME信號拉低,IRDY拉高說明一個新的PXI操作開始;主機把CBE(3:0)置對應操作位;主機把AD(31:0)置地址操作位;設備卡檢測到主機發(fā)起新的PXI操作;設備卡鎖存CBE命令信息;設備卡鎖存AD(31:0)的地址信息。
第2個周期:主機把FRAME信號拉高,IRDY拉低;設備卡檢測CBE命令操作,確認是哪種操作類型:IO操作,內(nèi)存操作,配置操作;設備卡檢測地址信息,確認是否本卡。
第4個周期:設備卡將TRDY信號拉低,當前PXI交易完成。
第5個周期:主機將IRDY和FRAME拉高,確認交易完成;設備卡將DEVSEL,TRDY,STOP拉高,確認交易完成。
第6個周期:主機將IRDY和FRAME釋放三態(tài),當前交易結(jié)束;設備卡將DEVSEL,TRDY,STOP釋放三態(tài),當前交易結(jié)束。
WDM驅(qū)動程序是PXI總線連接到計算機的軟件接口。在計算機上安裝DRIVERWORKS 2.7和2000DDK驅(qū)動等工具,自動生成驅(qū)動框架,用戶只需要在它的框架之下,添加用戶自己的代碼用來實現(xiàn)PXI讀寫功能[9-10]。
用戶代碼的操作句柄為NTSTATUSPcitioDevice::PCITIO_IOCTL_INTCSR_Handler(KIrp I),用來實現(xiàn)PXI讀寫操作。
控制LVDS采集發(fā)來的一路數(shù)據(jù),并通過PXI接口發(fā)送給計算機的上位機。以收到的一路數(shù)據(jù)為例,如圖10所示,上位機收到的部分數(shù)據(jù)?!?4 6F”作為數(shù)據(jù)幀頭,“EB 90”作為數(shù)據(jù)幀尾,中間為數(shù)據(jù),從01到FF一共255個字節(jié)。
With the effective mass approximation, the time-independent one-dimensional Schr?dinger equation of an electron in MQWs in the z direction can be written as
圖10 數(shù)據(jù)幀格式
上位機接收完畢后,點擊軟件上的“讀取數(shù)據(jù)”按鈕,設備開始讀出的數(shù)據(jù)同時將數(shù)據(jù)保存到計算機中。上位機軟件上傳數(shù)據(jù)界面如圖11所示。
圖11 上位機上傳數(shù)據(jù)界面
數(shù)據(jù)完全保存之后,點擊軟件上的“數(shù)據(jù)分析”按鈕對數(shù)據(jù)中的丟幀和錯誤幀進行分析等。分析結(jié)果如圖12所示。
圖12 數(shù)據(jù)分析結(jié)果
一共收到2 048 MByte數(shù)據(jù),總幀數(shù)為7C97D9。經(jīng)軟件分析沒有出誤碼或數(shù)據(jù)丟失情況,數(shù)據(jù)傳輸穩(wěn)定可靠。
板卡的測速界面,如圖13所示。上位機對從PXI接口收到的數(shù)據(jù)執(zhí)行1 500次讀取操作,一次讀取512 KB,通過測試得知,一共用了7 s完成1 500次采集,根據(jù)速度公式:1 500×0.5 MB/7s=107 MB/s,速度較快。
圖13 上位機界面
該設計單獨使用FPGA實現(xiàn)了PXI接口,節(jié)約了PCI9054、PCI9052等專用PCI芯片,可以降低成本,加快PXI接口的開發(fā)周期。同時,速度可以到達107 MB/s,誤碼率和數(shù)據(jù)丟失情況基本為0。再結(jié)合LVDS、PXI和FPGA優(yōu)點可以有效解決采集設備與計算機的高速數(shù)據(jù)傳輸問題。