摘 要: MAC(Media Access Control)層位于網(wǎng)絡(luò)結(jié)構(gòu)七層協(xié)議中的數(shù)據(jù)鏈路層,控制局域網(wǎng)中的多個(gè)節(jié)點(diǎn)對(duì)共享介質(zhì)的訪問(wèn),,保證相鄰節(jié)點(diǎn)之間數(shù)據(jù)的可靠傳輸,。本文介紹一種吉比特MAC接口的結(jié)構(gòu),該MAC采用基于描述符傳輸?shù)?a class="innerlink" href="http://forexkbc.com/tags/DMA" title="DMA" target="_blank">DMA(Direct Memory Access)和雙通道的MTL(MAC Transaction Layer),,在半雙工模式下支持10/100 Mb/s,、全雙工模式下支持10/100/1 000 Mb/s的網(wǎng)絡(luò)數(shù)據(jù)傳輸速率。
關(guān)鍵詞: MAC,;描述符,;DMA;MTL
0 引言
在計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)飛速發(fā)展的新時(shí)期,,人們對(duì)現(xiàn)有資源共享越來(lái)越依賴網(wǎng)絡(luò),,并設(shè)計(jì)開(kāi)發(fā)了多種不同應(yīng)用范圍的局域網(wǎng)技術(shù)。其中,,以太網(wǎng)憑借其較高的靈活性和操作性,,在局域網(wǎng)技術(shù)使用過(guò)程中得到了飛速迅猛的發(fā)展。隨著人們對(duì)網(wǎng)絡(luò)帶寬和數(shù)據(jù)傳輸速率要求的提高,,千兆位以太網(wǎng)應(yīng)運(yùn)而生,。千兆位以太網(wǎng)仍然保留了以太網(wǎng)的幀格式、CSMA/CS機(jī)制和MTU[1],,并且引入了載波擴(kuò)展和幀突發(fā)機(jī)制[2],。以太網(wǎng)IEEE802.3協(xié)議根據(jù)LAN的特點(diǎn),把數(shù)據(jù)鏈路層分為L(zhǎng)LC(邏輯鏈路控制)和MAC(介質(zhì)訪問(wèn)控制)兩個(gè)子層,。MAC層協(xié)議作為數(shù)據(jù)幀收發(fā)的基礎(chǔ),,是以太網(wǎng)技術(shù)的核心,主要負(fù)責(zé)上層數(shù)據(jù)和物理層的數(shù)據(jù)流量控制以及數(shù)據(jù)流的檢測(cè),、校驗(yàn)工作,。
IP核是采用Verilog等硬件描述語(yǔ)言實(shí)現(xiàn)的功能塊,。使用IP核的方式便于實(shí)現(xiàn)元件系統(tǒng)引用、修改基本元件功能及IP核復(fù)用都非常容易,。在SoC設(shè)計(jì)中,,IP核的使用可以縮短設(shè)計(jì)周期,降低設(shè)計(jì)風(fēng)險(xiǎn),,已經(jīng)成為SoC設(shè)計(jì)中不可缺少的部分[3],。
本文主要介紹吉比特MAC接口IP軟核的結(jié)構(gòu)和實(shí)現(xiàn)。
1 MAC功能
本設(shè)計(jì)中的MAC遵守CSMA/CD協(xié)議,,網(wǎng)絡(luò)數(shù)據(jù)在發(fā)送的過(guò)程中打包成標(biāo)準(zhǔn)的IEEE802.3幀格式,;在接收數(shù)據(jù)過(guò)程中,對(duì)數(shù)據(jù)幀進(jìn)行CRC校驗(yàn),,有效刪除錯(cuò)誤數(shù)據(jù),,提高數(shù)據(jù)傳輸效率[4]。支持半雙工和全雙工的操作模式,,半雙工模式下支持10 Mb/s/100 Mb/s的網(wǎng)絡(luò)數(shù)據(jù)傳輸速率,,提高載波擴(kuò)展和幀突發(fā)機(jī)制,并以back-pressure的形式進(jìn)行流控制,;全雙工模式下支持10 Mb/s/100 Mb/s/1 000 Mb/s的網(wǎng)絡(luò)數(shù)據(jù)傳輸速率,,并采用pause幀的方式進(jìn)行流控制;支持可編程的幀間距以及幀長(zhǎng)度以適應(yīng)標(biāo)準(zhǔn)以太網(wǎng)幀和長(zhǎng)達(dá)16 kB的超大以太網(wǎng)幀,;支持IPv4,、IPv6和ICMP網(wǎng)絡(luò)協(xié)議和TCP、UDP傳輸協(xié)議,;提供GMII/RGMII/MII/RMII端口與相應(yīng)的PHY端口連接,,并且提供MDIO主機(jī)對(duì)PHY進(jìn)行配置管理。
2 MAC體系結(jié)構(gòu)
如圖1所示,,MAC由以下四個(gè)部分構(gòu)成:MAC-AXI,、MAC-DMA、MAC-MTL,、MAC-CORE,。MAC采用獨(dú)立的數(shù)據(jù)傳輸與寄存器訪問(wèn)接口,通過(guò)AXI接口與DSP連接,,通過(guò)AXI主機(jī)端口進(jìn)行數(shù)據(jù)的傳輸,,通過(guò)AXI從機(jī)端口訪問(wèn)DMA和MAC的系統(tǒng)控制、狀態(tài)寄存器(CSR)[5],。AXI接口基于burst的傳輸方式和獨(dú)立的控制,、數(shù)據(jù)及響應(yīng)通道,提高了傳輸效率和總線的利用率;DMA提供獨(dú)立的數(shù)據(jù)和寄存器訪問(wèn)接口,,數(shù)據(jù)端采用基于描述符的傳輸將數(shù)據(jù)傳輸?shù)組TL,,大大提高了數(shù)據(jù)傳輸效率;MTL提供兩個(gè)FIFO對(duì)DMA與MAC-CORE之間傳輸?shù)臄?shù)據(jù)進(jìn)行緩存,;MAC-CORE對(duì)網(wǎng)絡(luò)數(shù)據(jù)幀進(jìn)行接收發(fā)送并對(duì)PHY進(jìn)行配置管理,;各個(gè)層次都提供了單獨(dú)的發(fā)送、接收通道,,加快數(shù)據(jù)傳輸速率,。此外,該MAC IP核的各個(gè)層次可獨(dú)立,,用戶可以根據(jù)自己的需求選擇合適的結(jié)構(gòu),。
2.1 AXI接口
MAC通過(guò)AMBA3 AXI總線接口與DSP連接,。AXI主機(jī)接口支持burst請(qǐng)求以隊(duì)列的形式發(fā)出讀寫(xiě)請(qǐng)求,,并通過(guò)請(qǐng)求重排序,數(shù)據(jù)交錯(cuò)使得主機(jī)可以更加靈活地選擇優(yōu)先請(qǐng)求,、慢速外設(shè)從機(jī),。在寫(xiě)數(shù)據(jù)通道設(shè)計(jì)了一個(gè)深度為8的數(shù)據(jù)請(qǐng)求FIFO,這樣AXI總線上最多能支持8個(gè)讀寫(xiě)請(qǐng)求,。此外還設(shè)計(jì)了深度為2的數(shù)據(jù)FIFO和響應(yīng)FIFO,,用以支持DMA的OSF操作模式,提高數(shù)據(jù)傳輸效率,。AXI從機(jī)接口訪問(wèn)MAC的系統(tǒng)控制,、狀態(tài)寄存器(CSR)。
該接口提供128 bit的數(shù)據(jù)位寬,、32 bit的地址位寬,,最大burst長(zhǎng)度為32,每個(gè)ID最多支持4個(gè)讀/寫(xiě)請(qǐng)求,,為數(shù)據(jù)的高效傳輸提供了保障,。該接口允許來(lái)自不同DMA通道的讀寫(xiě)同時(shí)傳輸,以提高總線的利用率,。另外,,為了減少整個(gè)芯片的功耗,DSP可以通過(guò)控制AXI接口使MAC進(jìn)入低功耗模式,。
2.2 MAC-DMA
DMA模塊實(shí)現(xiàn)MTL模塊和AXI接口之間的數(shù)據(jù)交換,,DSP通過(guò)AXI從機(jī)接口配置DMA寄存器直接啟動(dòng)MAC,DSP可以通過(guò)設(shè)置DMA CSR來(lái)控制DMA的操作,。該模塊采用128 bit的數(shù)據(jù)位寬與AXI接口和MTL模塊連接,。如圖2所示,DMA提供獨(dú)立的CSR訪問(wèn)接口和數(shù)據(jù)接口;具有獨(dú)立的發(fā)送,、接收引擎,,發(fā)送引擎將數(shù)據(jù)從DSP的發(fā)送數(shù)據(jù)buffer傳輸?shù)組TL,接收引擎將數(shù)據(jù)從MTL傳輸?shù)紻SP接收數(shù)據(jù)buffer,,描述符作為這些buffer的指針,;沖裁模塊除了對(duì)讀寫(xiě)操作進(jìn)行沖裁和發(fā)送接收之間的沖裁之外,還包括對(duì)描述符傳輸與數(shù)據(jù)傳輸?shù)臎_裁,。讀寫(xiě)數(shù)據(jù)通過(guò)數(shù)據(jù)單元緩沖,,提高傳輸效率。
DMA通過(guò)描述符的傳輸在DSP盡量少干涉的情況下實(shí)現(xiàn)數(shù)據(jù)交互,,每個(gè)描述符可以傳輸8 KB的數(shù)據(jù),,描述符地址寬度與總線寬度一致。描述符有兩類:發(fā)送描述符(TDES0-3)和接收描述符(RDES0-3),,如圖3所示,,每一類描述符包含兩個(gè)buffer、兩個(gè)字節(jié)計(jì)數(shù)buffer和兩個(gè)指向DSP發(fā)送,、接收數(shù)據(jù)buffer的地址指針,。每一個(gè)描述符最多指向兩個(gè)數(shù)據(jù)buffer,數(shù)據(jù)buffer可以包含一整幀的數(shù)據(jù)或者不滿一幀的數(shù)據(jù),,但是不能超過(guò)一幀,,并且只含數(shù)據(jù),buffer狀態(tài)包含在描述符中,。一幀的數(shù)據(jù)可以跨越多個(gè)數(shù)據(jù)buffer,,但是一個(gè)描述符中的數(shù)據(jù)不能跨越多幀。描述符列表有兩種結(jié)構(gòu):環(huán)型,,每個(gè)描述符指向兩個(gè)數(shù)據(jù)buffer,,執(zhí)行到最后一個(gè)描述符時(shí)跳回描述符列表的首地址;鏈接型,,將DES3配置成下一個(gè)描述符地址形成描述符鏈,,這種模式下的描述符只能指向一個(gè)數(shù)據(jù)buffer。
與以往基于計(jì)數(shù)的DMA傳輸相比,,采用基于描述符傳輸?shù)腄MA每次傳輸?shù)臄?shù)據(jù)量增大,,傳輸速率更快。此外,,DMA具有單獨(dú)的發(fā)送,、接收引擎可加快數(shù)據(jù)的傳輸,并提供幀分隔符以優(yōu)化報(bào)文結(jié)構(gòu)的傳輸,,對(duì)任何正確或錯(cuò)誤的傳輸都給出狀態(tài)標(biāo)識(shí)位,,增強(qiáng)數(shù)據(jù)傳輸可靠性,支持可編程地發(fā)送、接收DMA引擎burst尺寸以提高總線利用率,,支持每一幀的發(fā)送接收完成中斷控制和各種操作情況下可編程的中斷選擇,。
2.3 MAC-MTL
MTL作為DMA的從設(shè)備,采用128 bit數(shù)據(jù)位寬與DMA和MAC-CORE相連,,數(shù)據(jù)傳輸以簡(jiǎn)單的FIFO協(xié)議執(zhí)行操作,。該模塊包含兩個(gè)數(shù)據(jù)通道,發(fā)送通道和接收通道,。發(fā)送通道將DMA的數(shù)據(jù)傳輸?shù)組AC-CORE,,DMA控制發(fā)送通道的所有傳輸;接收通道則把MAC-CORE的數(shù)據(jù)傳輸?shù)紻MA,,如圖4所示,。每個(gè)通道都含有單獨(dú)的讀寫(xiě)控制模塊。根據(jù)接收幀的狀態(tài)信息,,接收寫(xiě)控制模塊對(duì)接收幀進(jìn)行過(guò)濾,,刪除錯(cuò)誤幀。在發(fā)送過(guò)程中產(chǎn)生沖突時(shí),,發(fā)送讀模塊將沖突的數(shù)據(jù)幀重新發(fā)送到MAC-CORE端,。
MTL提供了兩個(gè)8 KB的雙端口異步FIFO緩存DMA與MAC-CORE之間傳輸?shù)臄?shù)據(jù)幀。Tx FIFO緩存DMA從DSP內(nèi)存讀取且尚未被發(fā)送到MAC的數(shù)據(jù),,Rx FIFO保存從以太網(wǎng)接收且尚未被傳輸?shù)紻MA的數(shù)據(jù),。除了緩存每一幀的數(shù)據(jù)外,每一幀的狀態(tài)信息緊跟數(shù)據(jù)存入FIFO中,,而不需要額外的FIFO來(lái)保存,因此只要FIFO未滿就能不斷接收數(shù)據(jù)幀,,提高傳輸效率,。數(shù)據(jù)FIFO通過(guò)選擇信號(hào)啟動(dòng),即FIFO不工作時(shí)處于休眠狀態(tài),,減小功耗,。MTL將FIFO的空滿狀態(tài)信息反饋給DMA,再由DMA控制發(fā)送接收操作,。此外,,Rx FIFO滿的情況下,可以通過(guò)pause幀控制或產(chǎn)生back-pressure給MAC-CORE來(lái)控制數(shù)據(jù)幀的接收,,進(jìn)行流控制,。Tx FIFO的flush操作則是通過(guò)軟件來(lái)控制的。
2.4 MAC-CORE
MAC-CORE有發(fā)送,、接收兩個(gè)通道,,實(shí)現(xiàn)PHY與MTL模塊的數(shù)據(jù)交互,具有單獨(dú)的地址過(guò)濾單元,對(duì)接收數(shù)據(jù)幀的地址進(jìn)行檢查以便決定接收幀的傳輸與否,。支持多種地址過(guò)濾方式:目的地址/源地址過(guò)濾,、單播地址/多播地址過(guò)濾,另外還可以提供哈希表對(duì)地址進(jìn)行過(guò)濾,,具有單獨(dú)的CRC模塊,,對(duì)每一個(gè)接收幀進(jìn)行CRC校驗(yàn),對(duì)需要發(fā)送的幀產(chǎn)生CRC檢驗(yàn)碼,。支持可編程的IFG和接收幀的IEEE802.1Q VLAN檢測(cè),。對(duì)IPv4、IPv6數(shù)據(jù)包負(fù)載進(jìn)行TCP,、UDP,、ICMP檢驗(yàn)以及IPv4首部檢驗(yàn)和驗(yàn)證。提供四種PHY端口:MII,、GMII,、RMII、RGMII,,并且輸出端口的數(shù)據(jù)并行輸出,,提高數(shù)據(jù)傳輸效率。提供MDIO模塊對(duì)PHY進(jìn)行配置和管理,。
3 MAC體系結(jié)構(gòu)
在VCS驗(yàn)證平臺(tái)下,,分別在10 Mb/s/100 Mb/s/ 1 000 Mb/s傳輸速率下對(duì)MAC IP核的RTL級(jí)代碼進(jìn)行了模塊級(jí)和系統(tǒng)級(jí)驗(yàn)證,主要驗(yàn)證其邏輯功能的正確性,,邏輯驗(yàn)證和功能結(jié)果均符合要求,。圖5為半雙工模式下100 Mb/s傳輸速率MAC模擬波形圖,圖6是全雙工模式下1 000Mb/s傳輸速率MAC模擬波形圖,。模擬驗(yàn)證表明,,該結(jié)構(gòu)的MAC設(shè)計(jì)達(dá)到了預(yù)期目標(biāo)。
4 結(jié)束語(yǔ)
本文針對(duì)千兆位以太網(wǎng)的要求,,介紹了一種吉比特MAC接口,,用Verilog硬件描述語(yǔ)言,實(shí)現(xiàn)了一個(gè)RTL級(jí)的IP核,,該MAC采用AXI接口,,連續(xù)發(fā)送burst請(qǐng)求,各個(gè)通道獨(dú)立,,提高總線利用率,。基于描述符傳輸?shù)腄MA在沒(méi)有CPU干涉的情況下,,一次可以傳輸大量的數(shù)據(jù),,獨(dú)立的雙通道MTL為數(shù)據(jù)快速傳輸提供了保障,。MAC-CORE提供了多種類型的PHY端口,數(shù)據(jù)并行輸出,,加快了傳輸速率,。最后對(duì)該MAC進(jìn)行了模擬和驗(yàn)證。驗(yàn)證結(jié)果表明,,本文設(shè)計(jì)的模塊功能正確,,達(dá)到了預(yù)期目標(biāo)。
參考文獻(xiàn)
[1] IEEE P802.3ba(tm) D3.2-2010. Telecommunication and information exchange between system-local and metropolitan area networks specific requirements Part3: carrier sense multiple access with collision detection(CSMA/CD)access methodand physical layer specifications[S]. 2010.
[2] 蔡開(kāi)裕,,朱培棟,,徐明.計(jì)算機(jī)網(wǎng)絡(luò)[M].北京:機(jī)械工業(yè)出版社,2008.
[3] 韓建,,陳嵐,,粟雅娟,等.基于用戶的IP核評(píng)測(cè)方法[J].微電子學(xué)與計(jì)算機(jī),,2009,,26(11):43-47.
[4] 張偉華,魏仲慧,,何昕.嵌入式通用千兆以太網(wǎng)接口的設(shè)計(jì)與實(shí)現(xiàn)[J].儀表技術(shù)與傳感器,,2011(6):41-43,47.
[5] 吳俊杰,,吳建輝.以太網(wǎng)MAC控制器的MII接口轉(zhuǎn)RMII接口的實(shí)現(xiàn)[J].電子器件,,2008(2):712-715.