色偷偷偷久久伊人大杳蕉,色爽交视频免费观看,欧美扒开腿做爽爽爽a片,欧美孕交alscan巨交xxx,日日碰狠狠躁久久躁蜜桃

x
x

基于FPGA的以太網(wǎng)控制器設計

發(fā)布時間:2010-7-28 12:45    發(fā)布者:lavida
目前,以太網(wǎng)802.3協(xié)議和TCP/IP協(xié)議是現(xiàn)今嵌入式系統(tǒng)接入Internet的首選協(xié)議。而以太網(wǎng)(Ethernet)的核心思想是多用戶使用共享的公共傳輸信道,它通過帶沖突檢測的載波偵聽多路訪問協(xié)議(CSMA/CD)來控制對介質(zhì)的訪問。  

本文給出了完全用FPGA的控制邏輯來實現(xiàn)嵌入式系統(tǒng)Internet接人中的底層以太網(wǎng)控制器的設計方法。并最終設計出符合IEEE 802.3標準的控制器,從而實現(xiàn)了10 Mbps和100 Mbps兩種傳輸速率以及半雙工和全雙工兩種工作模式,并可通過IEEE802.3標準定義的介質(zhì)獨立接口(MII)與以太網(wǎng)物理層芯片相連接。  

1 總體設計方案  

以太網(wǎng)控制器的FPGA設計工作包括以太網(wǎng)MAC子層的FPGA設計、MAC子層與上層協(xié)議的接口設計以及MAC與物理層(PHY)的MII接口設計。  

該以太網(wǎng)控制器的總體結(jié)構(gòu)設計框圖如圖1所示。整個系統(tǒng)分為發(fā)送模塊、接收模塊、MAC狀態(tài)模塊、MAC控制模塊、MII管理模塊和主機接口模塊六部分。發(fā)送模塊和接收模塊主要提供MAC幀的發(fā)送和接收功能,其主要操作有MAC幀的封裝與解包以及錯誤檢測,它直接提供了到外部物理層芯片(PHY)的并行數(shù)據(jù)接口(MII)。MAC控制模塊則用于執(zhí)行全雙工模式中的流量控制功能。MAC狀態(tài)模塊可用來監(jiān)視MAC的操作過程的各種狀態(tài)信息,并作修改。MII管理模塊提供了標準的IEEE 802.3介質(zhì)獨立接口(MII),可用于連接以太網(wǎng)的鏈路層與物理層(PHY)。主機接口則提供有以太網(wǎng)控制器與上層協(xié)議(如TCP/IP協(xié)議)之間的接口,以用于數(shù)據(jù)的發(fā)送、接收以及對控制器內(nèi)各種寄存器(控制、狀態(tài)和命令寄存器)的設置。  

2 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)絡上。

發(fā)送模塊由CRC生成模塊(crc_gen)、隨機數(shù)生成模塊(random_gen)、發(fā)送計數(shù)模塊(tx_cnt) 和發(fā)送狀態(tài)機(tx_statem_模塊等四個子模塊組成。  

2.1 CRC生成模塊(crc_gen)  

該模塊用于計算發(fā)送數(shù)據(jù)的CRC值,并將CRC值添加到數(shù)據(jù)幀的幀校驗序列字段(FCS)內(nèi)。為了提高效率,并考慮到MAC與PHY的數(shù)據(jù)通道為4位,設計時可采用4位并行CRC計算方法,算法中可使用一個次態(tài)函數(shù),并通過循環(huán)迭代來模擬移位操作。這樣,發(fā)送模塊就可以在邊發(fā)送數(shù)據(jù)到PHY的同時,一邊計算CRC,這樣當數(shù)據(jù)發(fā)送完時,CRC值也計算完成了。  

2.2 隨機數(shù)生成模塊(random_gen)  

如在發(fā)送過程中檢測到?jīng)_突,發(fā)送模塊就先發(fā)送擁塞碼(jam),隨后停止發(fā)送。在下次重新發(fā)送之前,發(fā)送模塊會先執(zhí)行一個后退(backoff)操作,即發(fā)送模塊等待一個半隨機(生成的隨機數(shù)有范圍限制)的時間之后再開始發(fā)送。該隨機數(shù)就是由隨機數(shù)生成模塊產(chǎn)生的,它采用經(jīng)典的截斷二元指數(shù)后退算法,后退的時間是一個與發(fā)生沖突次數(shù)有關的隨機數(shù),隨著沖突的次數(shù)增多,用于生成該隨機數(shù)的范同也將逐漸增大,以減少沖突的概率。  

