專(zhuān)利名稱(chēng):一種適用于wlan的以太網(wǎng)mac子層控制器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域中的MAC子層以及微電子領(lǐng)域中的ASIC設(shè)計(jì)領(lǐng)域。尤 其涉及一種適用于WLAN無(wú)線傳輸系統(tǒng)網(wǎng)絡(luò)接入的基于IEEE802. 3標(biāo)準(zhǔn)規(guī)范的以太網(wǎng)MAC 子層控制器。
背景技術(shù):
隨著互聯(lián)網(wǎng)和電子技術(shù)的發(fā)展,越來(lái)越多的電子設(shè)備開(kāi)始接入網(wǎng)絡(luò),研究方便快 捷的網(wǎng)絡(luò)接入方案有很強(qiáng)的現(xiàn)實(shí)意義。IEEE802. 3快速以太網(wǎng)標(biāo)準(zhǔn)規(guī)定了 10M/100M以太網(wǎng) 物理層和MAC子層規(guī)范。該協(xié)議規(guī)范最高支持IOOMbps可靠的全雙工數(shù)據(jù)傳輸,能夠滿(mǎn)足 絕大多數(shù)數(shù)據(jù)流傳輸?shù)耐掏侣实男枨蟆C襟w介質(zhì)訪問(wèn)控制(MAC)子層處于IEEE 802網(wǎng)絡(luò)參考模型中的第二層,與最底層 的物理層通過(guò)媒體介質(zhì)無(wú)關(guān)接口連接,是網(wǎng)絡(luò)參考模型中重要的一層。MAC子層的主要功能 是實(shí)現(xiàn)媒體訪問(wèn)接入控制以及在物理層的基礎(chǔ)上實(shí)現(xiàn)無(wú)差錯(cuò)的通信,具體負(fù)責(zé)發(fā)送過(guò)程 中將上層交下來(lái)的數(shù)據(jù)封裝成幀進(jìn)行發(fā)送,接收過(guò)程中將幀拆卸;實(shí)現(xiàn)和維護(hù)MAC協(xié)議;比 特差錯(cuò)監(jiān)測(cè);尋址[2]。設(shè)計(jì)一種簡(jiǎn)便,穩(wěn)定的MAC子層控制器對(duì)于充分發(fā)揮網(wǎng)絡(luò)的性能至 關(guān)重要。文獻(xiàn)[3]設(shè)計(jì)的MAC控制器幀緩存結(jié)構(gòu)采用片內(nèi)RAM作為幀數(shù)據(jù)緩存,將RAM緩 存區(qū)分為若干連續(xù)的256字節(jié)大小的分片,對(duì)于長(zhǎng)度小于256字節(jié)的幀用一個(gè)分片存儲(chǔ),如 果幀長(zhǎng)大于256字節(jié),則用幾個(gè)分片來(lái)存儲(chǔ)。這種緩存方案設(shè)計(jì)較為簡(jiǎn)單,但是存在接收短 幀時(shí)幀緩存利用率不高的問(wèn)題,例如一個(gè)64字節(jié)的最小幀也要占用一個(gè)分片056字節(jié)) 的緩存空間。如果采用FIFO作為緩存則不會(huì)出現(xiàn)由于存儲(chǔ)分片而造成存儲(chǔ)的浪費(fèi),但是傳 統(tǒng)的FIFO讀寫(xiě)指針都為順序的增加,難以滿(mǎn)足發(fā)送數(shù)據(jù)幀沖突重傳以及接收幀時(shí)直接丟 棄壞幀的功能。
發(fā)明內(nèi)容
(一)要解決的技術(shù)問(wèn)題有鑒于此,本發(fā)明主要目的在于提供一種適用于WLAN的以太網(wǎng)MAC子層控制器, 使得數(shù)據(jù)幀重傳和丟棄等的功能實(shí)現(xiàn)更為簡(jiǎn)便,并且解決傳統(tǒng)緩存結(jié)構(gòu)在接收數(shù)據(jù)幀時(shí)的 緩存浪費(fèi)的弊端。( 二 )技術(shù)方案為達(dá)到上述目的,本發(fā)明提供了一種適用于WLAN的以太網(wǎng)MAC子層控制器,該控 制器包括發(fā)送模塊、接收模塊、狀態(tài)模塊、控制模塊、MII管理模塊、發(fā)送緩存、接收緩存和寄 存器模塊;其中,發(fā)送緩存和接收緩存采用讀地址可載入的異步FIFO,實(shí)現(xiàn)數(shù)據(jù)幀的存儲(chǔ), 重傳和丟棄;主機(jī)與MAC子層控制器之間的數(shù)據(jù)幀信息的交互通過(guò)數(shù)據(jù)幀緩存描述符來(lái)進(jìn) 行,數(shù)據(jù)幀緩存描述符分為發(fā)送緩存描述符和接收緩存描述符,發(fā)送緩存描述符用來(lái)控制 數(shù)據(jù)幀的發(fā)送過(guò)程并記錄和返回發(fā)送狀態(tài);接收緩存描述符用來(lái)控制讀取接收到的數(shù)據(jù)幀并向主機(jī)返回幀接收狀態(tài)。上述方案中,所述發(fā)送模塊包括發(fā)送數(shù)據(jù)通路子模塊、發(fā)送CRC子模塊、隨機(jī)數(shù)子 模塊和發(fā)送狀態(tài)機(jī)子模塊,其中發(fā)送數(shù)據(jù)通路子模塊,為發(fā)送模塊的數(shù)據(jù)通路,用于為一幀數(shù)據(jù)添加前導(dǎo)碼,填充 字段以及CRC校驗(yàn)字段,并以半位元的格式輸出一幀數(shù)據(jù); 發(fā)送CRC子模塊,用于計(jì)算一幀數(shù)據(jù)的CRC校驗(yàn)碼序列,它在一幀數(shù)據(jù)結(jié)束后產(chǎn)生 32位的有效的幀校驗(yàn)序列,并通過(guò)發(fā)送數(shù)據(jù)通路子模塊發(fā)送至MII接口 ;隨機(jī)數(shù)子模塊,用來(lái)產(chǎn)生符合二進(jìn)制指數(shù)隨機(jī)退避時(shí)間長(zhǎng)度的隨機(jī)數(shù);發(fā)送狀態(tài)機(jī)子模塊,是發(fā)送模塊的狀態(tài)機(jī),按照802. 3協(xié)議的要求完成發(fā)送一幀 數(shù)據(jù)時(shí)的狀態(tài)轉(zhuǎn)換;模塊內(nèi)部還包含若干個(gè)計(jì)數(shù)器,包括記錄發(fā)送數(shù)據(jù)的字節(jié)數(shù)、重發(fā)次數(shù) 的計(jì)數(shù)、IPG時(shí)間的計(jì)數(shù)和延遲時(shí)間計(jì)數(shù),它與狀態(tài)機(jī)子模塊一起實(shí)現(xiàn)復(fù)雜的發(fā)送控制,包 括對(duì)數(shù)據(jù)通路的控制、控制發(fā)送CRC子模塊的初始化及使能,以及根據(jù)在發(fā)送過(guò)程中產(chǎn)生 的各種狀況產(chǎn)生狀態(tài)信號(hào)至狀態(tài)模塊、發(fā)送緩存和接收緩存。上述方案中,所述接收模塊用于完成數(shù)據(jù)幀的接收和錯(cuò)誤校驗(yàn),接收模塊從MII 接口接收數(shù)據(jù),識(shí)別前導(dǎo)碼、目的地址,決定是否將此幀數(shù)據(jù)交給接收緩存,并對(duì)幀數(shù)據(jù)進(jìn) 行CRC校驗(yàn);同時(shí),接收模塊會(huì)響應(yīng)在接收過(guò)程中發(fā)生的各種情況并在接收結(jié)束后產(chǎn)生此 幀數(shù)據(jù)的接收狀態(tài)信號(hào)rX_StatuS ;接收模塊包含接收計(jì)數(shù)器子模塊、地址檢測(cè)子模塊、接 收CRC子模塊、接收數(shù)據(jù)通路和接收狀態(tài)機(jī)子模塊。上述方案中,所述接收計(jì)數(shù)器子模塊中包含若干計(jì)數(shù)器,用來(lái)對(duì)接收到的字節(jié)數(shù)、 接收到的半字節(jié)數(shù)及幀間間隔進(jìn)行計(jì)數(shù);接收CRC子模塊用來(lái)實(shí)現(xiàn)對(duì)一幀數(shù)據(jù)的CRC校驗(yàn); 接收狀態(tài)機(jī)子模塊用來(lái)控制幀接收過(guò)程中的狀態(tài)轉(zhuǎn)移。上述方案中,所述發(fā)送緩存和接收緩存所采用的讀地址可載入的異步FIFO,使用 握手方式實(shí)現(xiàn)讀寫(xiě)指針安全的異步時(shí)鐘域之間的傳輸,通過(guò)握手方式傳遞讀寫(xiě)指針,使得 讀寫(xiě)指針可以跳躍變化。上述方案中,所述異步FIFO工作在三種工作模式普通FIFO模式、讀地址可載入 /幀保護(hù)模式和讀地址可載入/非幀保護(hù)模式;其中,讀地址可載入/幀保護(hù)模式的特征 為在下一次讀地址載入前,正在讀取的一幀數(shù)據(jù)不會(huì)被覆蓋掉;讀地址可載入/非幀保護(hù) 模式的特征為讀地址可載入,當(dāng)前正在讀取的幀中,已經(jīng)讀取過(guò)的數(shù)據(jù)可以被覆蓋掉。上述方案中,所述異步FIFO使用握手方式實(shí)現(xiàn)讀寫(xiě)指針安全的異步時(shí)鐘域之間 的傳輸,在將讀指針同步到寫(xiě)時(shí)鐘域時(shí),具體包括步驟1 首先讀時(shí)鐘域更新讀指針寄存器r_wptr,然后向?qū)憰r(shí)鐘域發(fā)送一個(gè)請(qǐng)求 讀取讀指針寄存器的的信號(hào)w_req,w_req同步到寫(xiě)時(shí)鐘域后變?yōu)閣_req_SynC ;步驟2 寫(xiě)時(shí)鐘域檢測(cè)到W_req_SynC的上升沿會(huì)讀取讀指針寄存器,同時(shí)向讀時(shí) 鐘域發(fā)送一個(gè)回應(yīng)信號(hào)w_ack,w_ack同步到讀時(shí)鐘域后產(chǎn)生信號(hào)w_aCk_SynC ;步驟3 讀時(shí)鐘域檢測(cè)到w_aCk_SynC的上升沿并更新讀指針計(jì)數(shù)器,同時(shí)復(fù)位 req信號(hào);步驟4 寫(xiě)時(shí)鐘域檢測(cè)到W_req_SynC的下降沿后,復(fù)位w_ack ;步驟5 讀時(shí)鐘域檢測(cè)到w_aCk_SynC的下降沿后,開(kāi)始新一次的讀取讀指針寄存 器的請(qǐng)求。
上述方案中,所述發(fā)送緩存包含發(fā)送數(shù)據(jù)幀緩存單元、發(fā)送描述符控制單元以及 發(fā)送緩存控制單元,發(fā)送幀數(shù)據(jù)描述符至少包含以下幾個(gè)字段首地址指針、幀數(shù)據(jù)長(zhǎng)度、 幀的發(fā)送狀態(tài)和發(fā)送緩存描述符狀態(tài);所述基于讀地址可載入的異步FIFO和發(fā)送數(shù)據(jù)描述符的MAC控制器幀數(shù)據(jù)發(fā)送 過(guò)程包括如下步驟步驟10 主機(jī)通過(guò)發(fā)送緩存描述符獲得可用的空閑發(fā)送緩存描述符,主機(jī)接口保 存當(dāng)前的發(fā)送FIFO的寫(xiě)指針wptr ;步驟20 主機(jī)通過(guò)主機(jī)接口中的DMA將一幀數(shù)據(jù)寫(xiě)入到發(fā)送FIFO中;步驟30 主機(jī)通過(guò)主機(jī)接口將此幀數(shù)據(jù)的起始FIFO寫(xiě)指針,幀長(zhǎng)度信息,描述符 狀態(tài)信息寫(xiě)入發(fā)送緩存描述符子模塊,發(fā)送緩存描述符子模塊將這些信息組成一個(gè)發(fā)送描 述符,寫(xiě)入一個(gè)空閑的發(fā)送描述符緩存中;步驟40 發(fā)送緩存控制模塊從發(fā)送緩存描述符子模塊中讀取一個(gè)發(fā)送緩存描述 符,寄存該描述符并向發(fā)送FIFO載入幀數(shù)據(jù)在發(fā)送FIFO中存儲(chǔ)的首指針,開(kāi)始讀取數(shù)據(jù)并 發(fā)送;步驟50 如果發(fā)送過(guò)程中發(fā)生沖突需要重傳,則發(fā)送緩存控制模塊重新向發(fā)送 FIFO載入該幀的首指針,重傳該幀;如果該幀發(fā)送完畢或失敗,則向發(fā)送緩存描述符子模 塊回寫(xiě)該幀的發(fā)送狀態(tài)信息及描述符狀態(tài)信息,發(fā)送緩存描述符子模塊回寫(xiě)發(fā)送狀態(tài)到相 應(yīng)描述符并向主機(jī)產(chǎn)生發(fā)送中斷,等待主機(jī)讀取處理。上述方案中,所述接收緩存包含接收數(shù)據(jù)幀緩存單元、接收描述符控制單元以及 接收緩存控制單元,接收緩存數(shù)據(jù)描述符至少包含以下幾個(gè)字段接收幀的首指針、幀數(shù)據(jù) 長(zhǎng)度和幀的接收狀態(tài);接收緩存描述符控制單元由一個(gè)異步FIFO實(shí)現(xiàn),使用三個(gè)FIFO存儲(chǔ) 單元存儲(chǔ)一個(gè)接收緩存描述符,第一個(gè)單元為全‘1’,標(biāo)志一個(gè)接收緩沖描述符的邊界;后 兩個(gè)存儲(chǔ)單元用來(lái)存儲(chǔ)接收緩存描述符的有效內(nèi)容。上述方案中,所述基于讀地址可載入的異步FIFO和發(fā)送數(shù)據(jù)描述符的MAC控制器 幀數(shù)據(jù)接收緩存過(guò)程包括如下步驟步驟100 接收緩存控制單元在接收一幀數(shù)據(jù)之前,先保存當(dāng)前接收數(shù)據(jù)FIFO的 寫(xiě)指針,然后開(kāi)始接收幀數(shù)據(jù);步驟200 該幀接收完畢后,將該幀在數(shù)據(jù)FIFO中的首指針、幀長(zhǎng)度和幀接收狀態(tài) 寫(xiě)入到接收緩存描述符模塊中,并產(chǎn)生接收中斷,等待主機(jī)處理;步驟300 主機(jī)響應(yīng)中斷,讀取接收緩存描述符,并根據(jù)其中的信息從接收FIFO中 讀取該幀;如果主機(jī)讀取緩存描述符后發(fā)現(xiàn)該幀數(shù)據(jù)已損壞,則主機(jī)可以直接丟棄該描述 符,在讀取下一個(gè)接收描述符后,直接向接收FIFO載入新描述符的首指針,則可以直接越 過(guò)接收FIFO中的壞幀,而無(wú)需將壞幀讀出。(三)有益效果從上述技術(shù)方案可以看出,本發(fā)明具有以下有益效果1、本發(fā)明提供的適用于WLAN的以太網(wǎng)MAC子層控制器,具有很強(qiáng)的通用性,可廣 泛適用于需要對(duì)數(shù)據(jù)幀進(jìn)行緩存和處理的數(shù)字系統(tǒng)中。2、本發(fā)明提供的適用于WLAN的以太網(wǎng)MAC子層控制器,方便的實(shí)現(xiàn)了數(shù)據(jù)幀重傳 和數(shù)據(jù)幀丟棄的功能,并提高了片內(nèi)緩存的利用效率,具有很強(qiáng)的實(shí)用價(jià)值。
圖1是本發(fā)明提供的適用于WLAN的以太網(wǎng)MAC子層控制器的示意圖;圖2是本發(fā)明提供的適用于WLAN的以太網(wǎng)MAC子層控制器中數(shù)據(jù)幀發(fā)送單元的 示意圖;圖3是本發(fā)明提供的適用于WLAN的以太網(wǎng)MAC子層控制器中數(shù)據(jù)幀接收單元的 示意圖;圖4是本發(fā)明提供的適用于WLAN的以太網(wǎng)MAC子層控制器中讀地址可載入的多 模式異步FIFO結(jié)構(gòu)的示意圖;圖5是本發(fā)明提供的適用于WLAN的以太網(wǎng)MAC子層控制器中發(fā)送緩存單元結(jié)構(gòu) 的示意圖;圖6是本發(fā)明提供的適用于WLAN的以太網(wǎng)MAC子層控制器中接收緩存單元結(jié)構(gòu) 的示意圖;圖7是本發(fā)明提供的適用于WLAN的以太網(wǎng)MAC子層控制器中FPGA實(shí)現(xiàn)平臺(tái)結(jié)構(gòu) 的示意圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照 附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。本發(fā)明提出了一種基于雙口 RAM的讀地址可以載入的異步FIFO并且將其應(yīng)用到 緩存結(jié)構(gòu)中,并基于此緩存結(jié)構(gòu)提出了一種簡(jiǎn)單、穩(wěn)定的快速以太網(wǎng)MAC子層控制器架構(gòu), 其主要特征為(1)支持10M/100M bps數(shù)據(jù)傳輸速率( 支持半雙工、全雙工傳輸模式,支 持半雙工下的CSMA/⑶及全雙工下的流量控制功能;(3)支持MIIM接口,可以對(duì)PHY芯片 進(jìn)行管理操作(4)最多支持32個(gè)發(fā)送緩沖描述符和85個(gè)接收緩沖描述符。本發(fā)明提供的這種適用于WLAN的以太網(wǎng)MAC子層控制器,采用讀地址可載入的異 步FIFO作為數(shù)據(jù)幀的緩存單元,實(shí)現(xiàn)數(shù)據(jù)幀的存儲(chǔ),重傳和丟棄。主機(jī)與MAC子層控制器 之間的數(shù)據(jù)幀信息的交互通過(guò)數(shù)據(jù)幀緩存描述符來(lái)進(jìn)行,數(shù)據(jù)幀緩存描述符分為發(fā)送緩存 描述符和接收緩存描述符。發(fā)送緩存描述符用來(lái)控制數(shù)據(jù)幀的發(fā)送過(guò)程并記錄和返回發(fā)送 狀態(tài);接收緩存描述符用來(lái)控制讀取接收到的數(shù)據(jù)幀并向主機(jī)返回幀接收狀態(tài)。本發(fā)明的主要貢獻(xiàn)是提出了一種快速以太網(wǎng)MAC控制器的系統(tǒng)架構(gòu),提出了一 種讀地址可載入的異步FIFO結(jié)構(gòu)以及幀數(shù)據(jù)緩存結(jié)構(gòu)并應(yīng)用于MAC控制器的實(shí)現(xiàn)架構(gòu)中, 很好的解決了傳統(tǒng)的MAC控制器幀緩存結(jié)構(gòu)在接收短幀時(shí)緩存利用率低的問(wèn)題,并方便了 幀重傳及幀丟棄功能的實(shí)現(xiàn)。本發(fā)明可直接應(yīng)用于WLAN無(wú)線傳輸系統(tǒng)。請(qǐng)參閱圖1,該圖描述了快速以太網(wǎng)MAC控制器的系統(tǒng)架構(gòu),整個(gè)系統(tǒng)分為發(fā)送模 塊、接收模塊、狀態(tài)模塊、控制模塊、MII管理模塊、發(fā)送/接收緩存和寄存器模塊。圖2給出了數(shù)據(jù)幀的發(fā)送模塊的結(jié)構(gòu)框圖。發(fā)送數(shù)據(jù)通路子模塊為發(fā)送模塊的數(shù) 據(jù)通路,負(fù)責(zé)為一幀數(shù)據(jù)添加前導(dǎo)碼,填充字段以及CRC校驗(yàn)字段,并以半位元的格式輸出 一幀數(shù)據(jù)。發(fā)送CRC子模塊用于計(jì)算一幀數(shù)據(jù)的CRC校驗(yàn)碼序列,它在一幀數(shù)據(jù)結(jié)束后產(chǎn) 生32位的有效的幀校驗(yàn)序列,并通過(guò)發(fā)送數(shù)據(jù)通路子模塊發(fā)送至MII接口。隨機(jī)數(shù)子模塊用來(lái)產(chǎn)生符合二進(jìn)制指數(shù)隨機(jī)退避時(shí)間長(zhǎng)度的隨機(jī)數(shù)。發(fā)送狀態(tài)機(jī)子模塊是發(fā)送模塊的狀 態(tài)機(jī),它是發(fā)送模塊中最重要的部分,按照802. 3協(xié)議的要求完成發(fā)送一幀數(shù)據(jù)時(shí)的狀態(tài) 轉(zhuǎn)換。該模塊內(nèi)部還包含了若干個(gè)計(jì)數(shù)器,包括記錄發(fā)送數(shù)據(jù)的字節(jié)數(shù),重發(fā)次數(shù)的計(jì)數(shù), IPG時(shí)間的計(jì)數(shù),延遲時(shí)間計(jì)數(shù)等。它與發(fā)送狀態(tài)機(jī)模塊一起實(shí)現(xiàn)復(fù)雜的發(fā)送控制,包括對(duì) 數(shù)據(jù)通路的控制,控制發(fā)送CRC子模塊的初始化及使能,以及根據(jù)在發(fā)送過(guò)程中產(chǎn)生的各 種狀況產(chǎn)生狀態(tài)信號(hào)至狀態(tài)模塊和發(fā)送緩存模塊。圖3給出了數(shù)據(jù)幀的接收模塊的結(jié)構(gòu)框圖。該模塊的主要任務(wù)是完成數(shù)據(jù)幀的接 收和錯(cuò)誤校驗(yàn)。接收模塊從MII接口接收數(shù)據(jù),識(shí)別前導(dǎo)碼、目的地址,決定是否將此幀數(shù) 據(jù)交給接收緩存,并對(duì)幀數(shù)據(jù)進(jìn)行CRC校驗(yàn)。同時(shí),接收模塊會(huì)響應(yīng)在接收過(guò)程中發(fā)生的各 種情況并在接收結(jié)束后產(chǎn)生此幀數(shù)據(jù)的接收狀態(tài)信號(hào)^status。接收模塊包含接收計(jì)數(shù) 器子模塊,地址檢測(cè)子模塊,接收CRC子模塊,接收數(shù)據(jù)通路和接收狀態(tài)機(jī)子模塊。其中,接 收計(jì)數(shù)器子模塊中包含若干計(jì)數(shù)器,用來(lái)對(duì)接收到的字節(jié)數(shù),接收到的半字節(jié)數(shù)及幀間間 隔進(jìn)行計(jì)數(shù)。因?yàn)榘凑?02. 3協(xié)議,有些計(jì)數(shù)功能是不可能同時(shí)開(kāi)啟的,因此在設(shè)計(jì)中將一 個(gè)計(jì)數(shù)器分時(shí)復(fù)用,滿(mǎn)足多個(gè)計(jì)數(shù)功能的需要,從而節(jié)省了資源。接收CRC子模塊用來(lái)實(shí)現(xiàn) 對(duì)一幀數(shù)據(jù)的CRC校驗(yàn)。接收狀態(tài)機(jī)子模塊用來(lái)控制幀接收過(guò)程中的狀態(tài)轉(zhuǎn)移。圖4給出了適用于該MAC控制器數(shù)據(jù)幀緩存單元的讀地址可載入的異步FIFO的 設(shè)計(jì)框圖。其特征在于(1)使用握手方式實(shí)現(xiàn)讀寫(xiě)指針安全的異步時(shí)鐘域之間的傳遞。(2)三種工作模式的選擇可選擇工作在普通FIFO模式、讀地址可載入/幀保護(hù) 模式及讀地址可載入/非幀保護(hù)模式。其中,讀地址可載入/幀保護(hù)模式的特征為在下一 次讀地址載入前,正在讀取的一幀數(shù)據(jù)不會(huì)被覆蓋掉;讀地址可載入/非幀保護(hù)模式的特 征為讀地址可載入,當(dāng)前正在讀取的幀中,已經(jīng)讀取過(guò)的數(shù)據(jù)可以被覆蓋掉。(3)可以在讀寫(xiě)端指示剩余緩存容量。該異步FIFO采用握手機(jī)制來(lái)實(shí)現(xiàn)讀/寫(xiě)指針的同步。以將讀指針同步到寫(xiě)時(shí)鐘 域?yàn)槔?,首先讀時(shí)鐘域更新讀指針寄存器r_wptr,然后向?qū)憰r(shí)鐘域發(fā)送一個(gè)請(qǐng)求讀取讀指 針寄存器的的信號(hào)w_req,w_req同步到寫(xiě)時(shí)鐘域后變?yōu)閣_req_SynC,寫(xiě)時(shí)鐘域檢測(cè)到 req_sync的上升沿會(huì)讀取讀指針寄存器,同時(shí)向讀時(shí)鐘域發(fā)送一個(gè)回應(yīng)信號(hào)w_ack,w_ack 同步到讀時(shí)鐘域后產(chǎn)生信號(hào)w_aCk_SynC,讀時(shí)鐘域檢測(cè)到w_aCk_SynC的上升沿并更新讀 指針計(jì)數(shù)器,同時(shí)復(fù)位w_req信號(hào)。寫(xiě)時(shí)鐘域檢測(cè)到w_req_SynC的下降沿后,復(fù)位w_ack。 讀時(shí)鐘域檢測(cè)到w_aCk_SynC的下降沿后,開(kāi)始新一次的讀取讀指針寄存器的請(qǐng)求。通過(guò)這 樣的握手方式,可以保證讀指針寄存器在寫(xiě)時(shí)鐘域?qū)ζ溥M(jìn)行讀取時(shí)穩(wěn)定不變,從而避免指 針傳遞錯(cuò)誤的發(fā)生。與傳統(tǒng)的MAC控制器中的緩沖器的架構(gòu)相比,針對(duì)以太網(wǎng)MAC控制器中發(fā)送緩存 和接收緩存的需要,該異步FIFO中增加了讀指針載入的功能,該功能可以方便的實(shí)現(xiàn)幀重 傳以及壞幀丟棄的功能。讀指針載入功能的原理為當(dāng)?shù)刂份d入信號(hào)有效時(shí),F(xiàn)IFO先將要 載入的讀指針寄存,然后等待允許改變讀指針寄存器rg_rptr的信號(hào)r_ack_sync的上升 沿,并將寄存的讀指針寫(xiě)入到rg_rptr中,并且從該地址開(kāi)始讀指針遞增從FIFO內(nèi)部的RAM 里讀數(shù)據(jù)。此時(shí),對(duì)于MAC接收數(shù)據(jù)幀時(shí)的需要,讀指針可以同步到寫(xiě)時(shí)鐘域進(jìn)行比較,已 經(jīng)讀完的該幀數(shù)據(jù)也可以被寫(xiě)時(shí)鐘覆蓋掉,這時(shí)FIFO工作在讀地址可載入/非幀保護(hù)模式;而當(dāng)MAC在發(fā)送一幀數(shù)據(jù)時(shí),因?yàn)橛锌赡苄枰貍髟搸?,因此該幀已?jīng)發(fā)送的數(shù)據(jù)也不 能被覆蓋掉,為了滿(mǎn)足這一要求,在發(fā)送FIFO的設(shè)計(jì)中,讀指針寄存器只在讀指針載入(即 一幀數(shù)據(jù)的首地址)的時(shí)候發(fā)生改變并向?qū)憰r(shí)鐘域傳遞,在讀取一幀數(shù)據(jù)的過(guò)程中,雖然 讀指針遞增,但是維持讀指針寄存器為該幀存放的首地址,這樣就可以保證該幀數(shù)據(jù)在發(fā) 送期間不會(huì)被覆蓋,直到該幀數(shù)據(jù)發(fā)送完成,下一幀數(shù)據(jù)的首地址載入,在這種情況下FIFO 工作在讀地址載入/幀保護(hù)模式。以下結(jié)合具體符合IEEE 802. 3x協(xié)議規(guī)范的MAC控制器進(jìn)行幀數(shù)據(jù)發(fā)送和接收過(guò) 程的具體實(shí)例,并參照附圖,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。圖5為發(fā)送緩存單元的設(shè)計(jì)結(jié)構(gòu)。發(fā)送緩存單元負(fù)責(zé)緩存主機(jī)要發(fā)送的數(shù)據(jù)幀, 并按照數(shù)據(jù)幀在發(fā)送FIFO中的隊(duì)列順序?qū)?shù)據(jù)幀交由發(fā)送模塊進(jìn)行一幀數(shù)據(jù)的發(fā)送,發(fā) 送緩存還要實(shí)現(xiàn)在沖突發(fā)生時(shí)幀重傳以及將一幀數(shù)據(jù)發(fā)送的狀態(tài)信息回寫(xiě)到發(fā)送緩存描 述符模塊中以便主機(jī)讀取的功能。發(fā)送緩存模塊的結(jié)構(gòu)如圖六所示其中,發(fā)送FIFO為讀 地址可載入的異步FIFO,用作發(fā)送幀的緩存,在發(fā)送緩存單元中該FIFO工作在讀地址可 載入/幀保護(hù)模式。發(fā)送緩存控制模塊負(fù)責(zé)從發(fā)送緩存描述符子模塊讀取發(fā)送描述符,回 寫(xiě)發(fā)送狀態(tài),以及對(duì)發(fā)送數(shù)據(jù)流的控制。發(fā)送緩存描述符子模塊負(fù)責(zé)發(fā)送緩存描述符的管 理。發(fā)送緩存描述符子模塊使用32bitX64的單口 RAM用作發(fā)送描述符的緩存,內(nèi)部設(shè)計(jì) 了將發(fā)送時(shí)鐘同步到主機(jī)時(shí)鐘的邏輯。每個(gè)發(fā)送描述符使用64比特存儲(chǔ),包括首地址指針 (IObit),幀數(shù)據(jù)長(zhǎng)度(16bit),幀的發(fā)送狀態(tài)(16bit),發(fā)送緩存描述符狀態(tài)(Sbit)以及保 留字段五個(gè)字段。所設(shè)計(jì)的MAC最多可以存儲(chǔ)32個(gè)發(fā)送描述符。本實(shí)例過(guò)程發(fā)送一個(gè)發(fā)生一次沖突的數(shù)據(jù)幀,發(fā)送緩存模塊的工作過(guò)程如下步驟一首先,主機(jī)通過(guò)tXbd_num_aval信號(hào)得知有多少個(gè)可用的空閑發(fā)送緩存 描述符。若有空閑的發(fā)送緩存描述符,主機(jī)接口模塊保存當(dāng)前的發(fā)送FIFO的寫(xiě)指針wptr。步驟二 主機(jī)通過(guò)主機(jī)接口中的DMA將一幀數(shù)據(jù)寫(xiě)入到發(fā)送FIFO中。步驟三主機(jī)通過(guò)接口將此幀數(shù)據(jù)的起始FIFO寫(xiě)指針,幀長(zhǎng)度信息,描述符狀態(tài) 信息寫(xiě)入發(fā)送緩存描述符子模塊,發(fā)送緩存描述符子模塊會(huì)按地址順序?qū)懭胍粋€(gè)空閑的發(fā) 送描述符緩沖中去。步驟四當(dāng)有發(fā)送緩存描述符寫(xiě)入后,發(fā)送緩存描述符子模塊的空標(biāo)志信號(hào) txbd_null無(wú)效。發(fā)送緩存控制模塊向發(fā)送緩存描述符子模塊申請(qǐng)讀取一個(gè)發(fā)送緩存描述 符,發(fā)送緩存描述符會(huì)按地址順序取一個(gè)有效的發(fā)送描述符給發(fā)送緩存控制模塊,發(fā)送緩 存控制獲取待發(fā)送幀的信息后,寄存該信息并向發(fā)送FIFO載入幀首指針,開(kāi)始讀取數(shù)據(jù)并 發(fā)送。步驟五在發(fā)送過(guò)程中發(fā)送模塊檢測(cè)到載波沖突并通知發(fā)送緩存單元,發(fā)送緩存 單元開(kāi)始執(zhí)行幀重傳。發(fā)送緩存控制模塊重新向發(fā)送FIFO載入該幀的首指針,重傳該幀。 該幀發(fā)送完畢后,向發(fā)送緩存描述符子模塊回寫(xiě)該幀的發(fā)送狀態(tài)信息及描述符狀態(tài)信息, 發(fā)送緩存描述符子模塊會(huì)寫(xiě)發(fā)送狀態(tài)到相應(yīng)描述符并向主機(jī)產(chǎn)生發(fā)送中斷,等待主機(jī)讀取處理。圖6為接收緩存單元的設(shè)計(jì)結(jié)構(gòu)。接收緩存模塊負(fù)責(zé)緩存幀數(shù)據(jù),并將接收狀態(tài) 寫(xiě)入到接收緩存描述符中,同時(shí),接收緩存還要負(fù)責(zé)產(chǎn)生流量控制請(qǐng)求及清除的信號(hào)。因?yàn)?在數(shù)據(jù)幀接收過(guò)程中,在MAC端只需要對(duì)接收緩存描述符進(jìn)行寫(xiě)操作,而在主機(jī)端只需對(duì)接收緩存進(jìn)行讀操作,所以用一個(gè)32位的異步FIFO來(lái)緩存接收緩存描述符。每個(gè)接收緩 存描述符占用64bit,每個(gè)接收緩存描述符在FIFO中占用三個(gè)存儲(chǔ)單元,第一個(gè)存儲(chǔ)單元 寫(xiě)全‘1’,作為接收描述符的起始標(biāo)志字,接下來(lái)的兩個(gè)存儲(chǔ)單元依次存儲(chǔ)一個(gè)64位的接 收緩沖描述符。接收緩存描述符的格式為接收幀的首指針(12bit),數(shù)據(jù)幀長(zhǎng)度(16bit), 接收狀態(tài)(16bit)和保留字段。所設(shè)計(jì)的MAC控制器使用深度4K的32位寬的FIFO作為 幀數(shù)據(jù)緩存,緩存容量為16KB ;使用深度為256的32位寬FIFO作為接收緩存描述符的緩 存,最多可容納85個(gè)接收緩存描述符。本實(shí)例過(guò)程接收一個(gè)CRC校驗(yàn)錯(cuò)誤的數(shù)據(jù)幀,接收緩存模塊及主機(jī)端的工作過(guò)程 如下步驟一接收緩存控制模塊在接收一幀數(shù)據(jù)之前,先保存當(dāng)前接收數(shù)據(jù)FIFO的寫(xiě) 指針,然后開(kāi)始接收幀數(shù)據(jù)。步驟二 該幀接收完畢后,首先向接收緩存描述符FIFO中寫(xiě)一個(gè)全‘1’的32位 字,然后將該幀在數(shù)據(jù)FIFO中的首指針、幀長(zhǎng)度和幀接收狀態(tài)寫(xiě)入到接收緩存描述符模塊 的FIFO中,并產(chǎn)生接收中斷,等待主機(jī)處理。步驟三主機(jī)響應(yīng)中斷,讀取接收緩存描述符,主機(jī)根據(jù)接收緩存描述符模塊中的 CRC校驗(yàn)狀態(tài)字段發(fā)現(xiàn)該幀的CRC校驗(yàn)錯(cuò)誤,主機(jī)直接丟棄該描述符,在讀取下一個(gè)接收描 述符后,直接向接收數(shù)據(jù)FIFO載入新描述符的首指針,則可以直接越過(guò)接收數(shù)據(jù)FIFO中的 壞幀,而無(wú)需將壞幀讀出。圖7給出了該MAC控制器實(shí)現(xiàn)的FPGA驗(yàn)證平臺(tái),該驗(yàn)證平臺(tái)基于ALTERA STRATIX II EP2S60 FPGA,采用專(zhuān)用的外圍802. 3PHY芯片。驗(yàn)證平臺(tái)用兩塊FPGA開(kāi)發(fā)板和兩臺(tái)PC 搭建,構(gòu)成PCl和PC2之間數(shù)據(jù)收發(fā)的雙向通路。在PC端運(yùn)行commview發(fā)包/抓包軟件, 通過(guò)網(wǎng)口將數(shù)據(jù)幀發(fā)送至FPGA開(kāi)發(fā)板1的RJ45接口,數(shù)據(jù)幀經(jīng)過(guò)802. 3PHY.MAC后存儲(chǔ)到 MAC的接收緩存中。轉(zhuǎn)發(fā)邏輯模擬主機(jī)的行為,將收到的數(shù)據(jù)幀通過(guò)兩塊開(kāi)發(fā)板中間的排 線發(fā)送到開(kāi)發(fā)板2并寫(xiě)入FPGA開(kāi)發(fā)板2的MAC發(fā)送緩存中,F(xiàn)PGA開(kāi)發(fā)板2然后將數(shù)據(jù)幀 轉(zhuǎn)發(fā)至PC2,通過(guò)PCl發(fā)送數(shù)據(jù)和PC2接收數(shù)據(jù)幀的比較,以及通過(guò)ALTERA FPGA內(nèi)嵌的邏 輯分析儀signal tap觀測(cè)實(shí)際的數(shù)據(jù)波形,可以驗(yàn)證以太網(wǎng)MAC控制器功能的正確性。兩 塊FPGA開(kāi)發(fā)板共用一個(gè)晶振,使用同軸連接SMA 口完成晶振產(chǎn)生的時(shí)鐘信號(hào)的板間傳送, 在驗(yàn)證中使用的系統(tǒng)主時(shí)鐘為33MHZ,兩開(kāi)發(fā)板之間用四位數(shù)據(jù)線進(jìn)行數(shù)據(jù)的轉(zhuǎn)發(fā)。在該測(cè) 試平臺(tái)上對(duì)MAC進(jìn)行的測(cè)試包括10M/100M,全雙工/半雙工模式下基本數(shù)據(jù)傳輸測(cè)試;單 播幀,廣播幀和組播幀的接收測(cè)試;全雙工模式下的流量控制測(cè)試等。在完成MAC基本功能 的驗(yàn)證之后,利用此驗(yàn)證平臺(tái)進(jìn)行大文件傳輸,以驗(yàn)證所設(shè)計(jì)的MAC的數(shù)據(jù)通路的健壯性。 方法為,在PC2運(yùn)行FTP服務(wù)器端軟件,在PCl端運(yùn)行FTP客戶(hù)端軟件flashFXP,用FTP工 具在PCl和PC2之間傳送文件。以上所述的具體實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳 細(xì)說(shuō)明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡 在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保 護(hù)范圍之內(nèi)。文獻(xiàn)索引[1] IEEE Std 802. 3,2000 Edition, Part 3 =Carrier sense multipleaccess with collision detection (CSMA/CD)accessmethod and physical layer apecifications[S].[2]謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)(第三版).大連大連理工大學(xué)出版社;2002[3]RTL8019AS DATASHEET, REALTEK Corporation,2000
權(quán)利要求
1.一種適用于WLAN的以太網(wǎng)MAC子層控制器,其特征在于,該控制器包括發(fā)送模塊、 接收模塊、狀態(tài)模塊、控制模塊、MII管理模塊、發(fā)送緩存、接收緩存和寄存器模塊;其中,發(fā) 送緩存和接收緩存采用讀地址可載入的異步FIFO,實(shí)現(xiàn)數(shù)據(jù)幀的存儲(chǔ)、重傳和丟棄;主機(jī) 與MAC子層控制器之間的數(shù)據(jù)幀信息的交互通過(guò)數(shù)據(jù)幀緩存描述符來(lái)進(jìn)行,數(shù)據(jù)幀緩存描 述符分為發(fā)送緩存描述符和接收緩存描述符,發(fā)送緩存描述符用來(lái)控制數(shù)據(jù)幀的發(fā)送過(guò)程 并記錄和返回發(fā)送狀態(tài);接收緩存描述符用來(lái)控制讀取接收到的數(shù)據(jù)幀并向主機(jī)返回幀接 收狀態(tài)。
2.根據(jù)權(quán)利要求1所述的適用于WLAN的以太網(wǎng)MAC子層控制器,其特征在于,所述發(fā) 送模塊包括發(fā)送數(shù)據(jù)通路子模塊、發(fā)送CRC子模塊、隨機(jī)數(shù)子模塊和發(fā)送狀態(tài)機(jī)子模塊,其 中發(fā)送數(shù)據(jù)通路子模塊,為發(fā)送模塊的數(shù)據(jù)通路,用于為一幀數(shù)據(jù)添加前導(dǎo)碼,填充字段 以及CRC校驗(yàn)字段,并以半位元的格式輸出一幀數(shù)據(jù);發(fā)送CRC子模塊,用于計(jì)算一幀數(shù)據(jù)的CRC校驗(yàn)碼序列,它在一幀數(shù)據(jù)結(jié)束后產(chǎn)生32 位的有效的幀校驗(yàn)序列,并通過(guò)數(shù)據(jù)通路子模塊發(fā)送至MII接口 ;隨機(jī)數(shù)子模塊,用來(lái)產(chǎn)生符合二進(jìn)制指數(shù)隨機(jī)退避時(shí)間長(zhǎng)度的隨機(jī)數(shù);發(fā)送狀態(tài)機(jī)子模塊,是發(fā)送模塊的狀態(tài)機(jī),按照IEEE 802. 3協(xié)議的要求完成發(fā)送一幀 數(shù)據(jù)時(shí)的狀態(tài)轉(zhuǎn)換;模塊內(nèi)部還包含若干個(gè)計(jì)數(shù)器,包括記錄發(fā)送數(shù)據(jù)的字節(jié)數(shù)、重發(fā)次數(shù) 的計(jì)數(shù)、IPG時(shí)間的計(jì)數(shù)和延遲時(shí)間計(jì)數(shù),它與發(fā)送狀態(tài)機(jī)子模塊一起實(shí)現(xiàn)復(fù)雜的發(fā)送控 制,包括對(duì)數(shù)據(jù)通路的控制、控制發(fā)送CRC子模塊的初始化及使能,以及根據(jù)在發(fā)送過(guò)程中 產(chǎn)生的各種狀況產(chǎn)生狀態(tài)信號(hào)至狀態(tài)模塊、發(fā)送緩存和接收緩存。
3.根據(jù)權(quán)利要求1所述的適用于WLAN的以太網(wǎng)MAC子層控制器,其特征在于,所述 接收模塊用于完成數(shù)據(jù)幀的接收和錯(cuò)誤校驗(yàn),接收模塊從MII接口接收數(shù)據(jù),識(shí)別前導(dǎo)碼、 目的地址,決定是否將此幀數(shù)據(jù)交給接收緩存,并對(duì)幀數(shù)據(jù)進(jìn)行CRC校驗(yàn);同時(shí),接收模塊 會(huì)響應(yīng)在接收過(guò)程中發(fā)生的各種情況并在接收結(jié)束后產(chǎn)生此幀數(shù)據(jù)的接收狀態(tài)信號(hào)rx_ status ;接收模塊包含接收計(jì)數(shù)器子模塊、地址檢測(cè)子模塊、接收CRC子模塊、接收數(shù)據(jù)通 路子模塊和接收狀態(tài)機(jī)子模塊。
4.根據(jù)權(quán)利要求3所述的適用于WLAN的以太網(wǎng)MAC子層控制器,其特征在于,所述接 收計(jì)數(shù)器子模塊中包含若干計(jì)數(shù)器,用來(lái)對(duì)接收到的字節(jié)數(shù)、接收到的半字節(jié)數(shù)及幀間間 隔進(jìn)行計(jì)數(shù);接收CRC子模塊用來(lái)實(shí)現(xiàn)對(duì)一幀數(shù)據(jù)的CRC校驗(yàn);接收狀態(tài)機(jī)子模塊用來(lái)控 制幀接收過(guò)程中的狀態(tài)轉(zhuǎn)移。
5.根據(jù)權(quán)利要求1所述的適用于WLAN的以太網(wǎng)MAC子層控制器,其特征在于,所述發(fā) 送緩存和接收緩存所采用的讀地址可載入的異步FIFO,使用握手方式實(shí)現(xiàn)讀寫(xiě)指針安全的 異步時(shí)鐘域之間的傳輸,通過(guò)握手方式傳遞讀寫(xiě)指針,使得讀寫(xiě)指針可以跳躍變化。
6.根據(jù)權(quán)利要求5所述的適用于WLAN的以太網(wǎng)MAC子層控制器,其特征在于,所述異 步FIFO工作在三種工作模式普通FIFO模式、讀地址可載入/幀保護(hù)模式和讀地址可載入 /非幀保護(hù)模式;其中,讀地址可載入/幀保護(hù)模式的特征為在下一次讀地址載入前,正在 讀取的一幀數(shù)據(jù)不會(huì)被覆蓋掉;讀地址可載入/非幀保護(hù)模式的特征為讀地址可載入,當(dāng) 前正在讀取的幀中,已經(jīng)讀取過(guò)的數(shù)據(jù)可以被覆蓋掉。
7.根據(jù)權(quán)利要求5所述的適用于WLAN的以太網(wǎng)MAC子層控制器,其特征在于,所述異步FIFO使用握手方式實(shí)現(xiàn)讀寫(xiě)指針安全的異步時(shí)鐘域之間的傳輸,在將讀指針同步到寫(xiě) 時(shí)鐘域時(shí),具體包括步驟1 首先讀時(shí)鐘域更新讀指針寄存器r_wptr,然后向?qū)憰r(shí)鐘域發(fā)送一個(gè)請(qǐng)求讀取 讀指針寄存器的的信號(hào)w_req,w_req同步到寫(xiě)時(shí)鐘域后變?yōu)閣_req_SynC ;步驟2 寫(xiě)時(shí)鐘域檢測(cè)到W_req_SynC的上升沿會(huì)讀取讀指針寄存器,同時(shí)向讀時(shí)鐘域 發(fā)送一個(gè)回應(yīng)信號(hào)w_ack,w_ack同步到讀時(shí)鐘域后產(chǎn)生信號(hào)w_aCk_SynC ;步驟3 讀時(shí)鐘域檢測(cè)到w_aCk_SynC的上升沿并更新讀指針計(jì)數(shù)器,同時(shí)復(fù)位w_req 信號(hào);步驟4 寫(xiě)時(shí)鐘域檢測(cè)到W_req_SynC的下降沿后,復(fù)位w_ack ;步驟5 讀時(shí)鐘域檢測(cè)到w_aCk_SynC的下降沿后,開(kāi)始新一次的讀取讀指針寄存器的 請(qǐng)求。
8.根據(jù)權(quán)利要求1所述的適用于WLAN的以太網(wǎng)MAC子層控制器,其特征在于,所述發(fā) 送緩存包含發(fā)送FIFO、發(fā)送緩存控制子模塊以及發(fā)送緩存描述符子模塊,發(fā)送緩存描述符 子模塊中的發(fā)送緩存描述符至少包含以下幾個(gè)字段首地址指針、幀數(shù)據(jù)長(zhǎng)度、幀的發(fā)送狀 態(tài)和發(fā)送緩存描述符狀態(tài);所述基于讀地址可載入的異步FIFO和發(fā)送緩存描述符的MAC控制器幀數(shù)據(jù)發(fā)送過(guò)程 包括如下步驟步驟10 主機(jī)通過(guò)發(fā)送緩存描述符子模塊獲得可用的空閑發(fā)送緩存描述符,主機(jī)接口 保存當(dāng)前的發(fā)送FIFO的寫(xiě)指針wptr ;步驟20 主機(jī)通過(guò)主機(jī)接口中的DMA將一幀數(shù)據(jù)寫(xiě)入到發(fā)送FIFO中;步驟30 主機(jī)通過(guò)主機(jī)接口將此幀數(shù)據(jù)的起始FIFO寫(xiě)指針,幀長(zhǎng)度信息,描述符狀態(tài) 信息寫(xiě)入發(fā)送緩存描述符子模塊,發(fā)送緩存描述符子模塊將這些信息組成一個(gè)發(fā)送緩存描 述符,寫(xiě)入一個(gè)空閑的發(fā)送緩存描述符緩存中;步驟40 發(fā)送緩存控制子模塊從發(fā)送緩存描述符子模塊中讀取一個(gè)發(fā)送緩存描述符, 寄存該描述符并向發(fā)送FIFO載入幀數(shù)據(jù)在發(fā)送FIFO中存儲(chǔ)的首指針,開(kāi)始讀取數(shù)據(jù)并發(fā) 送;步驟50 如果發(fā)送過(guò)程中發(fā)生沖突需要重傳,則發(fā)送緩存控制子模塊重新向發(fā)送FIFO 載入該幀的首指針,重傳該幀;如果該幀發(fā)送完畢或失敗,則向發(fā)送緩存描述符子模塊回寫(xiě) 該幀的發(fā)送狀態(tài)信息及描述符狀態(tài)信息,發(fā)送緩存描述符子模塊回寫(xiě)發(fā)送狀態(tài)到相應(yīng)描述 符并向主機(jī)產(chǎn)生發(fā)送中斷,等待主機(jī)讀取處理。
9.根據(jù)權(quán)利要求1所述的適用于WLAN的以太網(wǎng)MAC子層控制器,其特征在于,所述接 收緩存包含接收FIFO、接收緩存描述符子模塊以及接收緩存控制子模塊,接收緩存描述符 子模塊中的接收緩存描述符至少包含以下幾個(gè)字段接收幀的首指針、幀數(shù)據(jù)長(zhǎng)度和幀的 接收狀態(tài);接收緩存描述符控制單元由一個(gè)異步FIFO實(shí)現(xiàn),使用三個(gè)FIFO存儲(chǔ)單元存儲(chǔ)一 個(gè)接收緩存描述符,第一個(gè)單元為全‘1’,標(biāo)志一個(gè)接收緩沖描述符的邊界;后兩個(gè)存儲(chǔ)單 元用來(lái)存儲(chǔ)接收緩存描述符的有效內(nèi)容。
10.根據(jù)權(quán)利要求9所述的適用于WLAN的以太網(wǎng)MAC子層控制器,其特征在于,所述基 于讀地址可載入的異步FIFO和接收緩存描述符的MAC控制器幀數(shù)據(jù)接收緩存過(guò)程包括如 下步驟步驟100 接收緩存控制子模塊在接收一幀數(shù)據(jù)之前,先保存當(dāng)前接收FIFO的寫(xiě)指針, 然后開(kāi)始接收幀數(shù)據(jù);步驟200 該幀接收完畢后,將該幀在數(shù)據(jù)FIFO中的首指針、幀長(zhǎng)度和幀接收狀態(tài)寫(xiě)入 到接收緩存描述符子模塊中,并產(chǎn)生接收中斷,等待主機(jī)處理;步驟300 主機(jī)響應(yīng)中斷,讀取接收緩存描述符,并根據(jù)其中的信息從接收FIFO中讀取 該幀;如果主機(jī)讀取緩存描述符后發(fā)現(xiàn)該幀數(shù)據(jù)已損壞,則主機(jī)可以直接丟棄該描述符,在 讀取下一個(gè)接收緩存描述符后,直接向接收FIFO載入新描述符的首指針,則可以直接越過(guò) 接收FIFO中的壞幀,而無(wú)需將壞幀讀出。
全文摘要
本發(fā)明公開(kāi)了一種適用于WLAN的以太網(wǎng)MAC子層控制器,包括發(fā)送模塊、接收模塊、狀態(tài)模塊、控制模塊、MII管理模塊、發(fā)送緩存、接收緩存和寄存器模塊;其中,發(fā)送緩存和接收緩存采用讀地址可載入的異步FIFO,實(shí)現(xiàn)數(shù)據(jù)幀的存儲(chǔ),重傳和丟棄;主機(jī)與MAC子層控制器之間的數(shù)據(jù)幀信息的交互通過(guò)數(shù)據(jù)幀緩存描述符來(lái)進(jìn)行,數(shù)據(jù)幀緩存描述符分為發(fā)送緩存描述符和接收緩存描述符,發(fā)送緩存描述符用來(lái)控制數(shù)據(jù)幀的發(fā)送過(guò)程并記錄和返回發(fā)送狀態(tài);接收緩存描述符用來(lái)控制讀取接收到的數(shù)據(jù)幀并向主機(jī)返回幀接收狀態(tài)。利用本發(fā)明實(shí)現(xiàn)了嵌入式設(shè)備的網(wǎng)絡(luò)接入,實(shí)現(xiàn)了幀沖突重傳和壞幀丟棄的功能,并且提高了接收短幀情況下片內(nèi)緩存的利用效率。
文檔編號(hào)H04W80/00GK102065569SQ20091023777
公開(kāi)日2011年5月18日 申請(qǐng)日期2009年11月17日 優(yōu)先權(quán)日2009年11月17日
發(fā)明者吳斌, 周玉梅, 尉志偉, 馬洪亮 申請(qǐng)人:中國(guó)科學(xué)院微電子研究所