文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.183275
中文引用格式: 李金,焦新泉,劉東海,等. 基于CPCI總線和LVDS的高速數(shù)據(jù)傳輸系統(tǒng)的設(shè)計[J].電子技術(shù)應(yīng)用,2019,45(4):60-63,68.
英文引用格式: Li Jin,Jiao Xinquan,Liu Donghai,et al. Design of high speed data transmission system based on CPCI Bus and LVDS[J]. Application of Electronic Technique,2019,45(4):60-63,68.
0 引言
隨著科學技術(shù)的迅猛發(fā)展,越來越大的數(shù)據(jù)傳輸量和越來越高的數(shù)據(jù)傳輸速率成為信號處理系統(tǒng)亟待解決的問題。因而,開發(fā)一種能夠?qū)崟r處理大量高速數(shù)據(jù),同時兼具穩(wěn)定性和通用性的新總線成為整個數(shù)據(jù)鏈技術(shù)中迫切需要解決的瓶頸之一。CPCI (緊湊外圍設(shè)備互聯(lián)總線)結(jié)合了PCI總線的電氣特性和歐式卡的機械標準,可提供132 MB/s的峰值帶寬[1],同時CPCI構(gòu)架開放,性能優(yōu)良,在可靠性、兼容性和機械性能等方面均有優(yōu)勢。 因此,CPCI總線已成為當今應(yīng)用最廣泛的工業(yè)計算機總線,基于CPCI總線的工業(yè)控制計算機已經(jīng)成為解決大量高速數(shù)據(jù)處理的一個新方向。
基于某測試任務(wù),本文詳細闡述了通過CPCI總線接口和LVDS接口接收和傳輸測試數(shù)據(jù),在保證可靠性的前期下,提高了地面設(shè)備接收和處理數(shù)據(jù)的速度。測試結(jié)果表明,此方法可行可靠,圓滿完成了測試任務(wù)。
1 總體設(shè)計
本設(shè)計的主要工作是對外接CPCI設(shè)備進行命令下發(fā)、狀態(tài)檢測及數(shù)據(jù)接收操作。其主要工作流程是:由上位機下發(fā)命令字控制整個系統(tǒng)的正常運行,主控芯片XC3S400通過PCI9054橋接從背板總線接收主機卡發(fā)出的命令字,完成邏輯控制;通過RS422接口與外接設(shè)備進行通信,控制外接設(shè)備進入相應(yīng)的工作狀態(tài)以及接收其相應(yīng)的狀態(tài)返回;通過LVDS接口接收外接設(shè)備的高速數(shù)據(jù),將數(shù)據(jù)寫入FPGA的FIFO后,由PCI9054通過DMA控制器將接收的數(shù)據(jù)回傳至主機卡??傮w設(shè)計框圖如圖1所示。
整個設(shè)計以FPGA為控制核心,充分利用其強大的可編程能力[2],能夠靈活控制總線傳輸速率等多個指標,在增加系統(tǒng)通用性的同時,也充分發(fā)揮了CPCI總線高速傳輸?shù)膬?yōu)勢。
2 RS422接口設(shè)計
RS422接口用來下發(fā)命令字和接收狀態(tài)字,由于信號碼率較低,為625 kb/s,因此設(shè)計中主要考慮傳輸?shù)姆€(wěn)定性和可靠性。本設(shè)計針對此問題首先選擇了抗干擾性強的差分對信號傳輸數(shù)字量,同時對信號采取隔離措施,以防止前后級設(shè)備之間的互相干擾。接口電路示意圖如圖2所示。
該接口電路選用ADI公司的磁隔離全雙工收發(fā)器ADM2682E,無需外接DC/DC隔離模塊。但是輸入輸出的供電引腳需要電源旁路,噪聲抑制需要一個低電感高頻電容,紋波抑制需要一個大容量電容。為了抑制噪聲和降低紋波,至少需要并聯(lián)兩個電容,其中容值較小的電容靠近器件擺放。因此,在器件的VCC與GND1,VISOIN、VISOOUT與GND2之間均要加去耦電容。
差分輸入端R2將差分輸入正端上拉至VISO,R4將差分輸入負端接地,這樣做的好處是可以防止因為差分信號長距離傳輸造成的信號削弱,阻值均選擇1 kΩ;因為數(shù)據(jù)傳輸電纜為特性阻抗為100 Ω的第五類屏蔽雙絞線,R3的作用是可以減少信號的反射和衰減,提高數(shù)據(jù)傳輸?shù)目煽啃?,阻值選為120 Ω。
3 LVDS接口設(shè)計
3.1 硬件接口
LVDS技術(shù)采用低壓擺幅和和低電流驅(qū)動輸出,具有很強的抗干擾性[2-4]。TI公司的DS92LV1023和DS92LV1224分別是高速串行差分數(shù)據(jù)流串化器和解串器。
在系統(tǒng)上電后,DS92LV1023和DS92LV1224將所有輸出引腳置為三態(tài)后,啟動鎖相環(huán)跟蹤并鎖定本地的全局時鐘。LVDS串化器連續(xù)給數(shù)據(jù)接收端的解串器發(fā)送同步信號,當解串器鎖相環(huán)成功鎖定同步時鐘后,LVDS接口將串行數(shù)據(jù)送出。同理,LVDS解串器也需要與發(fā)送端同步后才能接收數(shù)據(jù)。若在數(shù)據(jù)傳輸?shù)倪^程中解串器鎖相環(huán)失鎖,時鐘紊亂,則LOCK信號會置高電平以通知串化器進行再同步的操作。
為了延長LVDS數(shù)據(jù)的傳輸距離,在發(fā)送端和接收端分別增加了電纜驅(qū)動器和電纜均衡器,以此來增強差分信號的驅(qū)動和補償能力。驅(qū)動器CLC001AJE的傳輸速率最高可達622 Mb/s,通過配置外圍電阻將DS92LV1023輸出的低壓差分信號壓差從200 mV提升至0.9 V~1.1 V,有效增強了信號的驅(qū)動能力。在信號的接收端,信號經(jīng)過屏蔽雙絞線傳輸,衰減后很容易造成碼間串擾,均衡器CLC014AJE可針對帶寬50 Mb/s~650 Mb/s的信號進行補償?;謴?fù)信號強度后,再通過DS92LV1224將串行數(shù)據(jù)解串[5]。LVDS數(shù)據(jù)發(fā)送、數(shù)據(jù)接收電路分別如圖3、圖4所示。
3.2 軟件邏輯設(shè)計
LVDS邏輯控制示意圖如圖5所示,控制模塊由FPGA內(nèi)部的FIFO完成數(shù)據(jù)的緩存。上電后,LVDS發(fā)送模塊向外部發(fā)送同步信號Sync,F(xiàn)IFO空標志信號Prog_empty為0時,F(xiàn)IFO讀使能信號FIFO_rden_reg置1,將FIFO中的數(shù)據(jù)讀出,然后向外部接口發(fā)送,線上空閑時發(fā)送無效數(shù)據(jù)[6-7]。
LVDS接收模塊在時鐘Rclk的上升沿,對從被測設(shè)備接收到的數(shù)據(jù)進行糾錯;在時鐘Rclk的下降沿,判斷若接收到的數(shù)據(jù)為有效數(shù),則內(nèi)部的數(shù)據(jù)有效信號置1,將有效數(shù)據(jù)發(fā)送給FIFO,通過主控制模塊上傳至CPCI總線。
4 CPCI總線接口實現(xiàn)
目前,CPCI總線接口的實現(xiàn)主要有2種方法:(1)使用可編程邏輯器件自行設(shè)計;(2)使用專用的協(xié)議轉(zhuǎn)換芯片,將CPCI總線轉(zhuǎn)換為用戶自定義的本地總線[8]。第二種傻瓜式的實現(xiàn)方法雖然不如第一種方法靈活,但勝在省時省力,簡單易用,開發(fā)周期短,因此應(yīng)用較為廣泛。
4.1 PCI9054工作模式
本設(shè)計采用PLX公司的PCI9054協(xié)議轉(zhuǎn)換芯片,其本地工作模式采用邏輯控制簡單、開發(fā)難度較低的C模式,該模式下PCI9054芯片內(nèi)部的地址線和數(shù)據(jù)線相互獨立,用戶可以自行定義需要的本地時序,實現(xiàn)CPCI接口的通信功能。CPCI接口與本地總線之間的數(shù)據(jù)傳輸有3種方式:PCI Initiator模式、PCI Target和DMA模式。PCI Target模式是CPCI主設(shè)備通過PCI9054發(fā)起對本地總線上資源的訪問;DMA模式即PCI9054通過控制CPCI和本地兩條總線來實現(xiàn)數(shù)據(jù)的突發(fā)傳輸。本設(shè)計主要工作是命令字的下發(fā)和數(shù)據(jù)的上傳,考慮操作的簡易度,對于命令字的下發(fā)采用Target模式下的單周期訪問模式,對于數(shù)據(jù)的上傳采用DMA模式突發(fā)傳輸[9]。
PCI9054與CPCI總線的連接是通過CPCI連接器J1實現(xiàn)的,即PCI9054的CPCI信號通過串接10 Ω匹配電阻與J1的相應(yīng)信號引腳連接,串接10 Ω電阻是為了減少總線分支因為較大的背板阻抗對總線產(chǎn)生的瞬態(tài)干擾,保證信號傳輸?shù)臏蚀_性。PCI9054的本地時鐘由外部有源晶振提供,且與FPGA端的時鐘同步。在FPGA內(nèi)部劃分一塊FIFO作為數(shù)據(jù)緩存,利用其雙口操作的特性實現(xiàn)數(shù)據(jù)的跨時鐘域傳輸,同時也方便了本地時序的設(shè)計。
4.2 CPCI本地總線接口實現(xiàn)
CPCI本地總線接口是本設(shè)計的核心所在。整個CPCI接口的設(shè)計思路是:主控芯片F(xiàn)PGA通過橋接PCI9054與CPCI總線交互,由其內(nèi)部邏輯自定義本地總線的工作時序?qū)崿F(xiàn)對總線的狀態(tài)控制,同時產(chǎn)生片內(nèi)讀寫及地址信號完成單周期讀寫和突發(fā)傳輸?shù)墓δ?。在FPGA內(nèi)部劃分一塊FIFO作為數(shù)據(jù)緩存來實現(xiàn)數(shù)據(jù)突發(fā)讀取,由其半滿信號作為上位機的讀取標志?;谶@種設(shè)計思路,為了保證通信的可靠性,本文設(shè)計了類似握手協(xié)議的通信方式,具體操作如圖6所示。
系統(tǒng)上電復(fù)位后狀態(tài)機在S0狀態(tài)循環(huán)等待。當上位機下發(fā)指令時,CPCI總線將Lhold信號拉高來申請本地總線,本地總線將Lholda信號拉高作為應(yīng)答信號將總線控制權(quán)交給PCI9054。然后CPCI總線將Ads#拉低,開啟新的總線傳輸,將命令字寫入約定好的地址LA0。FPGA在檢測到Ads#有效后離開S0進入S1狀態(tài)。判斷Blast#為低,進入單周期傳輸模式,判斷LW/R#為低,執(zhí)行Target讀操作,即從CPCI總線接收上位機下發(fā)的命令字,然后拉高Ready#和Blast#表示單周期讀操作結(jié)束。接著狀態(tài)機返回S0繼續(xù)檢測Ads#信號。根據(jù)協(xié)議,F(xiàn)PGA會接著執(zhí)行一次單周期Target寫操作,將收到的命令字向上位機返回,由上位機對比兩次命令字,結(jié)果一致表明命令下發(fā)成功,否則重新發(fā)送。這種增加反饋確認程序的命令下發(fā)模式有效保證了命令發(fā)送的準確性。
當下發(fā)的命令字要求上傳數(shù)據(jù)時,F(xiàn)PGA將內(nèi)部FIFO緩存的半滿標志根據(jù)協(xié)議寫入固定地址,上位機每間隔一定個CLK會自動執(zhí)行一次單周期讀操作,讀取該地址的標示內(nèi)容,若標示有效,則狀態(tài)機進入DMA突發(fā)傳輸模式時,結(jié)束后返回S0狀態(tài),繼續(xù)讀取半滿標示,直到命令結(jié)束。
這種結(jié)合PCI Target單周期模式讀寫指令和DMA突發(fā)模式傳輸數(shù)據(jù)的傳輸模式,既在節(jié)省CPU資源的同時保證了命令的準確下發(fā)和反饋,也有效發(fā)揮了CPCI總線的高速傳輸數(shù)據(jù)的優(yōu)勢[10]。
5 仿真與試驗結(jié)果分析
調(diào)試使用ISE配套的ChipScope Pro軟件實時分析本地總線操作時序,圖7為單周期讀操作時序。在上位機下發(fā)上傳數(shù)據(jù)的指令42H后,CPCI總線每400個CLK自動執(zhí)行一次單周期讀操作,判斷地址0x3000內(nèi)的數(shù)據(jù)標示是否為AA,如果是,說明緩存已準備好有效數(shù)據(jù),上位機可以突發(fā)取數(shù)。經(jīng)過390個CLK后,上位機開始突發(fā)取數(shù),圖8為突發(fā)取數(shù)操作時序,上位機從地址0x0020~0x1820取走FPGA寫入的2K數(shù)據(jù),每次突發(fā)4 B。實際工作時序與CPCI本地接口的理論時序一致。圖9是上位機解包后的原始數(shù)據(jù),其中包標示用于區(qū)分模擬量和數(shù)字量,包計數(shù)用于鑒定丟包。整個數(shù)據(jù)文件幀結(jié)構(gòu)完整,包計數(shù)連續(xù),沒有丟數(shù)現(xiàn)象,進一步證明了本設(shè)計中CPCI接口與本地接口銜接合理,方案可行。
6 結(jié)論
本設(shè)計以PCI9054和FPGA控制器為核心,以LVDS為數(shù)據(jù)傳輸接口,從軟硬件兩個方面介紹了CPCI總線和本地總線的交互設(shè)計,通過協(xié)議轉(zhuǎn)換芯片簡化了整個設(shè)計,完成了數(shù)據(jù)傳輸卡與上位機之間的通信。測試結(jié)果表明,本設(shè)計方案可行、可靠,同時也可以為PCI、PXI平臺的設(shè)計提供參考價值。
參考文獻
[1] 金海平.基于FPGA及CPCI總線的數(shù)據(jù)采集系統(tǒng)設(shè)計[D].長沙:國防科學技術(shù)大學,2013.
[2] 李北國,楊圣龍,李輝景.基于FPGA的LVDS高可靠性傳輸優(yōu)化設(shè)計[J].電子技術(shù)應(yīng)用,2018,44(8):78-81,85.
[3] 趙陽剛,郭濤,黃玉崗.基于FPGA和LVDS的彈載數(shù)據(jù)回讀系統(tǒng)設(shè)計[J].電子器件,2017,40(1):113-117.
[4] 郭虎峰,陳香香,李楠.基于LVDS總線和8b/10 b編碼技術(shù)的高速遠距離傳輸設(shè)計[J].自動化與儀表,2015,30(5):32-36.
[5] 任勇峰,彭巧君,劉占峰.基于FPGA的CPCI高速讀數(shù)接口設(shè)計[J].電子器件,2015,38(1):148-151.
[6] 郭柳柳,儲成君,甄國涌,等.基于PXI總線高速數(shù)據(jù)傳輸卡的設(shè)計[J].計算機測量與控制,2014,22(6):1899-1901.
[7] 魏麗玲,朱平,石永亮.基于FPGA的圖像采集與存儲系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2015,41(11):67-69,73.
[8] PLX Technology.PCI 9054 Data Book.Version 2.1[Z].2000.
[9] 李昕龍,劉亞斌,周強.基于PXI/CPCI總線的LVDS數(shù)據(jù)收發(fā)模塊設(shè)計[J].微計算機信息,2012,28(9):105-106,273.
[10] 王曉君,宇文英,羅躍東.基于FPGA的CPCI和LVDS接口技術(shù)及應(yīng)用[J].半導體技術(shù),2007,32(3):248-251.
作者信息:
李 金,焦新泉,劉東海,王淑琴
(中北大學 電子測試技術(shù)國家重點實驗室,山西 太原030051)