2.3 發(fā)送計數(shù)模塊(tx_cnt)  

發(fā)送計數(shù)模塊由半字節(jié)計數(shù)器(nibcnt)、字節(jié)計數(shù)器和重試次數(shù)計數(shù)器(retrycnt)三個計數(shù)器組成。其中重試次數(shù)計數(shù)器(retrycnt)可對發(fā)送某個幀時產(chǎn)生沖突次數(shù)進行計數(shù)。當計數(shù)器的值達到最大重試次數(shù)時,它將放棄重試,并丟棄發(fā)送緩沖器內(nèi)的數(shù)據(jù)。同時,重試計數(shù)器的值還被隨機數(shù)生成模塊用于計算下次重試之前需要后退(backoff)的時隙的個數(shù)。  

半字節(jié)計數(shù)器和字節(jié)計數(shù)器分別用于對發(fā)送過程中的半字節(jié)(bibble)和字節(jié)進行計數(shù)。  

信道忙時,發(fā)送模塊會一直等待,半字節(jié)計算器一直計數(shù)。當計數(shù)到額定等待時間時(最大幀長度的兩倍,即3036字節(jié)時間),系統(tǒng)會根據(jù)設置放棄發(fā)送或是一直等待(可選功能)。一旦信道空閑再進入幀間間隙周期(≥96個比特時間),南半字節(jié)計數(shù)器從零開始計數(shù)。幀間間隙分為兩個部分,在前2/3個周期中,如果檢測到信道忙信號,則半字節(jié)計數(shù)器復位,發(fā)送模塊重新開始等待;在后l/3周期中,即使檢測到信道忙信號,半字節(jié)計數(shù)器也不會復位,而是繼續(xù)計數(shù),以保證每個站點公平的競爭信道。而當半字節(jié)計數(shù)器的值達到幀問間隙周期時,此時如果有數(shù)據(jù)等待發(fā)送,發(fā)送模塊就開始發(fā)送數(shù)據(jù)。此外,半字節(jié)計算器還用于前序碼的生成和短幀的判斷,在數(shù)據(jù)幀的長度小于最小幀時,發(fā)送模塊必須根據(jù)系統(tǒng)設置進行填充或不填充。  

字節(jié)計算器還可用于滯后沖突(late collision)和超長幀的判斷。當滯后沖突發(fā)生時,正在發(fā)送的數(shù)據(jù)將被丟棄。超長幀的判斷則是從對幀內(nèi)容(包括FCS)進行字節(jié)計數(shù),如果字節(jié)計數(shù)器的值大于最大有效幀的長度(1518個字節(jié)),發(fā)送模塊就根據(jù)系統(tǒng)設置(是否支持超長幀)丟棄或發(fā)送。  

2.4 發(fā)送狀態(tài)機模塊(tx_statem)  

發(fā)送狀態(tài)機模塊是整個發(fā)送模塊的核心,主要用于控制整個發(fā)送過程。發(fā)送狀態(tài)機由I-die_State、Preamble_State、 Data0_State、 Da-tal_State、 PAD_State、 FCS_State、 IPG_State、Jam_State、BackOff_State、Defer_State等十個狀態(tài)組成。  

系統(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ù)據(jù)之后來添加填充碼。然后,狀態(tài)機進入FCS_State狀態(tài)。如果數(shù)據(jù)幀的長度大于最大幀,而系統(tǒng)設置又支持發(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、da-tal或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)。  

3 MAC接收模塊  

MAC接收模塊負責數(shù)據(jù)幀的接收。當外部PHY將通信信道的串行數(shù)據(jù)轉(zhuǎn)換為半字節(jié)長的并行數(shù)據(jù)并發(fā)送給接收模塊后,接收模塊會將這些半字節(jié)數(shù)據(jù)轉(zhuǎn)換為字節(jié)數(shù)據(jù),然后經(jīng)過地址識別、CRC校驗、長度判斷等操作后,再通過主機接口寫入外部存儲器,并在主機接口模塊的接收隊列中記錄幀的相關信息。此外,接收模塊還負責前序碼和CRC的移除。  

