片上網(wǎng)絡(luò)通信協(xié)議研討
時(shí)間:2022-06-05 03:58:00
導(dǎo)語:片上網(wǎng)絡(luò)通信協(xié)議研討一文來源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。
隨著半導(dǎo)體制造工藝技術(shù)的發(fā)展,單芯片集成度一直遵循著摩爾定律發(fā)展,目前單芯片已集成上千萬邏輯門。傳統(tǒng)的SoC(片上系統(tǒng))設(shè)計(jì)方法已成為當(dāng)今IC設(shè)計(jì)的主流_】]。SoC設(shè)計(jì)采用總線架構(gòu)技術(shù),將整個(gè)系統(tǒng)功能模塊集成到一片硅片上。然而,隨著片內(nèi)資源規(guī)模的擴(kuò)大,尤其在多處理器系統(tǒng)設(shè)計(jì)中,SoC技術(shù)遇到了巨大挑戰(zhàn):系統(tǒng)地址空間有限,不能無限地增加系統(tǒng)模塊;采用總線架構(gòu)不能支持兩個(gè)或兩個(gè)以上功能模塊同時(shí)占用總線,降低通信效率;全局時(shí)鐘同步結(jié)構(gòu)大大增加系統(tǒng)功耗[2-3]。為了解決多處理器系統(tǒng)中基于總線架構(gòu)的SoC設(shè)計(jì)面I臨的困難,國外一些研究機(jī)構(gòu)于本世紀(jì)初提出了基于片上網(wǎng)絡(luò)(NetworkonChip,NoC)的IC設(shè)計(jì)方法。NoC的核心思想是借鑒計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)L4],采用路由和分組交換技術(shù)代替總線架構(gòu),從體系機(jī)構(gòu)上徹底解決多處理器通信的發(fā)展瓶頸]。NoC架構(gòu)與SoC架構(gòu)相比主要的優(yōu)點(diǎn)有:地址空間易于擴(kuò)展,可集成無限多個(gè)功能模塊;具有并行通信能力,多個(gè)功能模塊可同時(shí)傳輸數(shù)據(jù);采用全局異步局部同步(GloballyAsychronousLocallySynchro—nous,GALS)的時(shí)鐘策略,每個(gè)通信節(jié)點(diǎn)工作在獨(dú)立的時(shí)鐘,可有效降低系統(tǒng)功耗和設(shè)計(jì)面積。NoC架構(gòu)將是未來系統(tǒng)設(shè)計(jì)的發(fā)展方向。目前,國內(nèi)科研機(jī)構(gòu)對(duì)NoC的研究還處于理論研究階段,主要針對(duì)NoC的拓?fù)浣Y(jié)構(gòu)及數(shù)據(jù)在通信節(jié)點(diǎn)之間傳輸?shù)穆酚伤惴ㄟM(jìn)行研究,取得了一系列研究成果。然而,還未發(fā)現(xiàn)有針對(duì)NoC架構(gòu)中資源節(jié)點(diǎn)內(nèi)部模塊擴(kuò)展及其傳輸控制的研究。筆者重點(diǎn)介紹NoC結(jié)構(gòu)的組成、工作原理,提出一種適宜NoC資源節(jié)點(diǎn)通信的單向總線傳輸協(xié)議,借鑒以太網(wǎng)技術(shù)定義了數(shù)據(jù)幀格式。設(shè)計(jì)采用MicroBlaze軟核處理器作為主資源節(jié)點(diǎn),F(xiàn)lash控制器和RS232串口控制器作為從資源節(jié)點(diǎn),采用VHDL硬件描述語言描述各個(gè)功能模塊,在XilinxFPGA開發(fā)板上驗(yàn)證。
1NoC體系結(jié)構(gòu)
NoC設(shè)計(jì)利用拓?fù)浣Y(jié)構(gòu)實(shí)現(xiàn)內(nèi)部資源節(jié)點(diǎn)的通信,拓?fù)浣Y(jié)構(gòu)是NoC設(shè)計(jì)的關(guān)鍵技術(shù)之一,常用的拓?fù)浣Y(jié)構(gòu)有蜂窩結(jié)構(gòu)、2D—Mesh、3D-Mesh、To—rus、Fat-tree、八角形結(jié)構(gòu)、Proteo等_6’。其中,2D-Mesh結(jié)構(gòu)簡單,易于硬件實(shí)現(xiàn)和網(wǎng)絡(luò)擴(kuò)展。筆者采用2D—Mesh拓?fù)浣Y(jié)構(gòu)為例介紹NoC體系結(jié)構(gòu),如圖1所示。圖1中,S表示通信節(jié)點(diǎn),實(shí)現(xiàn)相鄰節(jié)點(diǎn)的數(shù)據(jù)傳輸,每個(gè)通信節(jié)點(diǎn)與周圍4個(gè)通信節(jié)點(diǎn)和1個(gè)本地節(jié)點(diǎn)相連;R表示資源節(jié)點(diǎn),數(shù)據(jù)傳輸?shù)陌l(fā)起者或接收者,可以是處理器、存儲(chǔ)單元、ASIC、特定功能模塊IP等;RNI表示資源節(jié)點(diǎn)網(wǎng)絡(luò)接口l8],連接資源節(jié)點(diǎn)與通信節(jié)點(diǎn),實(shí)現(xiàn)傳輸數(shù)據(jù)的打包和解包。資源節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),發(fā)送數(shù)據(jù)經(jīng)資源網(wǎng)絡(luò)接口打包成網(wǎng)絡(luò)傳輸幀格式,輸出到本地通信節(jié)點(diǎn)。根據(jù)發(fā)送數(shù)據(jù)的接收目的節(jié)點(diǎn),采用一定的路由算法,確定XY路由和自適應(yīng)DyAD路由算法,實(shí)現(xiàn)簡單、并能夠有效避免鎖死現(xiàn)象E9]。利用電路交換或包交換方式,源通信節(jié)點(diǎn)將數(shù)據(jù)傳輸?shù)侥康耐ㄐ殴?jié)點(diǎn),目的通信節(jié)點(diǎn)將接收的數(shù)據(jù)發(fā)送到本地資源網(wǎng)絡(luò)接口,經(jīng)過解包操作將有效數(shù)據(jù)傳輸給本地資源節(jié)點(diǎn)。從圖1可以看出,多個(gè)資源節(jié)點(diǎn)可以同時(shí)在2D—Mesh網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)傳輸,增強(qiáng)了系統(tǒng)并行處理能力。然而,隨著系統(tǒng)規(guī)模的擴(kuò)大,如果每個(gè)資源節(jié)點(diǎn)只包含一個(gè)處理單元,則網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)龐大,數(shù)據(jù)傳輸延遲增加,降低系統(tǒng)性能。如果每個(gè)資源節(jié)點(diǎn)包含一個(gè)處理系統(tǒng),該系統(tǒng)由一個(gè)主資源節(jié)點(diǎn)和若干個(gè)從資源節(jié)點(diǎn)組成,則每個(gè)資源節(jié)點(diǎn)的功能增強(qiáng),網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)精煉,增強(qiáng)系統(tǒng)功能。主資源節(jié)點(diǎn)與從資源節(jié)點(diǎn)的通信可以采用傳統(tǒng)的總線架構(gòu),如AMBA、Wishbone、CoreConnect等,但隨著從資源節(jié)點(diǎn)數(shù)目的增加,通信效率將成為上述總線應(yīng)用的挑戰(zhàn)。為了增強(qiáng)NoC架構(gòu)中資源節(jié)點(diǎn)系統(tǒng)的處理性能,筆者提出一種新的單向總線通信協(xié)議,實(shí)現(xiàn)主資源節(jié)點(diǎn)與從資源節(jié)點(diǎn)的并行通信。下面將詳細(xì)介紹該總線協(xié)議的工作原理及實(shí)現(xiàn)方法。
2單向總線的設(shè)計(jì)
單向總線結(jié)構(gòu)如圖2所示。圖2中,MR表示主資源節(jié)點(diǎn)(MasterResource);SR表示從資源節(jié)點(diǎn)(SlaveResource);MRNI表示主資源節(jié)點(diǎn)網(wǎng)絡(luò)接圖2旱同總線結(jié)構(gòu)口(MasterResourceNetworkInterface);SRNI表示從資源節(jié)點(diǎn)網(wǎng)絡(luò)接口(SlaveResourceNetworkInterface)。主資源節(jié)點(diǎn)獨(dú)占總線由時(shí)鐘線和數(shù)據(jù)線組成,通過該總線,主資源節(jié)點(diǎn)可向各個(gè)從資源節(jié)點(diǎn)同時(shí)發(fā)送數(shù)據(jù);從資源節(jié)點(diǎn)共享總線由時(shí)鐘線和數(shù)據(jù)線組成,各從資源節(jié)點(diǎn)通過該總線向主資源節(jié)點(diǎn)發(fā)送數(shù)據(jù)。每個(gè)從資源節(jié)點(diǎn)網(wǎng)絡(luò)接口都與仲裁模塊相連,由總線占有請(qǐng)求信號(hào)線和仲裁模塊產(chǎn)生的應(yīng)答信號(hào)線組成。
2.1單向總線工作原理
單向總線系統(tǒng)由一個(gè)主資源節(jié)點(diǎn)(MR)、若干個(gè)從資源節(jié)點(diǎn)(SR)、一個(gè)仲裁模塊、主資源網(wǎng)絡(luò)接口(MRNI)、各從資源網(wǎng)絡(luò)接口(SRNI)組成。MR發(fā)送數(shù)據(jù)經(jīng)MRNI打包成數(shù)據(jù)幀,經(jīng)MR獨(dú)占總線發(fā)送到各SRNI,各SRNI接收數(shù)據(jù)幀并檢測數(shù)據(jù)幀的目的地址。如果目的地址與本地從節(jié)點(diǎn)分配的地址相同,則該SRNI接收數(shù)據(jù)幀,解包后發(fā)送到本地從資源節(jié)點(diǎn),否則丟棄該幀數(shù)據(jù)。MR獨(dú)占總線的時(shí)鐘信號(hào)和數(shù)據(jù)信號(hào)均由主資源節(jié)點(diǎn)發(fā)送,在時(shí)鐘上升沿發(fā)送數(shù)據(jù)幀,數(shù)據(jù)幀發(fā)送結(jié)束后,時(shí)鐘信號(hào)為低電平。該總線為單向只寫總線,由主資源節(jié)點(diǎn)發(fā)送數(shù)據(jù)到各從資源節(jié)點(diǎn)。當(dāng)從資源節(jié)點(diǎn)向主資源節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),首先通過各自獨(dú)立的請(qǐng)求信號(hào)線向仲裁模塊發(fā)送請(qǐng)求,仲裁模塊采用先到先服務(wù)原則實(shí)現(xiàn)對(duì)從資源節(jié)點(diǎn)的應(yīng)答,請(qǐng)求應(yīng)答信號(hào)線如圖2黑色長虛線所示。從資源網(wǎng)絡(luò)接口接收到應(yīng)答信號(hào)后,則占用從資源共享總線,發(fā)送數(shù)據(jù)經(jīng)從資源網(wǎng)絡(luò)接口打包后發(fā)送到主資源節(jié)點(diǎn),數(shù)據(jù)發(fā)送完畢后,從資源節(jié)點(diǎn)釋放總線占有權(quán)。由于仲裁模塊也接收從資源節(jié)點(diǎn)發(fā)送的數(shù)據(jù)幀,所以仲裁模塊可判斷數(shù)據(jù)發(fā)送是否結(jié)束,從而接收下一個(gè)從資源節(jié)點(diǎn)的發(fā)送請(qǐng)求。如果多個(gè)資源節(jié)點(diǎn)同時(shí)發(fā)送請(qǐng)求信號(hào),則根據(jù)各從資源節(jié)點(diǎn)事先定義的優(yōu)先級(jí)進(jìn)行應(yīng)答。
2.2單向總線數(shù)據(jù)幀格式
主資源節(jié)點(diǎn)與從資源節(jié)點(diǎn)的通信數(shù)據(jù)必須按照定義的數(shù)據(jù)幀格式進(jìn)行傳輸,數(shù)據(jù)幀結(jié)構(gòu)見圖3。目的地址為接收數(shù)據(jù)包的資源節(jié)點(diǎn)的地址,占1字節(jié),最多可支持256個(gè)資源節(jié)點(diǎn);源地址為發(fā)送數(shù)據(jù)包的資源節(jié)點(diǎn)地址,占I字節(jié);類型表示發(fā)送的數(shù)據(jù)幀的類型,可表示寫數(shù)據(jù)、讀命令或重發(fā)請(qǐng)求,占1字節(jié);長度字段為發(fā)送數(shù)據(jù)的字節(jié)數(shù),占2字節(jié);數(shù)據(jù)字段為發(fā)送的有效數(shù)據(jù),如從資源節(jié)點(diǎn)為存儲(chǔ)器模塊,則數(shù)據(jù)字段包含發(fā)送的數(shù)據(jù)及寫入地址;如果主資源節(jié)點(diǎn)向從資源節(jié)點(diǎn)發(fā)送讀命令,則數(shù)據(jù)字段包含要讀取數(shù)據(jù)的初始地址及讀取數(shù)據(jù)長度;校驗(yàn)字段占2字節(jié),采用CRC校驗(yàn)。
2.3系統(tǒng)設(shè)計(jì)
下面詳細(xì)介紹資源網(wǎng)絡(luò)接口及仲裁模塊的邏輯設(shè)計(jì)。
2.3.1資源網(wǎng)絡(luò)接口設(shè)計(jì)
資源網(wǎng)絡(luò)接口是資源節(jié)點(diǎn)與單向總線通信的橋梁,接收單向總線的數(shù)據(jù)幀,解包后發(fā)送到資源節(jié)點(diǎn);接收資源節(jié)點(diǎn)發(fā)送的數(shù)據(jù),打包成數(shù)據(jù)幀格式發(fā)送到單向總線。主資源網(wǎng)絡(luò)接口與從資源網(wǎng)絡(luò)接口內(nèi)部結(jié)構(gòu)相似,只是數(shù)據(jù)發(fā)送、接收對(duì)應(yīng)總線不同。下面以從資源網(wǎng)絡(luò)接口為例,介紹資源網(wǎng)絡(luò)接口的設(shè)計(jì)原理。主資源節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),數(shù)據(jù)幀通過主資源節(jié)點(diǎn)獨(dú)占單向總線接口模塊發(fā)送到接收控制模塊。接收控制模塊首先對(duì)接收的數(shù)據(jù)幀的目的地址字段進(jìn)行判斷,如果目的地址與本地資源節(jié)點(diǎn)地址不同,則丟棄該幀數(shù)據(jù);如相同則繼續(xù)接收數(shù)據(jù),并將數(shù)據(jù)段的有效數(shù)據(jù)存儲(chǔ)到接收緩存模塊;同時(shí),將接收數(shù)據(jù)輸出到CRC校驗(yàn)?zāi)K進(jìn)行校驗(yàn)。當(dāng)一幀數(shù)據(jù)接收完畢后,CRC校驗(yàn)?zāi)K計(jì)算的校驗(yàn)值與數(shù)據(jù)幀的校驗(yàn)位進(jìn)行比較,如相同表明數(shù)據(jù)傳輸無誤,否則說明數(shù)據(jù)傳輸有誤,觸發(fā)發(fā)送控制模塊,產(chǎn)生數(shù)據(jù)重發(fā)請(qǐng)求。該請(qǐng)求通過請(qǐng)求應(yīng)答模塊發(fā)送到仲裁模塊,獲得應(yīng)答后,發(fā)送控制模塊輸出一個(gè)請(qǐng)求重發(fā)數(shù)據(jù)幀,發(fā)送到從資源節(jié)點(diǎn)共享單向總線,主資源節(jié)點(diǎn)收到該幀數(shù)據(jù)后,重發(fā)上次傳輸?shù)臄?shù)據(jù)。從資源節(jié)點(diǎn)發(fā)送數(shù)據(jù)時(shí),從資源節(jié)點(diǎn)接口模塊將發(fā)送數(shù)據(jù)輸出到發(fā)送控制模塊,發(fā)送控制模塊將數(shù)據(jù)打包成數(shù)據(jù)幀格式輸出到發(fā)送緩存模塊。CRC校驗(yàn)?zāi)K對(duì)發(fā)送的數(shù)據(jù)進(jìn)行校驗(yàn)計(jì)算,并將校驗(yàn)值輸出到發(fā)送控制模塊,發(fā)送控制模塊打包的一幀數(shù)據(jù)存人到發(fā)送緩存模塊后,發(fā)送控制模塊觸發(fā)請(qǐng)求應(yīng)答模塊向仲裁模塊發(fā)送請(qǐng)求信號(hào);待得到應(yīng)答后,即取得從資源節(jié)點(diǎn)共享總線使用權(quán),發(fā)送控制模塊觸發(fā)發(fā)送緩存模塊,將緩存模塊中的數(shù)據(jù)經(jīng)從資源共享單向總線接口模塊發(fā)送到單向總線,主資源網(wǎng)絡(luò)接口模塊從只寫總線中讀取數(shù)據(jù),解包后發(fā)送到主資源節(jié)點(diǎn)。
2.3.2仲裁模塊的設(shè)計(jì)
該模塊接收所有從資源網(wǎng)絡(luò)接口模塊發(fā)送的總線使用請(qǐng)求信號(hào),采用先到先服務(wù)策略產(chǎn)生應(yīng)答信號(hào)。如果多個(gè)從資源網(wǎng)絡(luò)接口發(fā)送的請(qǐng)求信號(hào)同時(shí)到達(dá),則根據(jù)預(yù)先定義的優(yōu)先等級(jí)對(duì)其響應(yīng)。
2.4單向總線實(shí)現(xiàn)與驗(yàn)證
單向總線系統(tǒng)設(shè)計(jì)采用VHDL描述。根據(jù)現(xiàn)代EDA設(shè)計(jì)使用的模塊化設(shè)計(jì)原則,用VHDL分別實(shí)現(xiàn)主資源網(wǎng)絡(luò)接口模塊、從資源網(wǎng)絡(luò)接口模塊、仲裁模塊的程序設(shè)計(jì),在開發(fā)環(huán)境下綜合實(shí)現(xiàn)后,下載到FPGA開發(fā)板驗(yàn)證。系統(tǒng)驗(yàn)證環(huán)境利用Mi—croBlaze處理器軟核作為主資源節(jié)點(diǎn),F(xiàn)lash控制器和RS232串口控制模塊作為從資源節(jié)點(diǎn),驗(yàn)證系統(tǒng)結(jié)構(gòu)如圖5所示。主資源網(wǎng)絡(luò)接口(MRNI)作為用戶自定義IP核連接到PLB總線,主資源節(jié)點(diǎn)MicroBlaze處理器通過PLB總線訪問MRNI,以MicroBlaze處理器向Flash存儲(chǔ)器讀寫數(shù)據(jù)為例驗(yàn)證該系統(tǒng),MicroBlaze處理器通過PLB總線將數(shù)據(jù)寫入到MRNI,MRN1將數(shù)據(jù)打包成標(biāo)準(zhǔn)數(shù)據(jù)幀格式,目的地址為資源節(jié)點(diǎn)Flash控制器的地址,數(shù)據(jù)幀經(jīng)主資源節(jié)點(diǎn)獨(dú)占總線寫入到Flash控制器的從資源網(wǎng)絡(luò)接口SR—NIl,SRNI1對(duì)接收的數(shù)據(jù)幀進(jìn)行解包。如果CRC校驗(yàn)正確,數(shù)據(jù)段中數(shù)值發(fā)送給從資源節(jié)點(diǎn)Flash控制器模塊,F(xiàn)lash控制器從接收的數(shù)據(jù)中提取寫入初始地址,將有效數(shù)據(jù)從初始地址開始連續(xù)寫入Flash存儲(chǔ)器。數(shù)據(jù)寫入完畢后,MicroBlaze處理器通過PLB總線訪問MRNI,請(qǐng)求從Flash存儲(chǔ)器中讀取數(shù)據(jù),MRNI將讀請(qǐng)求數(shù)據(jù)幀發(fā)送到SR~NIl,SRNI1收到請(qǐng)求幀后,向仲裁模塊發(fā)送請(qǐng)求,得到應(yīng)答后,占用SR共享總線,F(xiàn)lash控制器從外部Flash存儲(chǔ)器中讀取數(shù)據(jù)發(fā)送到SRNI,打包成數(shù)據(jù)幀格式通過SR共享總線發(fā)送到MRNI進(jìn)行解包,解包后的數(shù)據(jù)經(jīng)PLB總線傳輸?shù)組icroBlaze處理器,MircoBlaze處理器將接收的數(shù)據(jù)與發(fā)送的數(shù)據(jù)進(jìn)行比較,可判斷系統(tǒng)是否正確工作。MicroBlaze處理器還可通過對(duì)R$232串口控制器的訪問來驗(yàn)證系統(tǒng)功能。MicroBlaze處理器通過PLB總線將輸出數(shù)據(jù)發(fā)送給MRNI,MRNI對(duì)數(shù)據(jù)進(jìn)行打包,并通過MR獨(dú)占總線將數(shù)據(jù)發(fā)送到SRNI2,SRNI2對(duì)接收的數(shù)據(jù)進(jìn)行解包,解包后的數(shù)據(jù)發(fā)送到從資源節(jié)點(diǎn)串口控制器,串口控制器將接收的數(shù)據(jù)通過RS232串口發(fā)送給PC機(jī),PC機(jī)上使用超級(jí)終端打印輸出串口模塊發(fā)送的數(shù)據(jù),通過比較,可知超級(jí)終端接收的數(shù)據(jù)即為MicroBlaze處理器發(fā)送的數(shù)據(jù),從而可驗(yàn)證系統(tǒng)正確工作。
3結(jié)束語
本文針對(duì)片上網(wǎng)絡(luò)架構(gòu)提出一種新的資源節(jié)點(diǎn)通信協(xié)議。采用兩條單向總線實(shí)現(xiàn)了主資源節(jié)點(diǎn)與從資源節(jié)點(diǎn)的通信,定義適于單向總線傳輸?shù)臄?shù)據(jù)幀格式,設(shè)計(jì)MicroBlaze處理器作為主資源節(jié)點(diǎn),F(xiàn)lash控制器和RS232串口控制器作為從資源節(jié)點(diǎn),驗(yàn)證系統(tǒng)可正確工作。相對(duì)于傳統(tǒng)片內(nèi)總線,本文設(shè)計(jì)的單向總線結(jié)構(gòu)簡單,資源節(jié)點(diǎn)易于擴(kuò)展,兩個(gè)資源節(jié)點(diǎn)可同時(shí)占有兩條單向總線,實(shí)現(xiàn)對(duì)兩個(gè)資源節(jié)點(diǎn)的同時(shí)讀寫操作,提高了數(shù)據(jù)傳輸速率,增強(qiáng)系統(tǒng)性能。