基於CPCI總線和LVDS的高速數據傳輸系統的設計

隨著科學技術的迅猛發展,越來越大的數據傳輸量和越來越高的數據傳輸速率成為信號處理系統亟待解決的問題。因而,開發一種能夠實時處理大量高速數據,同時兼具穩定性和通用性的新總線成為整個數據鏈技術中迫切需要解決的瓶頸之一。CPCI (緊湊外圍設備互聯總線)結合了PCI總線的電氣特性和歐式卡的機械標準,可提供132 MB/s的峰值帶寬

[1],同時CPCI構架開放,性能優良,在可靠性、兼容性和機械性能等方面均有優勢。 因此,CPCI總線已成為當今應用最廣泛的工業計算機總線,基於CPCI總線的工業控制計算機已經成為解決大量高速數據處理的一個新方向。

基於某測試任務,本文詳細闡述了通過CPCI總線接口和接口接收和傳輸測試數據,在保證可靠性的前期下,提高了地面設備接收和處理數據的速度。測試結果表明,此方法可行可靠,圓滿完成了測試任務。

1 總體設計

本設計的主要工作是對外接CPCI設備進行命令下發、狀態檢測及數據接收操作。其主要工作流程是:由上位機下發命令字控制整個系統的正常運行,主控芯片XC3S400通過PCI9054橋接從背板總線接收主機卡發出的命令字,完成邏輯控制;通過RS422接口與外接設備進行通信,控制外接設備進入相應的工作狀態以及接收其相應的狀態返回;通過LVDS接口接收外接設備的高速數據,將數據寫入FPGA的FIFO後,由PCI9054通過DMA控制器將接收的數據回傳至主機卡。總體設計框圖如圖1所示。

基于CPCI总线和LVDS的高速数据传输系统的设计

整個設計以FPGA為控制核心,充分利用其強大的可編程能力[2],能夠靈活控制總線傳輸速率等多個指標,在增加系統通用性的同時,也充分發揮了CPCI總線高速傳輸的優勢。

2 RS422接口設計

RS422接口用來下發命令字和接收狀態字,由於信號碼率較低,為625 kb/s,因此設計中主要考慮傳輸的穩定性和可靠性。本設計針對此問題首先選擇了抗干擾性強的差分對信號傳輸數字量,同時對信號採取隔離措施,以防止前後級設備之間的互相干擾。接口電路示意圖如圖2所示。

基于CPCI总线和LVDS的高速数据传输系统的设计

該接口電路選用ADI公司的磁隔離全雙工收發器ADM2682E,無需外接DC/DC隔離模塊。但是輸入輸出的供電引腳需要電源旁路,噪聲抑制需要一個低電感高頻電容,紋波抑制需要一個大容量電容。為了抑制噪聲和降低紋波,至少需要並聯兩個電容,其中容值較小的電容靠近器件擺放。因此,在器件的VCC與GND1,VISOIN、VISOOUT與GND2之間均要加去耦電容。

差分輸入端R2將差分輸入正端上拉至VISO,R4將差分輸入負端接地,這樣做的好處是可以防止因為差分信號長距離傳輸造成的信號削弱,阻值均選擇1 kΩ;因為數據傳輸電纜為特性阻抗為100 Ω的第五類屏蔽雙絞線,R3的作用是可以減少信號的反射和衰減,提高數據傳輸的可靠性,阻值選為120 Ω。

3 LVDS接口設計

3.1 硬件接口

LVDS技術採用低壓擺幅和和低電流驅動輸出,具有很強的抗干擾性[2-4]。TI公司的DS92LV1023和DS92LV1224分別是高速串行差分數據流串化器和解串器。

在系統上電後,DS92LV1023和DS92LV1224將所有輸出引腳置為三態後,啟動鎖相環跟蹤並鎖定本地的全局時鐘。LVDS串化器連續給數據接收端的解串器發送同步信號,當解串器鎖相環成功鎖定同步時鐘後,LVDS接口將串行數據送出。同理,LVDS解串器也需要與發送端同步後才能接收數據。若在數據傳輸的過程中解串器鎖相環失鎖,時鐘紊亂,則LOCK信號會置高電平以通知串化器進行再同步的操作。