接收模塊由CRC校驗模塊、地址識別模塊、接收計數(shù)器模塊和接收狀態(tài)機模塊等四部分組成。  

接收模塊中的CRC校驗模塊可通過檢查輸入幀的CRC值來驗證幀的正確性。其算法與CRC生成模塊相同。  

地址識別模塊用于決定是否接收收到的幀,接收模塊首先接收輸入幀而不管目的地址,隨后由地址識別模塊檢查幀中的目的地址。若MAC被設置為混雜模式(Promiscuous mode)且目的地址為廣播地址,同時允許接收廣播幀,幀則被接收。否則,幀被丟棄。  

接收計數(shù)器模塊由字節(jié)計數(shù)器(Bytecnt)和幀間間隙計數(shù)器(IFGcnt)組成。字節(jié)計數(shù)器在接收幀過程中將對字節(jié)進行計數(shù),以用于識別幀中的各個字段(前序碼、目的地址字段、數(shù)據(jù)、FCS等)以及判斷超長幀。幀間間隙計數(shù)器則對兩幀之間的間隔時間進行計數(shù),以用于判斷下一幀數(shù)據(jù)的開始。IEEE 802.3規(guī)定,兩幀之間的間隔至少必須為96個比特時間(10 Mbps中為9 600ns,100 Mbps中為960 ns)。如果兩幀之間的間隔小于要求,幀將被丟棄。  

接收狀態(tài)機為接收模塊的核心,用于控制整個接收過程。接收狀態(tài)機由Idle_State、Drop_State、Preamble_State、 SFD_State、 Da-ta0_State、Data1_State等六個狀態(tài)組成。  

系統(tǒng)復位后,狀態(tài)機處于Drop_State。如果此時MII的數(shù)據(jù)有效信號(MRxDV)無效,狀態(tài)機馬上進入Idle_State狀態(tài),并一直處于Idle等待接收輸入幀。  

