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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 串行RapidIO交換技術(shù)

          串行RapidIO交換技術(shù)

          作者: 時(shí)間:2012-10-23 來源:網(wǎng)絡(luò) 收藏

          2 原理
          傳輸層的包格式被設(shè)計(jì)為獨(dú)立于結(jié)構(gòu),如此系統(tǒng)互聯(lián)就可以采用特定應(yīng)用所需的任何。通常是圍繞機(jī)來組織的,除了交換機(jī)以外RapidIO網(wǎng)絡(luò)的另一個(gè)基本結(jié)構(gòu)是端點(diǎn)(Endpoints)。端點(diǎn)是數(shù)據(jù)包的發(fā)送者和接受者,交換機(jī)用來對端點(diǎn)之間傳送數(shù)據(jù)包。RapidIO使用器件ID唯一地識別網(wǎng)絡(luò)中的所有器件,幾乎可以支持任何系統(tǒng)拓?fù)浣Y(jié)構(gòu)。器件ID內(nèi)部不包含關(guān)于器件具體位置的信息?;ヂ?lián)器件負(fù)責(zé)發(fā)現(xiàn)器件的具體位置并且通過目標(biāo)器件ID轉(zhuǎn)發(fā)包。在系統(tǒng)啟動(dòng)時(shí)的系統(tǒng)發(fā)現(xiàn)(System Discovery)階段找到器件在系統(tǒng)中的位置。雖然交換機(jī)不知道器件在系統(tǒng)中的確切位置,但通過編程可以使交換機(jī)理解器件在系統(tǒng)中所處的方位。當(dāng)器件位置改變時(shí)——可能發(fā)生熱插拔(Hot Swap)或路徑故障情況下,只需重新配置交換機(jī)就可以獲得新的拓?fù)浣Y(jié)構(gòu)。
          RapidIO中,器件與器件問的通信是通過發(fā)送包含源和目的器件ID包進(jìn)行的。器件ID是位于包頭的8位或16位字段,交換芯片通過器件ID將包轉(zhuǎn)發(fā)到最終目的。交換芯片使用查找表保持器件ID和正確的輸出端口問的關(guān)系。只要包給定了器件ID,交換芯片就能夠?yàn)槠湔业捷敵龆丝?。由于器件ID字段相對較小并且使用了哈希關(guān)鍵字來縮小查找表,所以交換機(jī)可以很快查找并且不會(huì)增加RapidIO包通過交換器件的傳輸延遲。
          由于目的和源器件ID都包含在包頭中,所以交換機(jī)和端點(diǎn)不僅知道包去向何處,而且知道包的來處。系統(tǒng)可以使用源器件ID來送回一個(gè)響應(yīng),表明正確的操作已經(jīng)完成或出現(xiàn)一個(gè)錯(cuò)誤條件。RapidIO僅通過硬件結(jié)構(gòu)來得到可靠的信道,使得在有限信任系統(tǒng)中來回搬移數(shù)據(jù)的效率較高。

          3 RapidIO交換功能方案設(shè)計(jì)
          3.1 方案概述
          在雷達(dá)信號處理、數(shù)字圖像處理領(lǐng)域,海量數(shù)據(jù)高速實(shí)時(shí)處理至關(guān)重要。由于FPGA芯片在大數(shù)據(jù)量的底層算法處理上的優(yōu)勢及DSP芯片在復(fù)雜算法處理上的優(yōu)勢,DSP+FPGA的系統(tǒng)構(gòu)架越來越廣泛,這就使得FPGA與DSP芯片之間數(shù)據(jù)的實(shí)時(shí)通信至關(guān)重要。本方案正是基于這種需求,設(shè)計(jì)了一種基于RapidIO的交換模塊。在保證系統(tǒng)中DSP與FPGA之間數(shù)據(jù)高速交換的同時(shí),由于采用了Tsi578交換芯片,DSP與FPGA之間的互聯(lián)網(wǎng)絡(luò)可根據(jù)不同需要重新配置,既可在系統(tǒng)工作之前對互聯(lián)網(wǎng)絡(luò)進(jìn)行配置,也可在運(yùn)行過程中修改DSP于FPGA的互聯(lián),達(dá)到互聯(lián)網(wǎng)絡(luò)的靜態(tài)和動(dòng)態(tài)可重構(gòu)。
          3.2 Tsi578芯片及其交換功能實(shí)現(xiàn)
          RapidIO互聯(lián)應(yīng)用中,通常不直接將端點(diǎn)器件直接相連,而是利用交換結(jié)構(gòu)構(gòu)建可重構(gòu)的動(dòng)態(tài)網(wǎng)絡(luò),其中交換芯片作為組成交換結(jié)構(gòu)核心部件。目前市面上專業(yè)的RapidIO芯片提供商包括IDT公司、PMC—Serial公司和Mercure公司,其中IDT公司在合并原來的Tundra公司后產(chǎn)品最全。設(shè)計(jì)選取的交換芯片為IDT公司的Tsi578芯片。該款交換芯片是聚合帶寬達(dá)80Gbit·s-1的全雙工RapidIO交換器,符合1.3版本的串行RapidIO規(guī)范,適用于網(wǎng)狀、矩陣架構(gòu)與集成系統(tǒng)的高度可擴(kuò)展解決方案。該芯片可配置高達(dá)8個(gè)4×模式鏈接或16個(gè)1×模式鏈接單個(gè)鏈路支持1.25、2.5及3.125 Gbit·s-1的速率。有關(guān)端口完全獨(dú)立,且交換器支持混合的速度及帶寬配置。
          Tsi578每個(gè)端口都有各自獨(dú)立的查找表,各端口支持兩種模式的操作:Flat mode和Hierachical mode。Flat mode是默認(rèn)的模式,支持ID的范圍為0~511,超出該范圍的包將被路由到寄存器設(shè)置的默認(rèn)端口。Hierarchical mode可尋址的最大范圍為6 400。以Flatmode為例,如圖2所示為一個(gè)典型的該模式的路由方式。Tsi578收到包后先進(jìn)行完整性檢查,例如CRC校驗(yàn)等,并通過物理層發(fā)送確認(rèn)信號給源器件,再由邏輯端口定位到目的ID。如果ID256則查找本地查找表,如包A目的IDox12對應(yīng)的輸出端口為端口2,那么該包的輸入端口將與端口2連通;若目的ID≥256而512則查找全局查找表,如包C目的IDox145對應(yīng)的輸出端口為端口9,那么該包的輸入端口將與端口9連同;所有目的ID>512的包將被發(fā)送到默認(rèn)端口14。

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

          b.JPG


          在具體應(yīng)用中,通過對Tsi578內(nèi)部寄存器進(jìn)行正確的配置來實(shí)現(xiàn)其路由、鏈路維護(hù)和系統(tǒng)重構(gòu)等功能。配置方式包括:(1)通過I2C總線從E2ROM中讀取配置信息。(2)通過配置軟件經(jīng)JJAG接口在線配置。(3)發(fā)送RapidIO維護(hù)包對寄存器進(jìn)行配置。
          上述配置方式中,第一種在Tsi578上電時(shí)完成對寄存器的配置,通過刷新E2ROM中的內(nèi)容實(shí)現(xiàn)靜態(tài)的鏈路重構(gòu);第二種為系統(tǒng)調(diào)試狀態(tài)時(shí)采用的配置方式,可隨時(shí)更改配置信息;第三種方式在系統(tǒng)正常工作的情況下可通過發(fā)送維護(hù)包隨時(shí)更改配置信息,實(shí)現(xiàn)鏈路的動(dòng)態(tài)重構(gòu)。正是由于Tsi578配置的靈活性,大大方便了可重構(gòu)分布式并行處理網(wǎng)絡(luò)設(shè)計(jì)的設(shè)計(jì)。



          關(guān)鍵詞: 技術(shù) 交換 RapidIO 串行

          評論


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