為了延長LVDS數據的傳輸距離,在發送端和接收端分別增加了電纜驅動器和電纜均衡器,以此來增強差分信號的驅動和補償能力。驅動器CLC001AJE的傳輸速率最高可達622 Mb/s,通過配置外圍電阻將DS92LV1023輸出的低壓差分信號壓差從200 mV提升至0.9 V~1.1 V,有效增強了信號的驅動能力。在信號的接收端,信號經過屏蔽雙絞線傳輸,衰減後很容易造成碼間串擾,均衡器CLC014AJE可針對帶寬50 Mb/s~650 Mb/s的信號進行補償。恢復信號強度後,再通過DS92LV1224將串行數據解串[5]。LVDS數據發送、數據接收電路分別如圖3、圖4所示。

基于CPCI总线和LVDS的高速数据传输系统的设计基于CPCI总线和LVDS的高速数据传输系统的设计

3.2 軟件邏輯設計

LVDS邏輯控制示意圖如圖5所示,控制模塊由FPGA內部的FIFO完成數據的緩存。上電後,LVDS發送模塊向外部發送同步信號Sync,FIFO空標誌信號Prog_empty為0時,FIFO讀使能信號FIFO_rden_reg置1,將FIFO中的數據讀出,然後向外部接口發送,線上空閒時發送無效數據[6-7]

基于CPCI总线和LVDS的高速数据传输系统的设计

LVDS接收模塊在時鐘Rclk的上升沿,對從被測設備接收到的數據進行糾錯;在時鐘Rclk的下降沿,判斷若接收到的數據為有效數,則內部的數據有效信號置1,將有效數據發送給FIFO,通過主控制模塊上傳至CPCI總線。

4 CPCI總線接口實現

目前,CPCI總線接口的實現主要有2種方法:(1)使用可編程邏輯器件自行設計;(2)使用專用的協議轉換芯片,將CPCI總線轉換為用戶自定義的本地總線[8]。第二種傻瓜式的實現方法雖然不如第一種方法靈活,但勝在省時省力,簡單易用,開發週期短,因此應用較為廣泛。

4.1 PCI9054工作模式

本設計採用PLX公司的PCI9054協議轉換芯片,其本地工作模式採用邏輯控制簡單、開發難度較低的C模式,該模式下PCI9054芯片內部的地址線和數據線相互獨立,用戶可以自行定義需要的本地時序,實現CPCI接口的通信功能。CPCI接口與本地總線之間的數據傳輸有3種方式:PCI Initiator模式、PCI Target和DMA模式。PCI Target模式是CPCI主設備通過PCI9054發起對本地總線上資源的訪問;DMA模式即PCI9054通過控制CPCI和本地兩條總線來實現數據的突發傳輸。本設計主要工作是命令字的下發和數據的上傳,考慮操作的簡易度,對於命令字的下發採用Target模式下的單週期訪問模式,對於數據的上傳採用DMA模式突發傳輸[9]

PCI9054與CPCI總線的連接是通過CPCI連接器J1實現的,即PCI9054的CPCI信號通過串接10 Ω匹配電阻與J1的相應信號引腳連接,串接10 Ω電阻是為了減少總線分支因為較大的背板阻抗對總線產生的瞬態干擾,保證信號傳輸的準確性。PCI9054的本地時鐘由外部有源晶振提供,且與FPGA端的時鐘同步。在FPGA內部劃分一塊FIFO作為數據緩存,利用其雙口操作的特性實現數據的跨時鐘域傳輸,同時也方便了本地時序的設計。

4.2 CPCI本地總線接口實現

CPCI本地總線接口是本設計的核心所在。整個CPCI接口的設計思路是:主控芯片FPGA通過橋接PCI9054與CPCI總線交互,由其內部邏輯自定義本地總線的工作時序實現對總線的狀態控制,同時產生片內讀寫及地址信號完成單週期讀寫和突發傳輸的功能。在FPGA內部劃分一塊FIFO作為數據緩存來實現數據突發讀取,由其半滿信號作為上位機的讀取標誌。基於這種設計思路,為了保證通信的可靠性,本文設計了類似握手協議的通信方式,具體操作如圖6所示。

基于CPCI总线和LVDS的高速数据传输系统的设计