當接收模塊檢測到數(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。  

4 MAC的其它模塊  

4.1 MAC狀態(tài)模塊  

在接收過程的狀態(tài)信息中,接收錯誤表明PHY在接收過程中檢測到了錯誤;接收到無效符號則表明接收到的幀中包括無效(PHY無法識別)的符號;滯后沖突表明接收幀時檢測到滯后沖突信號;超短幀表明接收到的幀小于最短有效的長度;超長幀表明接收到的幀大于最大有效幀的長度;半字節(jié)對齊錯誤表明接收到的半字節(jié)不是偶數(shù)(即幀的長度不是字節(jié)的整數(shù)倍);接收溢出則表明接收模塊來不及處理接收到的數(shù)據(jù)而導致接收FIFO溢出。  

在發(fā)送過程的狀態(tài)信息中,超過重試限制表示由于沖突導致的重試次數(shù)超過了額定值;滯后沖突表示發(fā)送幀的過程中檢測到的沖突信號超過了規(guī)定的沖突時間窗;延遲,表明在發(fā)送幀之前檢測到信道忙。  

4.2 MAC控制模塊  

MAC控制模塊提供有全雙工操作中的流量控制功能,流量控制可通過發(fā)送和接收PAUSE的MAC控制幀來實現(xiàn)。當接收站點的接收緩沖區(qū)(Rx FIFO)快溢出而主機接口義來不及取走數(shù)據(jù)時,系統(tǒng)就會發(fā)出流量控制請求。MAC在接收到流量控制請求之后,即發(fā)送PAUSE控制幀,以使數(shù)據(jù)發(fā)送站點在指定的時間內(nèi)暫停發(fā)送數(shù)據(jù)。  

數(shù)據(jù)發(fā)送站點接收到PAUSE控制幀后,便可根據(jù)幀中的參數(shù)設置PAUSE定時器。PAUSE定時器在減到0之前,發(fā)送模塊將暫停發(fā)送數(shù)據(jù)(PAUSE控制幀除外)。PAUSE定時器減到0之后,發(fā)送模塊將恢復發(fā)送數(shù)據(jù)。  

4.3 MII管理模塊  

MII管理模塊用于控制MAC與外部PHY之間的接口,以用于對PHY進行配置并讀取其狀態(tài)信息。該接口由時鐘信號MDC和雙向數(shù)據(jù)信號MDIO組成。MII管理模塊則由時鐘生成模塊、移位寄存器模塊和輸出控制模塊三部分組成。  

時鐘生成模塊可以根據(jù)系統(tǒng)時鐘和系統(tǒng)設置中的分頻系數(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ù)募拇嫫鳌?nbsp; 

由于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.4 主機接口模塊  

主機接口是運行以太網(wǎng)的上層協(xié)議(如TCP/IP協(xié)議)與MAC控制器的接口。通過該接口,上層協(xié)議可以設置MAC的工作模式并讀取MAC的狀態(tài)信息。該接口還可用于上層協(xié)議與MAC之間的數(shù)據(jù)交換。  

主機接口模塊內(nèi)有一組寄存器,可用于存儲上層協(xié)議對MAC設置的參數(shù)以及MAC的狀態(tài)信息。上層協(xié)議對MAC設置的參數(shù)包括接收超短幀的使能、添加填充碼使能、持發(fā)送超長幀的使能、添加CRC校驗值使能、全雙工模式或半雙工模式、持超長延遲(Defer)使能、混雜模式(Promiscuous)、接收廣播幀使能、發(fā)送和接收使能、中斷源和中斷使能、幀間間隙的長度、最大幀和最小幀的長度、重試限制和沖突時間窗、MII地址和MII控制命令、接收和發(fā)送隊列的長度以及本機MAC地址等。  

上層協(xié)議通過MAC發(fā)送和接收數(shù)據(jù)的操作主要由主機接口模塊內(nèi)的兩個隊列來進行管理,這兩個隊列用于對等待發(fā)送的多個幀和接收到的多個幀進行排隊。  

發(fā)送隊列主要記錄等待發(fā)送的幀的相關信息、發(fā)送該幀時對MAC的設置以及該幀發(fā)送完之后產(chǎn)生的狀態(tài)信息。幀的相關信息包括幀的長度、幀在外部存儲器中的地址、該幀是否準備好發(fā)送以及隊列中是否還有其它幀等待發(fā)送;對MAC的設置則包括中斷使能、填充使能、CRC使能;產(chǎn)生的狀態(tài)信息包括成功發(fā)送之前的重試次數(shù)、由于達到重試限制而放棄發(fā)送、發(fā)送時產(chǎn)生的滯后沖突以及成功發(fā)送之前發(fā)生過的延遲。  

接收隊列主要對接收到的數(shù)據(jù)幀進行排隊并記錄每個接收到的幀信息。這些信息包括幀的長度、是控制幀還是普通數(shù)據(jù)幀、幀中包含無效符號、接收到的幀太長或太短、發(fā)生CRC錯誤、接收的過程中發(fā)生滯后沖突、幀是否接收完、隊列中是否還有其它已接收到的幀以及幀存儲在外部存儲器中的地址等。該位同時隊列中還有針對每個幀的設置位,用來設置是否在接收到幀時產(chǎn)生中斷。  

發(fā)送隊列和接收隊列的長度都可以在控制寄存器中進行設置。  

5 綜合結(jié)果  

本設計采用Verilog語言描述,F(xiàn)PGA芯片使用Altera公司的Stratix-6,整個設計經(jīng)Synplicity公司的Synplify Pro 8.1綜合后,可在Altera公司的Quartus II 4.2下布局布線,最后用Mentor Graphics公司的ModelSim軟件進行仿真。表1所列是Syn-plify Pro 8.1綜合結(jié)果。  

該以太網(wǎng)控制器使用的邏輯單元為2273,占用的存儲器資源為9 216 bits,最終的時鐘頻率可達到101.16 MHz,因此,能夠滿足100 Mbit/s的速率要求。  

6 結(jié)束語  

本文給出了完全用FPGA實現(xiàn)嵌入式以太網(wǎng)控制器的設計方法,該方法只需要外接物理層芯片(PHY)和集成有TCP/IP協(xié)議的單芯片(即硬協(xié)議)或在嵌入式操作系統(tǒng)中運行TCP/IP協(xié)議(即軟協(xié)議)就可以實現(xiàn)嵌入式系統(tǒng)的高速互聯(lián)網(wǎng)接入。從而有效地降低成本,減小版面積和布線復雜度,提高整個系統(tǒng)的集成度。因此,該方法具有一定的實際意義。
本文地址:http://www.54549.cn/thread-17418-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內(nèi)容、版權和其它問題,我們將根據(jù)著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表