文獻標(biāo)識碼: 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 引言
隨著科學(xué)技術(shù)的迅猛發(fā)展,越來越大的數(shù)據(jù)傳輸量和越來越高的數(shù)據(jù)傳輸速率成為信號處理系統(tǒng)亟待解決的問題,。因而,,開發(fā)一種能夠?qū)崟r處理大量高速數(shù)據(jù),同時兼具穩(wěn)定性和通用性的新總線成為整個數(shù)據(jù)鏈技術(shù)中迫切需要解決的瓶頸之一,。CPCI (緊湊外圍設(shè)備互聯(lián)總線)結(jié)合了PCI總線的電氣特性和歐式卡的機械標(biāo)準(zhǔn),,可提供132 MB/s的峰值帶寬[1],同時CPCI構(gòu)架開放,,性能優(yōu)良,,在可靠性、兼容性和機械性能等方面均有優(yōu)勢,。 因此,,CPCI總線已成為當(dāng)今應(yīng)用最廣泛的工業(yè)計算機總線,基于CPCI總線的工業(yè)控制計算機已經(jīng)成為解決大量高速數(shù)據(jù)處理的一個新方向,。
基于某測試任務(wù),,本文詳細(xì)闡述了通過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ù)回傳至主機卡,。總體設(shè)計框圖如圖1所示,。
整個設(shè)計以FPGA為控制核心,,充分利用其強大的可編程能力[2],能夠靈活控制總線傳輸速率等多個指標(biāo),,在增加系統(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將差分輸入負(fù)端接地,,這樣做的好處是可以防止因為差分信號長距離傳輸造成的信號削弱,,阻值均選擇1 kΩ;因為數(shù)據(jù)傳輸電纜為特性阻抗為100 Ω的第五類屏蔽雙絞線,,R3的作用是可以減少信號的反射和衰減,,提高數(shù)據(jù)傳輸?shù)目煽啃裕柚颠x為120 Ω,。
3 LVDS接口設(shè)計
3.1 硬件接口
LVDS技術(shù)采用低壓擺幅和和低電流驅(qū)動輸出,,具有很強的抗干擾性[2-4]。TI公司的DS92LV1023和DS92LV1224分別是高速串行差分?jǐn)?shù)據(jù)流串化器和解串器,。
在系統(tǒng)上電后,,DS92LV1023和DS92LV1224將所有輸出引腳置為三態(tài)后,啟動鎖相環(huán)跟蹤并鎖定本地的全局時鐘,。LVDS串化器連續(xù)給數(shù)據(jù)接收端的解串器發(fā)送同步信號,,當(dāng)解串器鎖相環(huán)成功鎖定同步時鐘后,LVDS接口將串行數(shù)據(jù)送出,。同理,,LVDS解串器也需要與發(fā)送端同步后才能接收數(shù)據(jù)。若在數(shù)據(jù)傳輸?shù)倪^程中解串器鎖相環(huán)失鎖,,時鐘紊亂,,則LOCK信號會置高電平以通知串化器進行再同步的操作。
為了延長LVDS數(shù)據(jù)的傳輸距離,,在發(fā)送端和接收端分別增加了電纜驅(qū)動器和電纜均衡器,,以此來增強差分信號的驅(qū)動和補償能力。驅(qū)動器CLC001AJE的傳輸速率最高可達(dá)622 Mb/s,,通過配置外圍電阻將DS92LV1023輸出的低壓差分信號壓差從200 mV提升至0.9 V~1.1 V,,有效增強了信號的驅(qū)動能力。在信號的接收端,,信號經(jīng)過屏蔽雙絞線傳輸,,衰減后很容易造成碼間串?dā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空標(biāo)志信號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ù)臏?zhǔn)確性,。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ā)讀取,,由其半滿信號作為上位機的讀取標(biāo)志?;谶@種設(shè)計思路,,為了保證通信的可靠性,本文設(shè)計了類似握手協(xié)議的通信方式,,具體操作如圖6所示,。
系統(tǒng)上電復(fù)位后狀態(tài)機在S0狀態(tài)循環(huán)等待。當(dāng)上位機下發(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ā)送,。這種增加反饋確認(rèn)程序的命令下發(fā)模式有效保證了命令發(fā)送的準(zhǔn)確性,。
當(dāng)下發(fā)的命令字要求上傳數(shù)據(jù)時,F(xiàn)PGA將內(nèi)部FIFO緩存的半滿標(biāo)志根據(jù)協(xié)議寫入固定地址,,上位機每間隔一定個CLK會自動執(zhí)行一次單周期讀操作,,讀取該地址的標(biāo)示內(nèi)容,若標(biāo)示有效,,則狀態(tài)機進入DMA突發(fā)傳輸模式時,,結(jié)束后返回S0狀態(tài),繼續(xù)讀取半滿標(biāo)示,,直到命令結(jié)束,。
這種結(jié)合PCI Target單周期模式讀寫指令和DMA突發(fā)模式傳輸數(shù)據(jù)的傳輸模式,既在節(jié)省CPU資源的同時保證了命令的準(zhǔn)確下發(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ù)標(biāo)示是否為AA,,如果是,,說明緩存已準(zhǔn)備好有效數(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ù),,其中包標(biāo)示用于區(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].長沙:國防科學(xué)技術(shù)大學(xué),,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ù)的高速遠(yuǎn)距離傳輸設(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].半導(dǎo)體技術(shù),2007,,32(3):248-251.
作者信息:
李 金,,焦新泉,劉東海,,王淑琴
(中北大學(xué) 電子測試技術(shù)國家重點實驗室,,山西 太原030051)