系統上電覆位後狀態機在S0狀態循環等待。當上位機下發指令時,CPCI總線將Lhold信號拉高來申請本地總線,本地總線將Lholda信號拉高作為應答信號將總線控制權交給PCI9054。然後CPCI總線將Ads#拉低,開啟新的總線傳輸,將命令字寫入約定好的地址LA0。FPGA在檢測到Ads#有效後離開S0進入S1狀態。判斷Blast#為低,進入單週期傳輸模式,判斷LW/R#為低,執行Target讀操作,即從CPCI總線接收上位機下發的命令字,然後拉高Ready#和Blast#表示單週期讀操作結束。接著狀態機返回S0繼續檢測Ads#信號。根據協議,FPGA會接著執行一次單週期Target寫操作,將收到的命令字向上位機返回,由上位機對比兩次命令字,結果一致表明命令下發成功,否則重新發送。這種增加反饋確認程序的命令下發模式有效保證了命令發送的準確性。

當下發的命令字要求上傳數據時,FPGA將內部FIFO緩存的半滿標誌根據協議寫入固定地址,上位機每間隔一定個CLK會自動執行一次單週期讀操作,讀取該地址的標示內容,若標示有效,則狀態機進入DMA突發傳輸模式時,結束後返回S0狀態,繼續讀取半滿標示,直到命令結束。

這種結合PCI Target單週期模式讀寫指令和DMA突發模式傳輸數據的傳輸模式,既在節省CPU資源的同時保證了命令的準確下發和反饋,也有效發揮了CPCI總線的高速傳輸數據的優勢

[10]

5 仿真與試驗結果分析

調試使用ISE配套的ChipScope Pro軟件實時分析本地總線操作時序,圖7為單週期讀操作時序。在上位機下發上傳數據的指令42H後,CPCI總線每400個CLK自動執行一次單週期讀操作,判斷地址0x3000內的數據標示是否為AA,如果是,說明緩存已準備好有效數據,上位機可以突發取數。經過390個CLK後,上位機開始突發取數,圖8為突發取數操作時序,上位機從地址0x0020~0x1820取走FPGA寫入的2K數據,每次突發4 B。實際工作時序與CPCI本地接口的理論時序一致。圖9是上位機解包後的原始數據,其中包標示用於區分模擬量和數字量,包計數用於鑑定丟包。整個數據文件幀結構完整,包計數連續,沒有丟數現象,進一步證明了本設計中CPCI接口與本地接口銜接合理,方案可行。

基于CPCI总线和LVDS的高速数据传输系统的设计
基于CPCI总线和LVDS的高速数据传输系统的设计基于CPCI总线和LVDS的高速数据传输系统的设计

6 結論

本設計以PCI9054和FPGA控制器為核心,以LVDS為數據傳輸接口,從軟硬件兩個方面介紹了CPCI總線和本地總線的交互設計,通過協議轉換芯片簡化了整個設計,完成了數據傳輸卡與上位機之間的通信。測試結果表明,本設計方案可行、可靠,同時也可以為PCI、PXI平臺的設計提供參考價值。

參考文獻

[1] 金海平.基於FPGA及CPCI總線的數據採集系統設計[D].長沙:國防科學技術大學,2013.

[2] 李北國,楊聖龍,李輝景.基於FPGA的LVDS高可靠性傳輸優化設計[J].電子技術應用,2018,44(8):78-81,85.

[3] 趙陽剛,郭濤,黃玉崗.基於FPGA和LVDS的彈載數據回讀系統設計[J].電子器件,2017,40(1):113-117.

[4] 郭虎峰,陳香香,李楠.基於LVDS總線和8b/10 b編碼技術的高速遠距離傳輸設計[J].自動化與儀表,2015,30(5):32-36.

[5] 任勇峰,彭巧君,劉佔峰.基於FPGA的CPCI高速讀數接口設計[J].電子器件,2015,38(1):148-151.

[6] 郭柳柳,儲成君,甄國湧,等.基於PXI總線高速數據傳輸卡的設計[J].計算機測量與控制,2014,22(6):1899-1901.

[7] 魏麗玲,朱平,石永亮.基於FPGA的圖像採集與存儲系統設計[J].電子技術應用,2015,41(11):67-69,73.

[8] PLX Technology.PCI 9054 Data Book.Version 2.1[Z].2000.

[9] 李昕龍,劉亞斌,周強.基於PXI/CPCI總線的LVDS數據收發模塊設計[J].微計算機信息,2012,28(9):105-106,273.

[10] 王曉君,宇文英,羅躍東.基於FPGA的CPCI和LVDS接口技術及應用[J].半導體技術,2007,32(3):248-251.

作者信息:

李 金,焦新泉,劉東海,王淑琴

(中北大學 電子測試技術國家重點實驗室,山西 太原030051)


分享到:


相關文章: