<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 牛人業(yè)話(huà) > FPGA研發(fā)之道(22)-交換矩陣

FPGA研發(fā)之道(22)-交換矩陣

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

  如果在設計中,需要多端口,大數據量的交換,那么則是一個(gè)不錯的實(shí)現方案。使用的目的主要有幾個(gè),一,靈活的端口轉發(fā)。通過(guò)靈活實(shí)現數據流的靈活交換,減少外部負責控制。 二,高效的轉發(fā)效率,交換矩陣能夠實(shí)現通常單一總線(xiàn)不能達到的轉發(fā)效率,滿(mǎn)足高吞吐量的系統的需要。三,系統設計以交換矩陣為中心,便于IP集成和模塊復用。

本文引用地址:http://dyxdggzs.com/article/266274.htm

  交換矩陣的實(shí)現方案較為復雜,最早的交換沿襲了共享總線(xiàn)式的架構,因此對于某個(gè)端口需要傳輸,則其他端口只能阻塞,等待總線(xiàn)空閑后再進(jìn)行傳輸。而交換矩陣則是一個(gè)全互聯(lián)的結構。如下圖所示,如有4個(gè)輸入,4個(gè)輸出的交換矩陣,可認為是一個(gè)4端口的交換單元,每個(gè)端口包含一個(gè)發(fā)送接口和一個(gè)接收模塊,如端口0就包含發(fā)送模塊m0和接收模塊s0。

  

 

  假設每路傳輸的速率為N,則整個(gè)交換矩陣的傳輸速率為4N。如何實(shí)現一個(gè)簡(jiǎn)單的交換矩陣。首先可以將整速率個(gè)設計分割。將整個(gè)設計分割為接受和發(fā)送兩個(gè)模塊。整個(gè)交換單元可以劃分為四個(gè)部分,分別是,發(fā)送模塊,仲裁模塊,交換模塊,接收模塊。

  (1) 發(fā)送模塊,首先根據某端口接收數據后,根據該數據幀要轉發(fā)的端口,發(fā)起請求信號。

  (2) 仲裁模塊:根據請求信號,接收模塊的忙閑狀態(tài),及各發(fā)送模塊的優(yōu)先級,確定當前的響應信號,如果當前的接收模塊忙(上次傳輸未完成),則需要阻塞,等待上次傳輸完成(復雜的設計,可以保證高優(yōu)先級能夠打斷當前傳輸,直接傳輸高優(yōu)先級數據流,高優(yōu)先級完成后,再恢復原有傳輸,但這種方式設計較為復雜,仿真驗證的難度也較大,不建議使用)。

  (3) 交換模塊:根據仲裁信號確定發(fā)送模塊轉發(fā)的端口,交換模塊本質(zhì)上是多選一的MUX,而MUX的選擇信號,則是由仲裁模塊來(lái)進(jìn)行選擇。

  (4) 接收模塊:接收交換模塊交換后的數據流,向仲裁模塊返回當前模塊的忙閑狀態(tài)(正在接收傳輸信號,為忙狀態(tài),而當前無(wú)傳輸狀態(tài),則為閑狀態(tài))。

  仲裁模塊的仲裁機制,一般可以使用簡(jiǎn)單的round-robin的設計,即輪流最高優(yōu)先級。也可以通過(guò)設計帶加權的優(yōu)先級,保證更高優(yōu)先級的端口優(yōu)先進(jìn)行傳輸。

  仲裁模塊的仲裁設計可以分為多種,一種是整個(gè)交換矩陣使用同一個(gè)仲裁單元,每個(gè)發(fā)送模塊只使用一個(gè)請求信號及請求端口號連接到仲裁模塊。這種設計對整個(gè)仲裁模塊設計難度較大。另一種設計,如下圖所示,即每個(gè)接收單元,配置一個(gè)仲裁模塊,和一個(gè)交換模塊。而每個(gè)發(fā)送模塊根據要發(fā)送的端口,使用多個(gè)發(fā)送的請求信號。此種設計便于系統擴展,也可簡(jiǎn)化設計。

  

 

  不僅是用于高速多端口轉發(fā)的數據流傳輸采用交換矩陣?,F在,大多高速總線(xiàn)機制(如N主設備,M從設備之間進(jìn)行數據的交換)也采用類(lèi)似交換矩陣式的結構,每個(gè)從設備的連接都是多個(gè)主設備通過(guò)MUX來(lái)進(jìn)行連接,這樣保證多個(gè)主設備訪(fǎng)問(wèn)不同從設備時(shí),可以實(shí)現并行的數據交換(如主設備M0訪(fǎng)問(wèn)從設備S1,主設備M1訪(fǎng)問(wèn)從設備S2,可以同時(shí)進(jìn)行總線(xiàn)操作)。這是單一競爭式總線(xiàn)所不能達到的優(yōu)勢,但是,設計占用的邏輯量也會(huì )增加。性能的增加帶來(lái)的負面影響通常就是邏輯的增加。

  交換矩陣通常在基于數據包轉發(fā)的設計應用中,交換矩陣的交換靈活性增加,也會(huì )增加設計復雜度,如果對于傳輸效率不需太多的需求,可以采用系統復用的方式(前文介紹),通過(guò)一個(gè)復用模塊輪流接收各個(gè)發(fā)送端口的數據流,,再根據端口轉發(fā)到各個(gè)從設備中,此種方式設計簡(jiǎn)單,但是此復用模塊則會(huì )成為系統的瓶頸。根據系統的設計需求,選擇適合的設計,達到性能和邏輯方面的平衡,是體現設計藝術(shù)之一。

fpga相關(guān)文章:fpga是什么




關(guān)鍵詞: FPGA 交換矩陣

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>