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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的實(shí)時(shí)數(shù)字化光纖傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

          基于FPGA的實(shí)時(shí)數(shù)字化光纖傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

          作者: 時(shí)間:2017-06-05 來源:網(wǎng)絡(luò) 收藏

          在電子設(shè)計(jì)領(lǐng)域中,通常要對(duì)多路寬帶信號(hào)進(jìn)行實(shí)時(shí)采集、處理和傳輸。傳統(tǒng)的信號(hào)采集傳輸系統(tǒng),采用專用集成電路控制A/D轉(zhuǎn)換器等外圍電路。由于專用集成電路時(shí)鐘頻率低、靈活性差、實(shí)時(shí)性低、傳輸速度慢、通用性差等缺點(diǎn),難以滿足對(duì)高速寬帶信號(hào)采集和處理的要求。具有時(shí)鐘頻率高、速度快、采集實(shí)時(shí)性高、控制靈活等特點(diǎn),與A/D轉(zhuǎn)換器等外圍電路結(jié)合,更適于高速數(shù)字信號(hào)處理。光纖傳輸與電氣傳輸相比,具有傳輸頻帶寬、通信容量大、傳輸損耗低、抗電磁干擾性能強(qiáng)、抗輻射能力強(qiáng)、保密性好、重量輕等特點(diǎn),在通信領(lǐng)域被廣泛應(yīng)用。

          文中提出基于和光纖傳輸?shù)?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/高速數(shù)字信號(hào)傳輸">高速數(shù)字信號(hào)傳輸方案。以帶有收發(fā)器的高性能為控制核心,控制外圍A/D轉(zhuǎn)換器和數(shù)據(jù)處理,通過光纖媒介進(jìn)行數(shù)據(jù)傳輸,滿足高速數(shù)字信號(hào)實(shí)時(shí)處理和傳輸?shù)?br />要求。

          本文引用地址:http://www.ex-cimer.com/article/201706/349001.htm

          1 系統(tǒng)總體設(shè)計(jì)方案

          光纖傳輸系統(tǒng)是以光波為信息載體、光纖為傳輸媒介,用光來傳輸信息的傳輸系統(tǒng)。光纖傳輸系統(tǒng)總體框圖如圖1所示,發(fā)送端主要由A/D采集、FPGA數(shù)據(jù)預(yù)處理、光纖發(fā)送模塊組成;接收端主要由光纖接收模塊、FPGA數(shù)據(jù)后處理、D/A轉(zhuǎn)換模塊組成。兩者通過光纖進(jìn)行通訊。

          在發(fā)送端,先將外部輸入的模擬信號(hào)進(jìn)行預(yù)處理,再通過A/D轉(zhuǎn)換器轉(zhuǎn)化為數(shù)字信號(hào)送入FPGA進(jìn)行處理。根據(jù)數(shù)據(jù)傳輸以及通信協(xié)議的要求,F(xiàn)PGA將預(yù)處理后的A/D數(shù)據(jù)進(jìn)行編碼、成幀。然后由FPGA內(nèi)部的IP核進(jìn)行并串轉(zhuǎn)換,最后由光收發(fā)模塊完成電光轉(zhuǎn)換后,通過光纖發(fā)送出去。

          在接收端,光收發(fā)器模塊將接收到的光信號(hào)轉(zhuǎn)化為電信號(hào),完成高速串行數(shù)據(jù)到并行數(shù)據(jù)的轉(zhuǎn)換;然后,將轉(zhuǎn)換后的并行數(shù)據(jù)送入FPG A,F(xiàn)PGA完成信號(hào)的解幀、解碼,并進(jìn)行后處理,該過程是發(fā)送端的逆過程。最后,經(jīng)D/A轉(zhuǎn)換器將接收到的數(shù)據(jù)恢復(fù)成模擬信號(hào)。

          2 硬件電路設(shè)計(jì)

          2.1 發(fā)送端硬件電路設(shè)計(jì)

          可編程邏輯器件FPGA是主控芯片,是系統(tǒng)的核心,設(shè)計(jì)選用Altera公司帶有收發(fā)器的Arria GX系列芯片EP1AGX50CF48416。芯片內(nèi)部集成了4個(gè)收發(fā)器通道,傳輸數(shù)據(jù)率從600 Mbit·s-1到3.152Gbit·s-1,收發(fā)器每通道在2.5 Gbit·s-1時(shí)消耗功率僅為125 mW;收發(fā)器可利用固定均衡設(shè)置來均衡串行通道,實(shí)現(xiàn)發(fā)送預(yù)加重和接收均衡;收發(fā)器支持串行環(huán)回、反向串行環(huán)回以及偽隨機(jī)二進(jìn)制序列(PRBS)產(chǎn)生器和校驗(yàn)器。專用收發(fā)器接口電路如圖2所示。RREFB14接一個(gè)2kΩ/1%的參考電阻,其他未使用的收發(fā)管腳通過10kΩ電阻到電源或地。

          光收發(fā)模塊選用MXP-243S-X型光收發(fā)器,其可處理的數(shù)據(jù)率為1.25 Gbit·s-1,單電源3.3 V供電,差分LVPECL電平輸入和輸出,發(fā)射和接收部分相互獨(dú)立。發(fā)射部分差分輸入阻抗100 Ω,傳輸光信號(hào)波長(zhǎng)1310nm。光發(fā)射器電路圖如圖3所示。發(fā)射的差分?jǐn)?shù)據(jù)接到FPGA的專用收發(fā)器的發(fā)射管腳G4和G5上,控制引腳直接接到普通L/O管腳,并通過上拉電阻接到電源。

          2.2 接收端電路設(shè)計(jì)

          接收端FPGA也選用Altera公司的Arria GX系列芯片EP1AGX20CF48416。光收發(fā)模塊仍選用MXP-243S-X型光收發(fā)器。電路連接只需將圖3中的RD+、RD-端口直接接到光收發(fā)器TLK1501。

          為了與下級(jí)系統(tǒng)匹配,設(shè)計(jì)串行收發(fā)器選用TI公司的TLK1501,支持最高1.2 Gbit·s-1的數(shù)據(jù)帶寬。其內(nèi)部集成有8 B/10 B編碼器、并串轉(zhuǎn)換器、差分輸入輸出接口、8 B/10 B解碼器、串并轉(zhuǎn)換器、時(shí)鐘管理模塊等。內(nèi)部有自檢環(huán)路,可方便地進(jìn)行自檢,并集成信號(hào)丟失檢測(cè),支持熱拔插,其電路如圖4所示。

          R201,R202,R204,R205為50Ω匹配電阻,R203為參考電阻200Ω,R206和R207提供終端匹配所需要的偏置電壓。

          3 軟件設(shè)計(jì)

          設(shè)計(jì)采用自頂向下的模塊化設(shè)計(jì)方法,用Verilog硬件語言編程,實(shí)現(xiàn)FPGA對(duì)光纖接口處芯片、A/D和 D/A轉(zhuǎn)換器等外圍電路的控制。

          3.1 發(fā)送端FPGA程序設(shè)計(jì)

          發(fā)送端FPGA邏輯設(shè)計(jì)主要包括采樣存儲(chǔ)邏輯、校驗(yàn)、成幀及編碼邏輯和光發(fā)送器接口邏輯。

          3.1.1 采樣存儲(chǔ)邏輯

          采樣存儲(chǔ)邏輯完成數(shù)據(jù)的采集以及實(shí)時(shí)存儲(chǔ)。其邏輯形式及原理框圖如圖5所示。

          AT84AS001是ADC芯片。輸入的差分?jǐn)?shù)據(jù)直接接到FPGA的專用差分引腳。采集存儲(chǔ)控制邏輯包括LVDS接收以及數(shù)據(jù)重組等模塊,通過LVDS接收器將雙沿時(shí)鐘變?yōu)閱窝兀瑪?shù)據(jù)重組模塊進(jìn)行數(shù)據(jù)重新排序,還原原始數(shù)據(jù)流。最后在FIFO中進(jìn)行緩存。

          3.1.2 校驗(yàn)、成幀及編碼邏輯

          校驗(yàn)、成幀及編碼邏輯完成數(shù)據(jù)格式轉(zhuǎn)換,將處理后的數(shù)據(jù)進(jìn)行CRC編碼、成幀、8B/10B編碼和并串轉(zhuǎn)換。算法流程如圖6所示。



          3.1.3 光發(fā)送器接口邏輯

          光發(fā)送器接口邏輯完成幀數(shù)據(jù)到高速串行數(shù)據(jù)流的轉(zhuǎn)換。直接利用FPGA內(nèi)部的專用收發(fā)器,其結(jié)構(gòu)如圖7所示。

          幀數(shù)據(jù)首先南發(fā)射相位補(bǔ)償FIFO模塊進(jìn)行相位補(bǔ)償,抵消時(shí)鐘相位差,然后通過字節(jié)串行器將數(shù)據(jù)轉(zhuǎn)換為8位,接著進(jìn)行8B/10B編碼,并由串行器轉(zhuǎn)換為高速數(shù)據(jù)流,由專用差分輸出口輸出。

          3.2 接收端FPGA程序設(shè)計(jì)

          發(fā)送端FPGA邏輯設(shè)計(jì)主要包括光接收器接口邏輯和解碼、解幀及校驗(yàn)邏輯。

          3.2.1 光接收器接口邏輯

          TLK1501有一個(gè)狀態(tài)機(jī),負(fù)責(zé)監(jiān)測(cè)不同的工作狀態(tài),即同步捕獲模式、同步模式和誤碼檢測(cè)模式。上電或復(fù)位后,狀態(tài)機(jī)進(jìn)入同步捕獲模式,當(dāng)接收到3個(gè)連續(xù)的IDLE碼或載波擴(kuò)展碼或1個(gè)有效數(shù)據(jù)或錯(cuò)誤延時(shí),即進(jìn)入同步模式。在同步模式下進(jìn)行數(shù)據(jù)的正常接收與發(fā)送。在這個(gè)模式下,TLK1501接收到一個(gè)無效代碼,狀態(tài)機(jī)立即進(jìn)入誤碼檢測(cè)模式。檢測(cè)模式收到4個(gè)連續(xù)無效代碼時(shí),TLK1501立即重新進(jìn)入捕獲模式。TLK1501同步狀態(tài)機(jī)如圖8所示。

          光接收器接口邏輯完成高速串行數(shù)據(jù)流到低速并行數(shù)據(jù)的轉(zhuǎn)換。使用串行收發(fā)器TLK1501,其結(jié)構(gòu)框圖如圖9所示。

          由專用差分端口輸入的高速數(shù)據(jù)經(jīng)時(shí)鐘恢復(fù)單元進(jìn)行時(shí)鐘恢復(fù),串并轉(zhuǎn)換后進(jìn)行10B/8B解碼,最后傳給FPGA進(jìn)行解幀操作。

          3.2.2 解碼、解幀及校驗(yàn)邏輯

          解碼、解幀及校驗(yàn)邏輯完成數(shù)據(jù)格式轉(zhuǎn)換,將接收到的數(shù)據(jù)進(jìn)行10B/8B解碼、解幀和CRC校驗(yàn),獲得有效數(shù)據(jù)。算法流程如圖10所示。


          4 實(shí)驗(yàn)仿真及波形

          圖11是TLK1501穩(wěn)定傳輸數(shù)據(jù)效果。由圖可以看出,TLK1501實(shí)現(xiàn)了實(shí)時(shí)穩(wěn)定傳輸數(shù)據(jù)。

          圖12是數(shù)據(jù)收發(fā)誤碼測(cè)試的仿真波形圖。data_all是到當(dāng)前時(shí)鐘為止已測(cè)試的數(shù)據(jù)總量,data_err是到當(dāng)前時(shí)鐘為止傳輸錯(cuò)誤的數(shù)據(jù)總量,可以看出,在傳輸了百億個(gè)數(shù)據(jù)后,誤碼仍為零。


          5 結(jié)束語

          研究設(shè)計(jì)了一種基于FPGA和方案。實(shí)驗(yàn)結(jié)果表明,該方案實(shí)現(xiàn)了高速數(shù)字信號(hào)的實(shí)時(shí)傳輸,具有信號(hào)傳輸誤碼率低、系統(tǒng)工作性能穩(wěn)定、抗干擾性強(qiáng)的優(yōu)點(diǎn),由于實(shí)際需要,系統(tǒng)在接收端采用TLK1501,這就限制了光纖傳輸?shù)乃俾剩舨捎肍PGA內(nèi)部的光纖收發(fā)模塊,則可進(jìn)一步提高傳輸速率。



          評(píng)論


          相關(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); })();