FPGA研發(fā)之道(22)-交換矩陣
如果在FPGA設(shè)計中,需要多端口,大數(shù)據(jù)量的交換,那么交換矩陣則是一個不錯的實(shí)現(xiàn)方案。交換矩陣使用的目的主要有幾個,一,靈活的端口轉(zhuǎn)發(fā)。通過交換矩陣靈活實(shí)現(xiàn)數(shù)據(jù)流的靈活交換,減少外部負(fù)責(zé)控制。 二,高效的轉(zhuǎn)發(fā)效率,交換矩陣能夠?qū)崿F(xiàn)通常單一總線不能達(dá)到的轉(zhuǎn)發(fā)效率,滿足高吞吐量的系統(tǒng)的需要。三,系統(tǒng)設(shè)計以交換矩陣為中心,便于IP集成和模塊復(fù)用。
本文引用地址:http://cafeforensic.com/article/266274.htm交換矩陣的實(shí)現(xiàn)方案較為復(fù)雜,最早的交換沿襲了共享總線式的架構(gòu),因此對于某個端口需要傳輸,則其他端口只能阻塞,等待總線空閑后再進(jìn)行傳輸。而交換矩陣則是一個全互聯(lián)的結(jié)構(gòu)。如下圖所示,如有4個輸入,4個輸出的交換矩陣,可認(rèn)為是一個4端口的交換單元,每個端口包含一個發(fā)送接口和一個接收模塊,如端口0就包含發(fā)送模塊m0和接收模塊s0。
假設(shè)每路傳輸?shù)乃俾蕿镹,則整個交換矩陣的傳輸速率為4N。如何實(shí)現(xiàn)一個簡單的交換矩陣。首先可以將整速率個設(shè)計分割。將整個設(shè)計分割為接受和發(fā)送兩個模塊。整個交換單元可以劃分為四個部分,分別是,發(fā)送模塊,仲裁模塊,交換模塊,接收模塊。
(1) 發(fā)送模塊,首先根據(jù)某端口接收數(shù)據(jù)后,根據(jù)該數(shù)據(jù)幀要轉(zhuǎn)發(fā)的端口,發(fā)起請求信號。
(2) 仲裁模塊:根據(jù)請求信號,接收模塊的忙閑狀態(tài),及各發(fā)送模塊的優(yōu)先級,確定當(dāng)前的響應(yīng)信號,如果當(dāng)前的接收模塊忙(上次傳輸未完成),則需要阻塞,等待上次傳輸完成(復(fù)雜的設(shè)計,可以保證高優(yōu)先級能夠打斷當(dāng)前傳輸,直接傳輸高優(yōu)先級數(shù)據(jù)流,高優(yōu)先級完成后,再恢復(fù)原有傳輸,但這種方式設(shè)計較為復(fù)雜,仿真驗(yàn)證的難度也較大,不建議使用)。
(3) 交換模塊:根據(jù)仲裁信號確定發(fā)送模塊轉(zhuǎn)發(fā)的端口,交換模塊本質(zhì)上是多選一的MUX,而MUX的選擇信號,則是由仲裁模塊來進(jìn)行選擇。
(4) 接收模塊:接收交換模塊交換后的數(shù)據(jù)流,向仲裁模塊返回當(dāng)前模塊的忙閑狀態(tài)(正在接收傳輸信號,為忙狀態(tài),而當(dāng)前無傳輸狀態(tài),則為閑狀態(tài))。
仲裁模塊的仲裁機(jī)制,一般可以使用簡單的round-robin的設(shè)計,即輪流最高優(yōu)先級。也可以通過設(shè)計帶加權(quán)的優(yōu)先級,保證更高優(yōu)先級的端口優(yōu)先進(jìn)行傳輸。
仲裁模塊的仲裁設(shè)計可以分為多種,一種是整個交換矩陣使用同一個仲裁單元,每個發(fā)送模塊只使用一個請求信號及請求端口號連接到仲裁模塊。這種設(shè)計對整個仲裁模塊設(shè)計難度較大。另一種設(shè)計,如下圖所示,即每個接收單元,配置一個仲裁模塊,和一個交換模塊。而每個發(fā)送模塊根據(jù)要發(fā)送的端口,使用多個發(fā)送的請求信號。此種設(shè)計便于系統(tǒng)擴(kuò)展,也可簡化設(shè)計。
不僅是用于高速多端口轉(zhuǎn)發(fā)的數(shù)據(jù)流傳輸采用交換矩陣。現(xiàn)在,大多高速總線機(jī)制(如N主設(shè)備,M從設(shè)備之間進(jìn)行數(shù)據(jù)的交換)也采用類似交換矩陣式的結(jié)構(gòu),每個從設(shè)備的連接都是多個主設(shè)備通過MUX來進(jìn)行連接,這樣保證多個主設(shè)備訪問不同從設(shè)備時,可以實(shí)現(xiàn)并行的數(shù)據(jù)交換(如主設(shè)備M0訪問從設(shè)備S1,主設(shè)備M1訪問從設(shè)備S2,可以同時進(jìn)行總線操作)。這是單一競爭式總線所不能達(dá)到的優(yōu)勢,但是,設(shè)計占用的邏輯量也會增加。性能的增加帶來的負(fù)面影響通常就是邏輯的增加。
交換矩陣通常在基于數(shù)據(jù)包轉(zhuǎn)發(fā)的FPGA設(shè)計應(yīng)用中,交換矩陣的交換靈活性增加,也會增加設(shè)計復(fù)雜度,如果對于傳輸效率不需太多的需求,可以采用系統(tǒng)復(fù)用的方式(前文介紹),通過一個復(fù)用模塊輪流接收各個發(fā)送端口的數(shù)據(jù)流,,再根據(jù)端口轉(zhuǎn)發(fā)到各個從設(shè)備中,此種方式設(shè)計簡單,但是此復(fù)用模塊則會成為系統(tǒng)的瓶頸。根據(jù)系統(tǒng)的設(shè)計需求,選擇適合的設(shè)計,達(dá)到性能和邏輯方面的平衡,是體現(xiàn)FPGA設(shè)計藝術(shù)之一。
fpga相關(guān)文章:fpga是什么
評論