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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于RocketIO接口的高速互連應(yīng)用研究與實(shí)現(xiàn)

          基于RocketIO接口的高速互連應(yīng)用研究與實(shí)現(xiàn)

          作者: 時(shí)間:2012-04-25 來(lái)源:網(wǎng)絡(luò) 收藏

          摘要:在此立足于嵌入式的背景,在理解RapidIO協(xié)議和Fibre Channel協(xié)議的基礎(chǔ)上,通過(guò)對(duì)嵌入在FPGA內(nèi)的串行收發(fā)器工作原理的,結(jié)合某信號(hào)處理模塊的實(shí)際,在系統(tǒng)內(nèi)RapidIO功能,在系統(tǒng)間Fibre Channle功能,總結(jié)出接口的信號(hào)完整性設(shè)計(jì)的特點(diǎn),并進(jìn)行簡(jiǎn)單的鏈路傳輸特性的測(cè)試,為互連系統(tǒng)的設(shè)計(jì)與提供了可靠的技術(shù)支撐。
          關(guān)鍵詞:;RapidI();Fibre Channel;嵌入式應(yīng)用

          0 引言
          近年來(lái),多種新興的高性能互連技術(shù)相繼出現(xiàn),如RapidIO,PCI Express,F(xiàn)ibre Channel和InfiniBand等,它們大都采用報(bào)文交換的點(diǎn)到點(diǎn)互連結(jié)構(gòu)替代傳統(tǒng)并行總線結(jié)構(gòu),提供了高帶寬、低延遲、可擴(kuò)展的I/O互連,很大程度上克服了傳統(tǒng)并行總線結(jié)構(gòu)的種種弊端。其中RapidIO屬于系統(tǒng)內(nèi)部互連技術(shù),主要針對(duì)高性能嵌入式系統(tǒng)內(nèi)部互連,它可以作為處理器總線、本地I/O總線,還可以跨越背板連接處理器、存儲(chǔ)器和外部設(shè)備。RapidIO技術(shù)被定義為一種高性能,低引腳數(shù),報(bào)文交換的互連體系結(jié)構(gòu),能廣泛滿足嵌入式系統(tǒng)應(yīng)用的需求,支持芯片到芯片和板到板之間的互連技術(shù)。光纖通道(Fiber Channel,F(xiàn)C)是一種高速串行傳輸協(xié)議,具有高帶寬、高實(shí)時(shí)性、高可靠性、擴(kuò)展性好、傳輸速率高、抗干擾性強(qiáng)、拓?fù)浣Y(jié)構(gòu)和服務(wù)類型靈活、支持多種上層協(xié)議和底層傳輸介質(zhì)等特性,且可以在一路傳輸線上高達(dá)2.5 Gb/s的速率,具有相對(duì)于萬(wàn)兆以太網(wǎng),PCIe更高的傳輸速率。
          在嵌入式應(yīng)用方面,主流的FPGA中都已對(duì)差分信號(hào)提供了硬件支持,并且在片上集成了固化的Rocket IO模塊,以提供高超高速的串行通信支持。RocketIO位于數(shù)據(jù)傳輸協(xié)議的物理層,用以實(shí)現(xiàn)最基本的數(shù)據(jù)通信環(huán)境。
          本文從Xilinx的Virtex5系列FPGA的RocketIO高速串行收發(fā)器的工作原理入手,分別闡述了在一片F(xiàn)PGA上利用RapidIO協(xié)議和Fibre Chan nle協(xié)議實(shí)現(xiàn)高速信號(hào)傳輸?shù)姆椒ǎ⒎治隽薘ocketIO接口在硬件設(shè)計(jì)上需要注意的問(wèn)題。

          1 RocketIO介紹
          RocketIO為FPGA中內(nèi)嵌的硬核資源,是一種高速串行收發(fā)器,采用兩對(duì)差分線來(lái)進(jìn)行數(shù)據(jù)的發(fā)送和接收,可以實(shí)現(xiàn)兩個(gè)單工或一對(duì)全雙工的數(shù)據(jù)傳輸,通信碼率可以達(dá)到600 Mb/s~3.125 Gb/s。RocketIO收發(fā)器發(fā)送和接收串行差分信號(hào),工作于2.5 V的直流電壓下,采用CML(Current Mode Logic)模式,內(nèi)部帶有50 Ω或75 Ω的匹配電阻,采用串行數(shù)據(jù)收發(fā),可以在高頻條件下很好地避免數(shù)據(jù)間的串?dāng)_。

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

          b.JPG


          RocketIO收發(fā)器結(jié)構(gòu)如圖1所示,主要包括PMA和PCS兩個(gè)子層,PMA子層中集成了SERDES,發(fā)送和接收緩沖,時(shí)鐘發(fā)生器及時(shí)鐘恢復(fù)電路。SERDES是一個(gè)串并轉(zhuǎn)換器,負(fù)責(zé)FPGA中本地的32位并行數(shù)據(jù)(也可以是16位或8位)與Rocket IO接口的串行數(shù)據(jù)之間的轉(zhuǎn)換。時(shí)鐘發(fā)生器及時(shí)鐘恢復(fù)電路用于將時(shí)鐘與數(shù)據(jù)綁定發(fā)送及將時(shí)鐘從接收到的數(shù)據(jù)流中恢復(fù)出來(lái),從而避免了在高速傳輸條件下時(shí)鐘與數(shù)據(jù)分開(kāi)傳輸所帶來(lái)的時(shí)鐘抖動(dòng)等問(wèn)題。PCS子層負(fù)責(zé)8 b/10 b編碼解碼和CRC校驗(yàn),并集成了負(fù)責(zé)通道綁定和時(shí)鐘修正的彈性緩沖。8 b/10 b編碼可以避免數(shù)據(jù)流中出現(xiàn)連0連1的情況,便于時(shí)鐘的恢復(fù)。通道綁定通過(guò)在發(fā)送數(shù)據(jù)流中加入字符來(lái)將幾個(gè)RocketIO通道綁定成一個(gè)一致的并行通道,從而來(lái)提高數(shù)據(jù)的吞吐率。彈性緩沖可以解決恢復(fù)的時(shí)鐘與本地時(shí)鐘不一致的問(wèn)題,并進(jìn)行數(shù)據(jù)率的匹配,從而使得通道綁定成為可能。

          2 RocketIO在高速信號(hào)互連中的應(yīng)用
          以某信號(hào)處理模塊FC接口板卡為例,該模塊是一種高性能、具有高速串行接口、采用統(tǒng)一互連網(wǎng)絡(luò)的通用信號(hào)處理接口模塊,信號(hào)傳輸速率達(dá)到幾千兆位每秒,這時(shí)就需要具有足夠高傳輸速率的信號(hào)傳輸機(jī)制對(duì)信號(hào)進(jìn)行轉(zhuǎn)發(fā)。實(shí)現(xiàn)與主機(jī)板卡通信時(shí),采用RapidIO傳輸協(xié)議;實(shí)現(xiàn)系統(tǒng)網(wǎng)絡(luò)間通信時(shí),則可使用FibreChannle光纖通信協(xié)議。而RocketIO對(duì)多種高速傳輸協(xié)議的支持,可以使得RapidIO協(xié)議、Fibre Chan nle協(xié)議在同一片F(xiàn)PGA內(nèi)實(shí)現(xiàn),提高了系統(tǒng)的集成度,并使得信號(hào)的處理機(jī)制更加靈活。在本文的設(shè)計(jì)中,以Xilinx的Virtex5系列FPGA為平臺(tái),采用了RapidIO傳輸協(xié)議來(lái)實(shí)現(xiàn)與主機(jī)板卡的通信,采用Fibre channle協(xié)議來(lái)實(shí)現(xiàn)系統(tǒng)網(wǎng)絡(luò)間通信。本文涉及的接口模塊架構(gòu)如圖2所示。

          c.JPG


          上一頁(yè) 1 2 3 下一頁(yè)

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