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