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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 一種基于FPGA的高速通信系統(tǒng)研究與設計

          一種基于FPGA的高速通信系統(tǒng)研究與設計

          作者: 時間:2010-09-24 來源:網絡 收藏

            3.2 異步時鐘域變換

            系統(tǒng)輸入信號工作在不同的異步時鐘域,需要在內部將信號變換到同一個時鐘域。

            串口信號速度低,可以使用系統(tǒng)時鐘高速采集的方式。根據奈奎斯特抽樣定律,抽樣頻率大于2倍信號最高頻率,就可以從抽樣信號中無失真地恢復原信號。本系統(tǒng)使用高于5倍串口波特率的時鐘去采集串口數據。經過誤碼儀的大量測試,串口數據能夠被正確接收和恢復。

            視頻信號是并行信號,采用高速采集的方法會增加數據量,不適合本系統(tǒng)。本系統(tǒng)采用雙口FIFO完成異步時鐘域轉換。S3C500E片內的Block RAM資源可以靈活的生成雙口FIFO,與普通邏輯單元生成的雙口FIFO相比,它的穩(wěn)定性高,最高讀寫速度快,產生亞穩(wěn)定狀態(tài)的概率小。雙口FIFO的輸入端連接系統(tǒng)輸入信號的時鐘和數據;在輸出端連接系統(tǒng)時鐘數據。雙口FIFO的讀取時鐘速度必須高于寫入速度,以避免FIFO存滿后溢出導致有效數據丟失。另一方面,慢時鐘域向快時鐘域轉換的時候,FIFO會出現讀取空的狀態(tài),此時將取出無效數據(這些數據是FIFO中最后一個數據的重復)。無效數據通過串行數據幀傳輸到接收端,會導致恢復后輸出信號出現誤碼。所以系統(tǒng)將FIFO的空標志empty信號添加到數據幀,用于識別無效數據。

            3.3 數據組幀及編碼

            同步傳輸需要將原始數據組成數據幀再進行發(fā)送,即在數據間添加起始位、停止位和校驗位。數據幀的起始位過長會影響傳輸效率,過短會增加接收端識別的難度。本系統(tǒng)選用80 b為一幀,起始位為8 b,停止位為2 b,奇校驗位為1 b。接收端邏輯通過對多個數據幀分析后,定位數據幀的起始位。由于每幀數據長度固定,所以找到某一幀的起始位后可以周期性的計算出接下來各幀的起始位置,不再需要反復做識別工作。

            數據組幀后信號的平均位速率可能低于CLC012的最低工作頻率,不能直接用于傳輸,還需要對其進行8B/10B編碼。8B/10B技術是將8個數據位經過某種映射的機制轉化為10個數據位的字碼,可使發(fā)送的“O”、“1”數量保持一致,連續(xù)的“1”或“0”基本不超過5位。8 B/10 B編碼技術保證了傳輸的DC平衡,增加了信息傳輸的可靠性。系統(tǒng)使用Xilinx公司提供的8 B/10 B編碼和解碼IP核,減少了系統(tǒng)的開發(fā)周期,增加了系統(tǒng)的穩(wěn)定性。8 B/10 B編碼及解碼IP的模塊原理圖如圖6和圖7所示。

          一種基于FPGA的高速通信系統(tǒng)研究與設計

            4 結語

            介紹了一種基于,通過電纜驅動器和接收均衡器,拓展了LVDS信號的傳輸距離。經過測試,使用同軸電纜的傳輸距離達到200 m,單個通道傳輸速率達到120 Mb/s。的可重構性使系統(tǒng)靈活多變,可以適應不同的應用需求。


          上一頁 1 2 3 4 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();