<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計應(yīng)用 > 基于cPCI總線的高速數(shù)據(jù)光纖傳輸系統(tǒng)的實(shí)現(xiàn)

          基于cPCI總線的高速數(shù)據(jù)光纖傳輸系統(tǒng)的實(shí)現(xiàn)

          作者: 時間:2007-08-23 來源:網(wǎng)絡(luò) 收藏

          摘要:介紹一種的點(diǎn)到點(diǎn),提出了用現(xiàn)場可編程大規(guī)模集成邏輯器件取代分立元件完成接口卡設(shè)計及力求達(dá)到更高的傳輸速率的思想,并實(shí)際設(shè)計了這種想法。著重介紹了系統(tǒng)的硬件結(jié)構(gòu)設(shè)計和軟件功能,給出了選用的主要芯片的型號。實(shí)驗(yàn)證明該系統(tǒng)工作穩(wěn)定,達(dá)到了設(shè)計指標(biāo)要求。
          關(guān)鍵字,F(xiàn)PGA,傳輸,PCI9056

          1.引言

          設(shè)計的關(guān)鍵是主機(jī)接口卡的設(shè)計與。傳統(tǒng)的做法是采用分立元件,由若干個模塊構(gòu)成。大多數(shù)的設(shè)計都類似于如下結(jié)構(gòu)[1]:接口的主要功能模塊包括光電信號轉(zhuǎn)換接口(O/E和E/O)、串行化和解串行化模塊(TX和RX)、數(shù)據(jù)緩存F I F O 、c PCI 控制器和可編程邏輯模塊(FPGA或CPLD)或DSP。各模塊中O/E和E/O 實(shí)現(xiàn)通道串行光信號和串行電信號之間的相互轉(zhuǎn)換。TX和RX 實(shí)現(xiàn)將串行電信號和并行電信號的相互轉(zhuǎn)換功能。F I F O 主要實(shí)現(xiàn)通道和 之間信號的緩沖。cPCI 控制器實(shí)現(xiàn)FIFO 輸出的信號與32 位標(biāo)準(zhǔn)cPCI 信號的轉(zhuǎn)換。FPGA或CPLD 負(fù)責(zé)各模塊之間的時序協(xié)調(diào)和傳輸控制。分析以上方案可見,各模塊功能都是由分立芯片完成的。這樣各芯片間的互連勢必會影響傳輸速率,也將使PCB板的布局布線變得復(fù)雜,使傳輸延時增大,進(jìn)一步降低傳輸速率。而隨著FPGA(Field Programmable Gate Array)技術(shù)的不斷發(fā)展,其容量、功能、可靠性以及響應(yīng)速度都在不斷的提高。用一片F(xiàn)PGA完全可以實(shí)現(xiàn)計算機(jī)與光纖通道之間的數(shù)據(jù)傳輸與處理。鑒于此,本論文的設(shè)計將用一片F(xiàn)PGA來實(shí)現(xiàn)串行信號與并行信號的相互轉(zhuǎn)換、數(shù)據(jù)緩沖以及時序協(xié)調(diào)和傳輸控制等以前用分立元件實(shí)現(xiàn)的功能。

          2.系統(tǒng)原理及實(shí)現(xiàn)

          本系統(tǒng)由兩臺PC機(jī)、兩塊接口卡及一根光纖組成。系統(tǒng)設(shè)計關(guān)鍵是cPCI的接口卡。接口卡采用標(biāo)準(zhǔn)的3U板設(shè)計,由總線控制器芯片、可編程邏輯控制器、光電轉(zhuǎn)換驅(qū)動器等組成。其結(jié)構(gòu)框圖如下圖所示。

          圖1 系統(tǒng)原理圖

          本系統(tǒng)設(shè)計的目的是應(yīng)用于雷達(dá)數(shù)據(jù)的傳輸,主要解決點(diǎn)對點(diǎn)的數(shù)據(jù)傳輸問題。為了、可靠的傳輸雷達(dá)信號,決定采用光纖作為傳輸媒介,充分利用光纖傳輸損耗小、抗干擾能力強(qiáng)、傳輸速率高等優(yōu)點(diǎn)。其工作流程是這樣的:發(fā)送端PC機(jī)通過cPCI接口將要發(fā)送的數(shù)據(jù)送入FPGA,F(xiàn)PGA對數(shù)據(jù)信號進(jìn)行驅(qū)動并實(shí)現(xiàn)數(shù)據(jù)緩沖、并串轉(zhuǎn)換等所必需的信號處理過程后形成串行信號,串行電信號經(jīng)電光轉(zhuǎn)換器轉(zhuǎn)換成串行光信號送入光纖進(jìn)行傳輸。在接收端,經(jīng)光電轉(zhuǎn)換器將光信號轉(zhuǎn)換成串行電信號送入FPGA,F(xiàn)PGA對數(shù)據(jù)信號進(jìn)行驅(qū)動并實(shí)現(xiàn)串并轉(zhuǎn)換、數(shù)據(jù)緩沖等所必需的信號處理過程,然后通過cPCI接口進(jìn)入PC機(jī)進(jìn)行存儲以待分析處理。設(shè)計主要分為硬件設(shè)計和軟件設(shè)計兩部分。

          一、硬件設(shè)計部分

          籠統(tǒng)來說,本設(shè)計主要是要完成主機(jī)接口的實(shí)現(xiàn)。主機(jī)接口是實(shí)現(xiàn)高速數(shù)據(jù)傳輸和數(shù)據(jù)存儲的一個關(guān)鍵環(huán)節(jié)。主要完成高速數(shù)據(jù)流的信號轉(zhuǎn)換,實(shí)現(xiàn)數(shù)據(jù)在主機(jī)上的存儲,同時減少CPU對存儲過程的干預(yù)。CompactPCI簡稱cPCI,是國際PICMG協(xié)會于1994年提出來的一種總線接口標(biāo)準(zhǔn)。它的出現(xiàn)解決了多年來電信系統(tǒng)工程師與設(shè)備制造商面臨的棘手問題:將VME密集堅固的封裝和大型設(shè)備的極佳冷卻效果以及PC廉價的易采用具有最新處理能力的芯片結(jié)合在一起,既保證99.999%的高可靠度,又降低硬件和軟件的開發(fā)成本。因此希望通過cPCI總線利用DMA方式完成數(shù)據(jù)的傳輸與存儲。由圖1知,接口的主要功能模塊包括電光(光電)信號轉(zhuǎn)換模塊、可編成邏輯模塊FPGA和cPCI總線接口模塊。接口各模塊中,O/E和E/O實(shí)現(xiàn)光信號與電信號的相互轉(zhuǎn)換。FPGA實(shí)現(xiàn)幾乎所有的信號處理工作,比如實(shí)現(xiàn)數(shù)據(jù)的串行、并行轉(zhuǎn)換與最終通過光纖進(jìn)行數(shù)據(jù)傳輸;實(shí)現(xiàn)FIFO功能進(jìn)行信號緩沖,在高速數(shù)據(jù)傳輸中緩存是很重要的,它協(xié)調(diào)了數(shù)據(jù)發(fā)送端和接收端之間的數(shù)據(jù)傳輸速度,防止由于數(shù)據(jù)流速度的波動導(dǎo)致傳輸?shù)氖?;?shí)現(xiàn)各模塊之間的時序協(xié)調(diào)和傳輸控制等。cPCI總線接口卡實(shí)現(xiàn)FPGA輸出的信號與32位標(biāo)準(zhǔn)cPCI信號的轉(zhuǎn)換,通過DMA方式實(shí)現(xiàn)cPCI總線到主機(jī)的數(shù)據(jù)存儲。主要的研究與設(shè)計重點(diǎn)在cPCI總線接口模塊、可編程邏輯模塊FPGA和光電轉(zhuǎn)換模塊。

          (1)cPCI總線接口模塊

          目前,cPCI總線接口的設(shè)計與PCI接口的設(shè)計一樣,一般采用兩種方案,即可編程邏輯器件和專用總線接口器件??删幊踢壿嬈骷歉鶕?jù)PCI協(xié)議在FPGA或CPLD中實(shí)現(xiàn)PCI總線接口控制器,但是由于PCI協(xié)議的復(fù)雜性,使得開發(fā)難度大,周期長,而且很難在短期內(nèi)達(dá)到系統(tǒng)穩(wěn)定,這種方法比較適合于大批量生產(chǎn)的情況。對于一般的開發(fā)者來說,大都采用現(xiàn)成的PCI接口器件。這類專用接口器件具有較低的成本和通用性,能夠優(yōu)化數(shù)據(jù)傳輸,提供配置空間,具備用于猝發(fā)傳輸功能的片內(nèi)FIFO等,是一種省時省力的方案。這類專用芯片有很多,如PLX公司的PCI總線目標(biāo)接口器件PCI9052、PCI9054,PCI9056,AMCC公司的S5933等。由于cPCI總線的時鐘頻率是66MHz,數(shù)據(jù)寬度為32位,故本設(shè)計中選用PLX公司的專業(yè)總線接口芯片PCI9056作為總線接口控制器,它符合PCI2.2規(guī)范,是32位、66MHz的PCI總線主控I/O加速器,適用于通用的32位、66MHz的局部總線設(shè)計,局部總線猝發(fā)速度可達(dá)264MB/s,支持DMA通道,F(xiàn)IFO緩沖區(qū)大,是一款性價比比較高的芯片。它的本地總線可為三種模式:M模式,C模式和J模式,可利用模式選擇引腳加以選擇。本設(shè)計選用C模式,即32位的地址/數(shù)據(jù)總線非復(fù)用。

          (2)可編程邏輯模塊FPGA。

          FPGA選用了altera公司Stratix GX系列的EP1SGX10CF672[2]。Stratix GX器件系列是Altera第二代收發(fā)器的FPGA系列,為需要高達(dá)3.125Gbps數(shù)據(jù)率的應(yīng)用提供了一條低風(fēng)險的實(shí)現(xiàn)方式。Stratix GX千兆位收發(fā)器功能塊是嵌入式收發(fā)器功能塊,它具有四個全雙工通道,使用時鐘數(shù)據(jù)恢復(fù)(CDR),傳輸速率高達(dá)3.125Gbps。每個通道具有實(shí)現(xiàn)數(shù)據(jù)恢復(fù)/傳送、串行/解串、解碼/編碼和同步處理等不同階段的專用電路。同可編程邏輯結(jié)構(gòu)的無縫接口確保了可靠的數(shù)據(jù)傳輸、最大數(shù)據(jù)吞吐量和簡化的時序分析。它兼容光纖通道、串行Rapid I/O等接口協(xié)議,集成8b/10b編解碼器。本次設(shè)計主要使用了其8b/10b編解碼模塊及光纖通道協(xié)議。另外,這款芯片內(nèi)部含有PLL,且其內(nèi)部FIFO緩沖區(qū)比較大。正是由于該系列芯片功能、容量以及響應(yīng)速度的大幅度提升,使得一片芯片完成多個分立芯片的功能成為可能,進(jìn)而提高系統(tǒng)的數(shù)據(jù)傳輸速率。

          (3)光電轉(zhuǎn)換模塊

          光電轉(zhuǎn)換驅(qū)動器選用了Infineon公司的V23818-M305-L57。這款芯片數(shù)據(jù)速率高達(dá)2.215GBd,兼容光纖通道協(xié)議,具有良好的EMI性能。由于該芯片差分輸出信號的電平是PECL或LVPECL的,而后面FPGA的高速串行收發(fā)器的差分接收信號電平是PCML的,兩種接口標(biāo)準(zhǔn)的共模電壓不同,所以要采用AC耦合電路來完成兩種電平的轉(zhuǎn)換。耦合電容的選擇既不能太大也不能太小。如果太大,將嚴(yán)重減緩信號的傳輸速度,且由于充放電時間過長,對快速變化信號的響應(yīng)將變得很壞;如果太小,將改變線路的阻抗特性,增大衰減。綜合考慮這兩種要求,耦合電容的容值在0.01µF比較適當(dāng)。外部DC偏置電路可以省去,因?yàn)镾tratix GX器件的高速收發(fā)器輸入管腳內(nèi)置的有DC偏置電路,所以所需要的共模電壓會在器件內(nèi)部產(chǎn)生。

          二、軟件設(shè)計部分

          接口卡的軟件設(shè)計主要包括兩個部分,一個是FPGA控制程序的編寫,一個是板卡驅(qū)動程序的編寫。以下本文主要就接收端FPGA控制程序的編寫加以詳細(xì)論述。正如前面所述,F(xiàn)PGA主要完成時序協(xié)調(diào)和傳輸控制,以及數(shù)據(jù)流的串并轉(zhuǎn)換和緩存。整個系統(tǒng)的控制采用有限狀態(tài)機(jī)[3]。其狀態(tài)轉(zhuǎn)換圖如下:


          圖2 接收狀態(tài)轉(zhuǎn)換圖

          狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換以及各個狀態(tài)下信號的處理完全依據(jù)PCI9056的Local端到PCI端的DMA傳輸時序圖。其時序圖如下圖所示:

          轉(zhuǎn)換流程分為3個狀態(tài):idle ,prel,dma_read。idle為空閑狀態(tài),上電復(fù)位后首先進(jìn)入此狀態(tài),在此期間總線無任何操作,只是不斷檢測ADS#信號,一旦檢測到這個信號有效,就進(jìn)入下一個狀態(tài)。prel是一過渡狀態(tài)。根據(jù)PCI9056的DMA傳輸時序圖可知,每次一個新的總線接入有效(即ADS#有效)后的第一個數(shù)據(jù)會持續(xù)兩個時鐘周期(其后的數(shù)據(jù)持續(xù)一個時鐘周期),其中,第一個時鐘周期并不采集數(shù)據(jù),而只是使從設(shè)備準(zhǔn)備好信號(即READY#)有效,第二個時鐘周期才開始采集第一個數(shù)據(jù)。所以,此過渡狀態(tài)主要是使READY#信號在采集數(shù)據(jù)前一個周期有效。dma_read狀態(tài)期間執(zhí)行從局部總線到cPCI總線的DMA操作,在每次時鐘的上升沿采集數(shù)據(jù),直到突發(fā)長度內(nèi)的最后一個數(shù)據(jù),BLAST#信號有效,下一個時鐘周期,狀態(tài)機(jī)又回到空閑狀態(tài),等待下一次傳輸?shù)拈_始。對數(shù)據(jù)的處理是按照數(shù)據(jù)的流向逐步完成的[4][5]。首先經(jīng)過OE轉(zhuǎn)換的串行數(shù)據(jù)進(jìn)入FPGA,經(jīng)由FPGA內(nèi)部的串行高速收發(fā)通道完成解碼及第一步的串并轉(zhuǎn)換,這時由1bit串行數(shù)據(jù)變?yōu)?bits并行數(shù)據(jù);其次由于cPCI局部總線數(shù)據(jù)線寬度為32位,所以第二步的串并轉(zhuǎn)換要完成8bits數(shù)據(jù)到32bits數(shù)據(jù)的轉(zhuǎn)換。其過程是,用4個8bits的D觸發(fā)器來連續(xù)鎖存輸入的8bits的數(shù)據(jù),再用一個32bits的D觸發(fā)器來同時鎖存4個8bits的數(shù)據(jù)以形成32bits寬的數(shù)據(jù)輸出;最后為了對數(shù)據(jù)進(jìn)行緩沖,完成數(shù)據(jù)速率的轉(zhuǎn)換,將數(shù)據(jù)存入一32位寬異步FIFO。該異步FIFO的寫時鐘是從串行數(shù)據(jù)提取出的隨路時鐘,讀時鐘是與總線控制器PCI9056的局部時鐘同頻的由板上提供的外部66M時鐘。

          3.總結(jié)

          本文作者的創(chuàng)新點(diǎn)在于用一塊高性能FPGA取代了傳統(tǒng)上采用分立元件設(shè)計高速的方法,從而簡化了電路設(shè)計,減少了元器件間的互連,不但節(jié)省了板卡的面積,而且極大的提高了傳輸速率。該課題基于實(shí)驗(yàn)室承擔(dān)的項(xiàng)目,主要用于雷達(dá)數(shù)據(jù)的傳輸。設(shè)計指標(biāo)要求采樣點(diǎn)數(shù)為16384,脈沖重復(fù)頻率(PRF)6K以上?;诖酥笜?biāo)要求并行數(shù)據(jù)采樣時鐘頻率應(yīng)不低于50MHz,這樣傳輸速率理論上可以高達(dá)200MB/s以上。實(shí)驗(yàn)證明該系統(tǒng)的軟硬件設(shè)計是成功的。該點(diǎn)到點(diǎn)高速光纖數(shù)據(jù)傳輸系統(tǒng)不但適用于雷達(dá)數(shù)據(jù)的傳輸,同時在高速數(shù)據(jù)采集、遠(yuǎn)程控制等方面也具有廣闊的應(yīng)用前景。

          參考文獻(xiàn):

          1. 宋克柱,王硯方,“適用作遠(yuǎn)程實(shí)時數(shù)據(jù)采集平臺的光纖通訊系統(tǒng)”, 數(shù)據(jù)采集與處理,第16卷第2期2001年6月
          2. sgx_handbook
          3. 楊進(jìn),魏軼偉,何寧,熊劍平,賈惠波,“基于光纖通道的高速數(shù)據(jù)傳輸系統(tǒng)主機(jī)接口設(shè)計”,計算機(jī)工程與應(yīng)用,2002年第22期
          4. GE ZHOU,YIMO ZHANG, WEI LIU, “Optical Fiber Interconnection for the Scalable Parallel Computing System”, PROCEEDINGS OF THE IEEE,VOL.88,NO.6,JUNE 2000

          5.劉小俊,宋仲康,“基于VHDL語言的全雙工異步接收發(fā)送器電路設(shè)計”,《微計算機(jī)信息》(測控自動化),2005年第21卷第1期



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();