1.千兆以太網(wǎng)技術(shù)簡介 以太網(wǎng)技術(shù)是當今應(yīng)用廣泛的網(wǎng)絡(luò)技術(shù),千兆以太網(wǎng)技術(shù)繼承了以往以太網(wǎng)技術(shù)的許多優(yōu)點,,同時又具有許多新的特性,,例如傳輸介質(zhì)包括光纖和銅纜,,使用8B/10B的編解碼方案,采用載波擴展和分組突發(fā)技術(shù)等,。正是因為具有良好的繼承性和許多優(yōu)秀的新特性,千兆以太網(wǎng)已經(jīng)成為目前局域網(wǎng)的主流解決方案,。 千兆以太網(wǎng)利用了原以太網(wǎng)標準所規(guī)定的全部技術(shù)規(guī)范,其中包括CSMA/CD協(xié)議,、以太網(wǎng)幀、全雙工,、流量控制以及IEEE 802.3標準中所定義的管理對象。千兆以太網(wǎng)的關(guān)鍵技術(shù)是千兆以太網(wǎng)二層(MAC層)的交換與以太網(wǎng)接口的實現(xiàn),。隨著多媒體應(yīng)用的普及,千兆以太網(wǎng)必將成為各類以太網(wǎng)技術(shù)的主力軍,。 2.Xilinx的千兆以太網(wǎng)解決方案 1)IP的支持 Xilinx提供了可參數(shù)化的10/1Gbps以太網(wǎng)媒體訪問控制器功能LogiCORE解決方案。該核設(shè)計用來同最新的Virtex-5,、Virtex-4和Virtex-II Pro平臺FPGA一起工作,并可以無縫集成到Xilinx設(shè)計流程中,。吉比特級以太網(wǎng)媒體訪問控制器核(GEMAC)是針對1Gb/s(Gbps)以太網(wǎng)媒體訪問控制器功能的可參數(shù)化的LogiCORE IP解決方案。GEMAC核的設(shè)計符合 IEEE 802.3-2002規(guī)范,。GWMAC核支持兩個PHY端接口選項:GMII或RGMII。并且,,Xilinx 全面的1Gb/s以太網(wǎng)解決方案包含吉比特MAC和PCS/PMA IP核產(chǎn)品。Xilinx吉比特以太網(wǎng)MAC解決方案還包括帶有內(nèi)置處理器本地總線(PLB)接口(PLB GEMAC)的配置,。該配置通過Xilinx嵌入式開發(fā)套件(EDK)提供。GEMAC LogiCORE IP可以實現(xiàn)與1000 Base-X PCS/PMA或SGMII核的無縫集成,,并提供3種選項用來與PHY器件接口:1000 BASE-X或10位接口(TBI)或SGMII。 GEMAC核非常適合開發(fā)高密度吉比特級以太網(wǎng)通信和存儲設(shè)備,,其關(guān)鍵特性有:
2)相應(yīng)的開發(fā)板套件 Xilinx提供的千兆以太網(wǎng)開發(fā)套件為Virtex-5 ML505/ML506開發(fā)板(使用的FPGA芯片為:XC5VLX50T-1FF1136),,該開發(fā)板支持10/100兆、1/10吉以太網(wǎng),,加上Xilinx公開的基于ML505/506的設(shè)計,可為基于以太網(wǎng)開發(fā)的設(shè)計提供全方位的參考,。此外,,ML505/506還具備SFP,、PCI E,、SATA以及SMA接口等其余吉比特接口,,是學習和研發(fā)高速連接設(shè)備的理想平臺。 10.4.2 基于FPGA的千兆以太網(wǎng)MAC控制器實現(xiàn)方案 1.整體設(shè)計方案 以太網(wǎng)控制器的FPGA設(shè)計工作包括以太網(wǎng)MAC子層的FPGA設(shè)計,、MAC子層與上層協(xié)議的接口設(shè)計以及MAC與物理層(PHY)的MII接口設(shè)計。該以太網(wǎng)控制器的總體結(jié)構(gòu)設(shè)計框圖如圖10-30所示,。整個系統(tǒng)分為發(fā)送模塊、接收模塊,、MAC狀態(tài)模塊,、MAC控制模塊,、MII管理模塊和主機接口模塊六部分。發(fā)送模塊和接收模塊主要提供MAC幀的發(fā)送和接收功能,,其主要操作有MAC幀的封裝與解包以及錯誤檢測,它直接提供了到外部物理層芯片的并行數(shù)據(jù)接口,。在實現(xiàn)中物理層處理直接利用商用的千兆PHY芯片,主要開發(fā)量集中在MAC控制器的開發(fā)上,。 圖10-30 以太網(wǎng)控制器的結(jié)構(gòu)設(shè)計框圖 MAC控制模塊則用于執(zhí)行全雙工模式中的流量控制功能,。MAC狀態(tài)模塊可用來監(jiān)視MAC操作過程的各種狀態(tài)信息,并作修改,。MII管理模塊提供了標準的IEEE 802.3介質(zhì)獨立接口,可用于連接以太網(wǎng)的鏈路層與物理層,。主機接口則提供以太網(wǎng)控制器與上層協(xié)議(如TCP/IP協(xié)議)之間的接口,以用于數(shù)據(jù)的發(fā)送,、接收以及對控制器內(nèi)各種寄存器(控制、狀態(tài)和命令寄存器)的設(shè)置。[next] 2.MAC控制器結(jié)構(gòu)和工作流程 1)MAC發(fā)送模塊 MAC發(fā)送模塊可將上層協(xié)議提供的數(shù)據(jù)封裝之后通過MII接口發(fā)送給PHY,。發(fā)送模塊可接收主機接口模塊的數(shù)據(jù)幀開始和數(shù)據(jù)幀結(jié)束標志,并通過主機接口從外部存儲器中讀取要發(fā)送的數(shù)據(jù),,然后對數(shù)據(jù)進行封裝,再通過PHY提供的載波偵聽和沖突檢測信號,,在信道空閑時由MII接口將數(shù)據(jù)以4位的寬度發(fā)送給PHY芯片,最后由PHY將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上,。
發(fā)送模塊由CRC生成模塊(crc_gen)、隨機數(shù)生成模塊(random_gen),、發(fā)送計數(shù)模塊(tx_cnt)和發(fā)送狀態(tài)機(tx_statem_machine)模塊等四個主要子模塊組成,其內(nèi)部結(jié)構(gòu)如圖10-31所示,。 圖10-31 以太網(wǎng)MAC發(fā)送模塊的結(jié)構(gòu)示意圖 發(fā)送狀態(tài)機由Idle_State,、Preamble_State、Data0_State,、Data1_State、PAD_State,、FCS_State、IPG_State,、Jam_State、BackOff_State,、Defer_State 等十個狀態(tài)組成。其狀態(tài)轉(zhuǎn)移圖如圖10-32所示,。 圖10-32 發(fā)送狀態(tài)機的狀態(tài)轉(zhuǎn)移圖 系統(tǒng)復位后,發(fā)送模塊即進入Defer_State狀態(tài),,并一直檢測載波偵聽(CarrierSense)信號。當載波偵聽信號變成無效(表示信道空閑)時,狀態(tài)機進入IPG_State狀態(tài),。此后,,在等待一個幀間間隙之后,狀態(tài)機進入Idle_State狀態(tài),。如果在幀間間隙的前2/3個周期檢測到信道忙信號,,狀態(tài)機將重新回到Defer_State狀態(tài),。 狀態(tài)機進入Idle_State狀態(tài)之后,,發(fā)送模塊將檢測載波偵聽信號和主機接口的發(fā)送請求,。若主機模塊請求發(fā)送,狀態(tài)機將進入Preamble_State狀態(tài),,發(fā)送模塊即通知PHY發(fā)送開始,,同時開始發(fā)送前序碼(7個0x5), 然后發(fā)送幀起始定界符(SFD, 0xd)。狀態(tài)機進入Data0_State后,,發(fā)送模塊將發(fā)送一個數(shù)據(jù)字節(jié)的低4位(LSB nibble),當其進入Data1_State狀態(tài)后,,發(fā)送模塊則發(fā)送數(shù)據(jù)字節(jié)的高4位(MSB nibble),。隨后,,狀態(tài)機一直在data0和data1之間循環(huán),直到數(shù)據(jù)發(fā)送完畢,。當還剩一個字節(jié)時,,主機模塊將通過發(fā)送幀結(jié)束信號來通知發(fā)送模塊,。如果數(shù)據(jù)幀的長度大于最小幀并且小于最大幀,狀態(tài)機就進入FCS_State狀態(tài),,此時發(fā)送模塊則將CRC生成模塊生成的CRC值添加到幀的FCS字段中并發(fā)送給PHY。 幀發(fā)送完之后,,狀態(tài)機進入Defer_State 狀態(tài),,之后是IPG_State和Idle_State狀態(tài),。此后狀態(tài)機又回到初始狀態(tài),以重新等待新的發(fā)送請求,。如果數(shù)據(jù)幀的長度小于最短幀,,狀態(tài)機就進入PAD_State狀態(tài),發(fā)送模塊根據(jù)系統(tǒng)設(shè)置確定是否在數(shù)據(jù)之后添加填充碼,。然后,,狀態(tài)機進入FCS_State狀態(tài)。如果數(shù)據(jù)幀的長度大于最大幀,,而系統(tǒng)設(shè)置又支持發(fā)送超長幀,,那么,狀態(tài)機就進入FCS_State狀態(tài),;如果不支持發(fā)送超長幀,,發(fā)送模塊將放棄發(fā)送,狀態(tài)機直接進入Defer狀態(tài),,然后是IPG狀態(tài),最后回到Idle狀態(tài),。 在發(fā)送數(shù)據(jù)的過程中,發(fā)送模塊會一直檢查沖突檢測信號(collision detected),。如果發(fā)現(xiàn)沖突且狀態(tài)機正處于Preamble_State,,狀態(tài)機將在發(fā)送完前序碼和SFD之后進入Jam_State,,并發(fā)送擁塞碼,然后進入BackOff狀態(tài),,以等待重試,。之后,狀態(tài)機經(jīng)過Defer和IPG回到Idle狀態(tài),。如果此時重試次數(shù)計數(shù)器的值沒有達到額定值,,發(fā)送模塊將重新開始發(fā)送剛才的幀,并將重試次數(shù)計數(shù)器的值加1,;如果發(fā)現(xiàn)沖突且狀態(tài)機處于data0、data1或FCS狀態(tài),,而且沒有超過沖突時間窗,那么狀態(tài)機將馬上進入Jam狀態(tài)發(fā)送擁塞碼,,之后經(jīng)過BackOff,、Defer,、IPG、回到Idle,,并根據(jù)重試計數(shù)器的值決定是否重新發(fā)送剛才的數(shù)據(jù)幀;如果檢測到發(fā)生沖突的時間超過了沖突時間窗,,狀態(tài)機將進入Defer狀態(tài),,然后經(jīng)過IPG到IDLE狀態(tài),,并放棄重試。 在全雙工模式中發(fā)送幀時,,不會進行延遲(defer), 發(fā)送的過程中也不會產(chǎn)生沖突。此時,,發(fā)送模塊將忽略PHY的載波偵聽和沖突檢測信號,。當然,,幀與幀之間仍然需遵守幀間間隙的規(guī)則。因此,,全雙工模式下的發(fā)送狀態(tài)機沒有Jam_State、BackOff_State,、Defer_State三個狀態(tài),。 [next] 2)MAC接收模塊 MAC接收模塊結(jié)構(gòu)如圖10-33所示,負責數(shù)據(jù)幀的接收,。當外部PHY將通信信道的串行數(shù)據(jù)轉(zhuǎn)換為半字節(jié)長的并行數(shù)據(jù)并發(fā)送給接收模塊后,,接收模塊會將這些半字節(jié)數(shù)據(jù)轉(zhuǎn)換為字節(jié)數(shù)據(jù),然后經(jīng)過地址識別,、CRC校驗、長度判斷等操作后,,再通過主機接口寫入外部存儲器,,并在主機接口模塊的接收隊列中記錄幀的相關(guān)信息,。此外,,接收模塊還負責前序碼和CRC的移除。 圖10-33 以太網(wǎng)MAC接收模塊的結(jié)構(gòu)示意圖 接收過程的接收狀態(tài)機由Idle_State,、Drop_State,、Preamble_State、SFD_State,、Data0_State、Data1_State等六個狀態(tài)組成, 其狀態(tài)轉(zhuǎn)移圖如圖10-34所示,。
圖10-34 接收狀態(tài)機的狀態(tài)轉(zhuǎn)移圖 當接收模塊檢測到數(shù)據(jù)有效信號之后,,狀態(tài)機將進入Preamble_State,,并開始接收前序碼,。此后狀態(tài)機進入SFD_State,,接收一個字節(jié)的幀起始定界符,,之后根據(jù)IFGcnt計數(shù)器的值進入不同的狀態(tài)。如果IFGcnt所確定的時間大于96個比特時間,,狀態(tài)機將進入Data0狀態(tài)以接收字節(jié)的低4位,,然后是Data1狀態(tài),并接收字節(jié)的高4位,,之后又回到Data0狀態(tài)。狀態(tài)機就一直在這兩個狀態(tài)之間循環(huán),,直到數(shù)據(jù)接收完畢(PHY清除MRxDV信號)后進入Idle,以重新等待接收新的數(shù)據(jù),;如果接收到幀起始定界符時,,IFGcnt計數(shù)器所確定的時間小于96個比特時間,,那么狀態(tài)機將進入Drop_State狀態(tài),并一直維持該狀態(tài)直到數(shù)據(jù)有效信號結(jié)束(PHY清除MRxDV信號),。之后,,狀態(tài)機再回到Idle等待接收新的數(shù)據(jù)。如果在接收前序碼,、幀起始定界符和數(shù)據(jù)期間,數(shù)據(jù)有效信號被清除,,那么狀態(tài)機將回到Idle,。 3)MII管理模塊 MII管理模塊用于控制MAC與外部PHY之間的接口,用于對PHY進行配置并讀取其狀態(tài)信息,。該接口由時鐘信號MDC和雙向數(shù)據(jù)信號MDIO組成,。MII管理模塊則由時鐘生成模塊,、移位寄存器模塊和輸出控制模塊三部分組成。 時鐘生成模塊可以根據(jù)系統(tǒng)時鐘和系統(tǒng)設(shè)置中的分頻系數(shù)來產(chǎn)生MII 管理模塊的時鐘信號MDC(10 Mbps速率時為2.5 MHz, 100 Mbps速率時為25 MHz),。移位寄存器模塊既可用于對PHY的控制數(shù)據(jù)進行寫入操作,也可用于對PHY的狀態(tài)信息進行讀出操作,。寫控制數(shù)據(jù)時,移位寄存器根據(jù)其他模塊的控制信號將并行控制數(shù)據(jù)轉(zhuǎn)換為串行數(shù)據(jù),;而在讀狀態(tài)信息時,,移位寄存器則將PHY的串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù),MAC中的其他模塊可將該并行數(shù)據(jù)寫入適當?shù)募拇嫫鳌? 由于MDIO是雙向信號,,因此輸出控制模塊就用來決定MDIO是處于輸入狀態(tài)還是輸出狀態(tài)。當MDIO處于輸出狀態(tài)時,,移位寄存器輸出的串行控制數(shù)據(jù)在經(jīng)過時鐘同步后發(fā)送到PHY;當MDIO處于輸入狀態(tài)時,,移位寄存器將數(shù)據(jù)線上的串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù) 4)主機接口模塊 主機接口是運行以太網(wǎng)的上層協(xié)議(如TCP/IP協(xié)議)與MAC控制器的接口。通過該接口,,上層協(xié)議可以設(shè)置MAC的工作模式并讀取MAC的狀態(tài)信息。該接口還可用于上層協(xié)議與MAC之間的數(shù)據(jù)交換,。 主機接口模塊內(nèi)有一組寄存器,,可用于存儲上層協(xié)議對MAC設(shè)置的參數(shù)以及MAC的狀態(tài)信息,。上層協(xié)議對MAC設(shè)置的參數(shù)包括接收超短幀的使能、添加填充碼使能,、發(fā)送超長幀的使能,、添加CRC校驗值使能、全雙工模式或半雙工模式,、持超長延遲使能,、混雜模式(Promiscuous)、接收廣播幀使能,、發(fā)送和接收使能,、中斷源和中斷使能、幀間間隙的長度,、最大幀和最小幀的長度,、重試限制和沖突時間窗、MII地址和MII控制命令,、接收和發(fā)送隊列的長度以及本機MAC地址等,。 上層協(xié)議通過MAC發(fā)送和接收數(shù)據(jù)的操作主要由主機接口模塊內(nèi)的兩個隊列來進行管理,,這兩個隊列用于對等待發(fā)送的多個幀和接收到的多個幀進行排隊。發(fā)送隊列主要記錄等待發(fā)送的幀的相關(guān)信息,、發(fā)送該幀時對MAC的設(shè)置以及該幀發(fā)送完之后產(chǎn)生的狀態(tài)信息。幀的相關(guān)信息包括幀的長度,、幀在外部存儲器中的地址、該幀是否準備好發(fā)送以及隊列中是否還有其它幀等待發(fā)送,;對MAC的設(shè)置則包括中斷使能、填充使能,、CRC使能;產(chǎn)生的狀態(tài)信息包括成功發(fā)送之前的重試次數(shù),、由于達到重試限制而放棄發(fā)送、發(fā)送時產(chǎn)生的滯后沖突以及成功發(fā)送之前發(fā)生過的延遲。 接收隊列主要對接收到的數(shù)據(jù)幀進行排隊并記錄每個接收到的幀信息,。這些信息包括幀的長度、是控制幀還是普通數(shù)據(jù)幀,、幀中包含無效符號、接收到的幀太長或太短,、發(fā)生CRC錯誤,、接收的過程中發(fā)生滯后沖突、幀是否接收完,、隊列中是否還有其它已接收到的幀以及幀存儲在外部存儲器中的地址等,。同時隊列中還有針對每個幀的設(shè)置位,用來設(shè)置是否在接收到幀時產(chǎn)生中斷,。發(fā)送隊列和接收隊列的長度都可以在控制寄存器中進行設(shè)置。[next] 10.4.3 Xilinx 千兆以太網(wǎng)MAC IP Core 1.GMAC IP Core的應(yīng)用場景和架構(gòu) Xilinx提供了三態(tài)以太網(wǎng)MAC控制器的IP Core,,可實現(xiàn)單條吉比特以太網(wǎng)鏈路,,通過交換機或路由器可與任意以太網(wǎng)端口相連。由于MAC控制器的速率很高,,底層傳輸必須依賴Rocket I/O,在客戶端還需要利用FIFO來交換數(shù)據(jù),,其完整的設(shè)計方案如圖10-35所示。
圖10-35 千兆以太網(wǎng)MACIP Core的應(yīng)用場合示意圖 2.GMAC IP Core的配置界面和接口信號 千兆以太網(wǎng)MACIP Core的配置界面如圖10-36所示,。GEMAC控制器所實現(xiàn)的主要功能如圖10-37所示,包括發(fā)送引擎,、接收引擎,、流控制,、GMII接口、客戶發(fā)送接口,、客戶接收接口以及客戶管理接口,。
點擊看原圖
圖10-36 千兆以太網(wǎng)MACIP Core的配置界面 圖10-37 千兆以太網(wǎng)MACIP Core的主要功能示意圖 下面給出相應(yīng)模塊的功能和接口信號說明,。 [next] 1)發(fā)送引擎 發(fā)送引擎通過客戶發(fā)送端口接收以太網(wǎng)的數(shù)據(jù)幀,并在幀頭添加幀引導區(qū)域,甚至在幀長小于最短要求時,,添加一定的冗余比特。同時,,該模塊還會在連續(xù)的數(shù)據(jù)幀之間插入以太網(wǎng)協(xié)議所規(guī)定的最小延時,,將用戶數(shù)據(jù)轉(zhuǎn)化成標準的GMII數(shù)據(jù)幀,并送至GMII模塊,。在應(yīng)用時,面向用戶的操作就是將用戶數(shù)據(jù)讀入GEMAC核內(nèi)部 該模塊接口信號的簡要信息如表10-10所列,。 表10-10 發(fā)送引擎接口信號列表
發(fā)送引擎的時序如圖10-38所示,。當客戶端有數(shù)據(jù)發(fā)送時,,將tx_data_valid拉高,同時將數(shù)據(jù)的第一個字節(jié)置于tx_data端口,;當GEMAC將第一字節(jié)數(shù)據(jù)讀入后,,會將tx_ack信號拉高,,用戶端邏輯檢測到tx_ack為高時,,要在下一個時鐘上升沿將其余的數(shù)據(jù)發(fā)送到數(shù)據(jù)端口上,,當數(shù)據(jù)發(fā)送完畢后,將x_data_valid拉低,。
圖10-38 發(fā)送引擎的時序圖 2)接收引擎 接收引擎接收來自GMII模塊的數(shù)據(jù),去掉幀頭的引導區(qū)域,,包括為了增加幀長的冗余比特,。此外,該模塊還能根據(jù)數(shù)據(jù)幀中的檢驗序列區(qū)域,、接收到的GMII錯誤碼字以及幀長信息完成錯誤檢測,主要接口信號的簡要說明如表10-11所列,。 表10-11 接收引擎接口信號列表
接收引擎的時序如圖10-39所示,??蛻舳诉壿嫳仨氃谌魏螘r候都準備好接收數(shù)據(jù),因為在GEMAC核中沒有接收緩存,有時延就會丟失數(shù)據(jù),,因此用戶可自己添加緩沖邏輯,。rx_data_valid為高時立即開始接收連續(xù)數(shù)據(jù),在檢測到rx_data_valid變低后,,判斷rx_good_frame信號的電平,如果為高則繼續(xù)處理該幀數(shù)據(jù),,否則直接丟棄,。
圖10-39 接收引擎的時序圖 [next] 3)流控制 流控制模塊是根據(jù)IEEE 802.3-2002標準的31項條款設(shè)計的,,在發(fā)送時附帶暫停幀,接收時也需要對其處理,。在GEMAC核中,,它是自動配置的,,同時,也提供了用戶自定義的配置端口,,如表10-12所列。 表10-12 流控制接口信號
4)可選的管理接口 管理接口是一個獨立的可選端口,,其地址,、數(shù)據(jù)和控制信號相對于其他模塊是獨立的,提供了和CoreConnec總線的交互能力,,可掛在MicroBlaze軟核或 表10-13 管理模塊的接口信號
5)復位操作 管理模塊具備自己獨立的軟件復位信號,但當管理接口模塊被旁路掉,,其相應(yīng)的配置信號被作為configura 表10-14 復位信號列表 [next]
6)GMII模塊 GMII模塊的接收信號一般都是直接連到PHY芯片上,負責和PHY芯片的數(shù)據(jù)交互,其信號和PHY芯片的接口是一一對應(yīng)的,,如表10-15所列,。 表10-15 GMII模塊接口信號列表
配置完成后,,可在工程管理區(qū)選中GEMAC核,在過程管理區(qū),,點擊“View HDL Instantiation Template”命令,,查看其例化代碼,,它在代碼中的例化方法和一般IP Core的方法是一樣的。 10.5 本章小結(jié) 高速串行傳輸技術(shù)是FPGA未來的三大應(yīng)用領(lǐng)域之一,,本章主要介紹了Xilinx公司的Rocket I/O解決方案。首先給出高速傳輸?shù)谋尘?,指出串行方式是吉比特以及更高速率鏈路的必然選擇,。其次,,給出了吉比特串行傳輸?shù)耐ㄓ眉軜?gòu),為后文做好鋪墊,。接著重點介紹了Xilinx公司Rocket I/O的系統(tǒng)組成、相關(guān)協(xié)議,、時鐘設(shè)計方案、開發(fā)要素以及Rocket I/O的使用方法,。最后說明了千兆以太網(wǎng)MAC控制器IP Core的使用方法,。讀者需要注意的是Rocket I/O是Xilinx高端FPGA中的內(nèi)嵌組件,,和DCM、硬核乘法器,、塊RAM等的使用方法是一樣的,可通過IP Core調(diào)用,。高速傳輸是一種新技術(shù),,開發(fā)難度較大,本章只是介紹了其中的主要核心部分和基本原理,,還需要讀者閱讀大量的文獻和實際操作才能熟練開發(fā)相關(guān)系統(tǒng)。 |
|