亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于數(shù)據(jù)描述符的mac軟硬件交互方法及其硬件實現(xiàn)裝置的制作方法

文檔序號:7720103閱讀:228來源:國知局
專利名稱:基于數(shù)據(jù)描述符的mac軟硬件交互方法及其硬件實現(xiàn)裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及無線局域網(wǎng)(Wireless Local Area Network, WLAN)網(wǎng)絡(luò)通信領(lǐng)域中 媒體訪問層(Medium Access Control, MAC)的設(shè)計及實現(xiàn)技術(shù)領(lǐng)域,尤其涉及一種采用軟 硬件協(xié)同工作,并利用數(shù)據(jù)描述符機制進行軟硬件任務(wù)指令控制與數(shù)據(jù)傳輸?shù)腗AC軟硬件 交互方法及其硬件實現(xiàn)裝置。
背景技術(shù)
無線局域網(wǎng)(Wireless Local Area Network, WLAN)正以驚人的速度日益普及并 深入到日常生活和工作的各個領(lǐng)域。作為實現(xiàn)數(shù)據(jù)無線傳輸?shù)年P(guān)鍵功能模塊——媒體訪問 控制(Medium Access Control, MAC)協(xié)議——也涌現(xiàn)出大量的種類繁多的實現(xiàn)方式。與有線傳輸相比,IEEE 802. IlMAC協(xié)議有如下一些特點(1)包含一些時序約束 性任務(wù),其中包括接收數(shù)據(jù)后要在短幀間距后(Sire)作出響應(yīng)(ACK)、CRC的校驗、產(chǎn)生需 要與幀的收發(fā)同步等;(2)時間精度較高,例如MAC控制器中需要以Iys的精度維持本站 點的時間同步功能計數(shù)器(TSF)。采用純軟件實現(xiàn)的MAC控制器無法維持高精度的站點時 間同步功能或帶來較大功耗,同時軟件實現(xiàn)的整體性能較弱無法完成強時序約束性任務(wù)。 因此,將MAC協(xié)議中對時序要求和時間精度要求較高的部分功能模塊采用硬件實現(xiàn),其余 非時序約束性任務(wù)仍由軟件實現(xiàn),采用軟硬件協(xié)同工作的方式既實現(xiàn)了較高的系統(tǒng)性能又 保持了很好的靈活性。文獻[1] [2]對采用軟硬件協(xié)同工作的MAC控制器實現(xiàn)方式進行了分析和整體性 能對比,文獻[3] [4]分別給出了兩種較為成熟的MAC控制器實現(xiàn)方案。其中,文獻[3]提出 了一種采用片外共享存儲地址空間,主機與MAC硬件控制器采用中斷方式使用外部存儲空 間的指令和數(shù)據(jù)的方式,此種方式的弱點在于中斷方式響應(yīng)緩慢、效率較低,且其操作也比 較復(fù)雜,幀的收發(fā)控制均需等待較長的時間;文獻[4]是一個完整的片上系統(tǒng)芯片(SoC), 其MAC控制器硬件部分作為整個系統(tǒng)的功能模塊掛載于系統(tǒng)總線上,軟硬件通訊方式通過 片內(nèi)高速總線直接進行,雖然具有較高的效率,然而對于常規(guī)軟硬件協(xié)同開發(fā)和嵌入式系 統(tǒng)開發(fā)不具有普適性。針對軟硬件交互存在的實現(xiàn)方法和效率問題,本文提出了一種基于數(shù)據(jù)描述符的 MAC軟硬件交互方法和硬件實現(xiàn)裝置。本發(fā)明的主要貢獻是軟件部分采用規(guī)范化的數(shù)據(jù)描 述符數(shù)據(jù)格式,完成對幀發(fā)送和接收過程的控制,硬件部分以開放的發(fā)送/接收寄存器堆 的形式完成對發(fā)送、接收過程狀態(tài)信息的反饋,傳遞至上層軟件控制部分。具有簡單靈活和 操作高效的特點,適用于符合IEEE 802. 11協(xié)議軟硬件協(xié)同工作的MAC控制器。

發(fā)明內(nèi)容
(一)要解決的技術(shù)問題本發(fā)明主要目的在于提供一種基于數(shù)據(jù)描述符的MAC軟硬件交互方法及其硬件 實現(xiàn)裝置,該方法使得軟件部分能夠靈活高效地完成對硬件邏輯的數(shù)據(jù)收發(fā)控制操作并可以實時監(jiān)控硬件單元的收發(fā)狀態(tài)信息,以便及時響應(yīng)進一步的數(shù)據(jù)操作。解決了單一使用 中斷控制而造成的響應(yīng)緩慢、操作復(fù)雜等弊端。( 二 )技術(shù)方案為達到上述目的,本發(fā)明提供了一種基于數(shù)據(jù)描述符的MAC軟硬件交互方法,該 方法包括軟件部分將本次發(fā)送或待接收的幀數(shù)據(jù)信息及其控制信息組成發(fā)送或接收數(shù)據(jù) 描述符(Tx/Rx Descriptor),并發(fā)送給硬件部分完成對本次幀數(shù)據(jù)發(fā)送或接收的控制操 作;在硬件架構(gòu)設(shè)計中開放系統(tǒng)控制/狀態(tài)寄存器堆(SysJtrl/SysJtaRegister Banks)與發(fā)送/接收狀態(tài)寄存器堆(Tx/Rx Status Register Banks),以分別實現(xiàn)軟、硬件 之間的常規(guī)收發(fā)控制以及本次數(shù)據(jù)傳輸?shù)目刂萍盃顟B(tài)反饋;發(fā)送/接收描述符緩存控制器(TX/RX_DeSCBUfT)完成對描述符的解析,并對協(xié)議 控制單元(PCU)的數(shù)據(jù)收發(fā)操作進行控制。上述方案中,所述數(shù)據(jù)描述符包括發(fā)送描述符(Tx Descriptor)和接收描述符(Rx Descriptor),其中發(fā)送描述符至少包含有一個ID字段、一個Buff_Len字段、一個Buff_ Ptr字段、一個Frame_Len字段、一個FrameType字段、一個Link_Ptr字段和若干發(fā)送控制 字段;接收描述符至少包含一個ID字段、一個BufT_Len字段、一個BufT_Ptr字段和一個 Link_Ptr 字段。上述方案中,所述數(shù)據(jù)描述符以鏈表的形式儲存于外部地址空間,其ID字段表示 該描述符的唯一標識,Buf_Ptr和BUf_Len給出了待發(fā)送或接收數(shù)據(jù)的外部地址和長度, Link_Ptr字段為鏈接到下一個數(shù)據(jù)描述符的外部地址空間。描述符的其余數(shù)據(jù)域為與幀發(fā) 送相關(guān)的控制信息。上述方案中,所述幀數(shù)據(jù)發(fā)送(Tx)過程主要包括如下步驟步驟1、MAC控制器軟件部分將描述符在外部存儲器中的地址寫入硬件中某一發(fā) 送描述符緩存控制器(Tx_DeSCBUff)的描述符地址寄存器(Tx_DP),并同時向該發(fā)送描述 符緩存控制器的發(fā)送使能寄存器(Tx_En)置“1”;步驟2、該Tx_DeSCBuff按照Tx_DP中的描述符地址讀入該描述符;步驟3、Tx_DescBuff正常處理該描述符,并將數(shù)據(jù)傳輸任務(wù)分配給一個Tx_DMA, 后者根據(jù)描述符中的Buff_Ptr以及BUff_Len讀取指定的發(fā)送數(shù)據(jù);步驟4、TX_DeSCBUfT控制器根據(jù)該描述符的控制信息完成對協(xié)議控制單元(PCU) 數(shù)據(jù)傳輸操作的控制;步驟5、Tx_DeSCBUff檢測當(dāng)前描述符中More數(shù)據(jù)域是否為空,若為1,則根據(jù)當(dāng)前 描述符中Link_Ptr的值讀入下一個發(fā)送描述符,之后重復(fù)步驟2 ;若More數(shù)據(jù)域為空,則 說明一幀數(shù)據(jù)已經(jīng)完全處理完,則該Tx_DeSCBUff更新對應(yīng)的發(fā)送狀態(tài)寄存器(TxJtatus Register),將當(dāng)前描述符對應(yīng)數(shù)據(jù)幀的發(fā)送狀態(tài)寫入該狀態(tài)寄存器以便軟件部分讀??;步驟6,當(dāng)處理完該描述符后,如果當(dāng)前的Tx_DeSCBUff所處理的當(dāng)前描述符的 Link_Ptr數(shù)據(jù)域非空,則將將當(dāng)前描述符的Link_Ptr中的地址傳遞給下一個TX_DeSCBufT 的Tx_DP寄存器,之后下一個Tx_DeSCBuff重復(fù)步驟2 ;步驟7,如果當(dāng)前Tx_DeSCBuff所處理的描述符的Link_Ptr數(shù)據(jù)域為空,則說明當(dāng)前鏈表指針已經(jīng)處理完畢;系統(tǒng)下一次進行操作會重復(fù)步驟1。上述方案中,步驟1中所述MAC軟件部分將描述符寫入硬件Tx_DeSCBUff的過程, 具體包括步驟11、系統(tǒng)軟件部分根據(jù)待發(fā)送幀的具體要求,生成發(fā)送描述符并將其存儲于 以deSC_addr為首地址的外部存儲空間中;步驟12、軟件部分查詢Central Controller中包含的N個Tx_DescBuff的狀態(tài) 位,獲取某一空閑Tx_DeSCBuff的使用權(quán);步驟13、軟件部分向該空閑Tx_DescBuff的Tx_DP寄存器寫入desc_addr,并將其 Tx_En位置“ 1,,,允許其開始進行幀數(shù)據(jù)發(fā)送。上述方案中,步驟3中所述Tx_DeSCBUff處理數(shù)據(jù)描述符的過程,具體包括步驟31、I^x—DescBuff 向 Central Controller 申請!"x—DMA 的使用權(quán);步驟32、Central Controller通過輪詢得到某一空閑的Tx_DMA,并將其分配給 Tx_DescBuff 使用;步驟33、Tx_DescBuff將待發(fā)送數(shù)據(jù)的信息Buff_Ptr和Buff_Len信息傳遞給Tx_ DMA,后者發(fā)起數(shù)據(jù)傳輸申請,將外部存儲空間的數(shù)據(jù)讀入硬件內(nèi)部。上述方案中,步驟5和6中所述Tx_DeSCBUff完成幀數(shù)據(jù)發(fā)送后的處理過程,具體 包括步驟51、Tx_DescBuff在得到P⑶發(fā)送幀數(shù)據(jù)返回的結(jié)果后,檢查當(dāng)前描述符中 More字段是否置位,若為1,表示當(dāng)前幀包含多個分段,則該Tx_DesCBuff根據(jù)當(dāng)前描述符 的Link_Ptr字段發(fā)起數(shù)據(jù)傳輸,將下一個數(shù)據(jù)描述符讀入到當(dāng)前Tx_DP寄存器中,重復(fù)步 驟2的工作;步驟52、若當(dāng)前描述符More字段為0,表示當(dāng)前幀不包含下一分段,則該Tx_ DescBuff將已完成發(fā)送的相關(guān)狀態(tài)信息寫入對應(yīng)的TxJtatusRegister,以供軟件部分讀 ?。徊襟E53、Tx_DescBuff在完成TxJtatus_Register更新的同時,將檢查當(dāng)前描述 符Link_Ptr字段是否非空。若非空,則Tx_DescBuff向CentralController申請空閑的 Tx_DeSCBUff,若為空,則說明當(dāng)前描述符鏈表結(jié)束,系統(tǒng)下一次操作重復(fù)步驟1 ;步驟54,CentralController 在接到 Tx_DescBuff 的申請后,根據(jù)各Tx_DescBuff 的狀態(tài)信息,獲取某一空閑的Tx_DeSCBuff的使用權(quán)后分配給當(dāng)前申請的TX_DeSCBufT ;步驟55、當(dāng)前Tx_DeSCBuff獲得下一可用的Tx_DeSCBuff后,將當(dāng)前描述符的 Link_Ptr數(shù)據(jù)域?qū)懭氲较乱?TX_DeSCBufT的Tx_DP寄存器,并將其Tx_En置位,開始下一幀 數(shù)據(jù)段的傳輸。上述方案中,所述幀數(shù)據(jù)接收(Rx)過程主要包括如下步驟步驟10,MAC控制器的軟件部分將描述符在外部存儲空間的地址寫入硬件中某一 個接收描述符緩存控制器(Rx_DeSCBUff)的描述符地址寄存器(Rx_DP);步驟20,該Rx_DeSCBuff按照Rx_DP中的描述符地址讀入該描述符;步驟30,RX_DesCBuff等待Rx_DMA的描述符申請,當(dāng)后者發(fā)起描述符使用申請時, Rx_DescBuff將當(dāng)前描述符的Buff_Ptr和Buff_Len傳遞給Rx_DMA,并完成接收數(shù)據(jù)的傳 輸;
步驟40,當(dāng)Rx_DMA將接收到的數(shù)據(jù)完全傳輸?shù)街付ǖ腂uffer后,通知Rx_ DescBuff更新接收寄存器(Rxjtatus Register)并更新描述符完成信號;步驟50,當(dāng)處理當(dāng)前接收描述符后,若當(dāng)前描述符的Link_Ptr不為空則等待空閑 的Rx_DeSCBUff并向其Rx_DP中寫入描述符的外部地址,若為空表示此描述符鏈表處理完 畢。當(dāng)再次寫入描述符時,系統(tǒng)查詢接收描述符緩存控制器的狀態(tài)寄存器,向空閑的Rx_ DescBuff的Rx_DP中寫入下一個接收描述符的外部地址,即重復(fù)步驟10。上述方案中,步驟10中所述MAC軟件部分將描述符寫入硬件Rx_DeSCBuff的過 程,具體包括步驟101、系統(tǒng)軟件部分根據(jù)待接收幀的具體要求,生成接收描述符并將其存儲于 以deSC_addr為首地址的外部存儲空間中;步驟102、軟件部分查詢Central Controller中包含的M個Rx_DescBuff的狀態(tài) 位,獲取某一空閑Rx_DesCBuff的使用權(quán);步驟103、軟件部分向該空閑Rx_DescBuff的Rx_DP寄存器寫入desc_addr。上述方案中,步驟30中所述Rx_DeSCBUff處理接收描述符的過程,具體包括步驟301、Rx_DMA將接收到的幀數(shù)據(jù)讀入Rx_DMA緩存中,向Central Controller 發(fā)起申請,請求準備就緒的接收描述符;步驟302、Central Controller根據(jù)各Rx_DescBuff的狀態(tài)位,獲取某一已讀入接 收描述符的Rx_DesCBuff的使用權(quán),將發(fā)起申請的Rx_DMA與該RX_DesCBuff進行關(guān)聯(lián);步驟303、該Rx_DescBuff將當(dāng)前接收描述符的Buff_Ptr和Buff_Len字段傳遞給 與其關(guān)聯(lián)的Rx_DMA,指示其完成接收幀數(shù)據(jù)向外部存儲器的傳輸。上述方案中,步驟50中所述Rx_DeSCBuff完成接收描述符的處理過程,具體包 括步驟501、Rx_DesCBuff在向Rx_DMA傳遞數(shù)據(jù)參數(shù)后,檢查當(dāng)前接收描述符的 Link_Ptr是否非空,若非空,則向Central Controller申請下一個可用的Rx_DescBuff ;步驟502、Central Controller根據(jù)各Rx_DescBuff的狀態(tài)位,獲取某一空閑的 Rx_DescBuff的使用權(quán),將其分配給發(fā)起申請的Rx_DeSCBufT ;步驟503、當(dāng)前Rx_DeSCBuff將當(dāng)前接收描述符的Link_Ptr寫入申請得到的Rx_ DescBuff,之后重復(fù)步驟52 ;步驟504、若當(dāng)前描述符的Link_Ptr為空,則表示當(dāng)前描述符列表處理完畢;當(dāng)系 統(tǒng)再一次發(fā)起描述符寫入操作時,重復(fù)步驟51的操作。為達到上述目的,本發(fā)明還提供了一種基于數(shù)據(jù)描述符的MAC軟硬件交互的硬 件實現(xiàn)裝置,包含P個發(fā)送DMA(Tx_DMA)、1個接收DMA(Rx_DMA)、N個發(fā)送描述符緩存控 制器(Tx_DescBuff)及其對應(yīng)的N個發(fā)送狀態(tài)寄存器(Tx_Status Register Banks)、M 個接收描述符緩存控制器(RX_DeSCBuff)及其對應(yīng)的M個接收狀態(tài)寄存器(RxJ^tatus RegisterBanks) U個系統(tǒng)控制寄存器(Sys_Ctrl Register) U個系統(tǒng)狀態(tài)寄存器(Sys_ Sta Register)以及一個中央控制器(Central Controller),其中,P可根據(jù)發(fā)送數(shù)據(jù)流量 進行配置,N可根據(jù)發(fā)送數(shù)據(jù)流量進行配置,M可根據(jù)接收數(shù)據(jù)流量進行配置。上述方案中,所述發(fā)送描述符緩存控制器(Tx_DeSCBUff)包含一個Tx_DP地址寄 存器和一個Tx_En發(fā)送使能寄存器。
上述方案中,所述接收描述符緩存控制器(Rx_DeSCBuff)包含一個Rx_DP地址寄存器。(三)有益效果從上述技術(shù)方案可以看出,本發(fā)明具有以下有益效果1、本發(fā)明提供的這種基于數(shù)據(jù)描述符的MAC軟硬件交互方法及其硬件實現(xiàn)裝置, 具有結(jié)構(gòu)簡單、數(shù)據(jù)精簡、易于硬件解析實現(xiàn)的特點。2、本發(fā)明提供的這種基于數(shù)據(jù)描述符的MAC軟硬件交互方法及其硬件實現(xiàn)裝置, 提供了可根據(jù)數(shù)據(jù)發(fā)送接收帶寬要求進行調(diào)整的設(shè)計參數(shù)(N、M、P),具有較高的靈活性和 可配置性。3、本發(fā)明提供的這種基于數(shù)據(jù)描述符的MAC軟硬件交互方法及其硬件實現(xiàn)裝置, 具有操作靈活便捷、響應(yīng)迅速的特點,解決了采用傳統(tǒng)中斷交互方式造成的操作復(fù)雜、響應(yīng) 緩慢的問題。4、本發(fā)明提供的這種基于數(shù)據(jù)描述符的MAC軟硬件交互方法及其硬件實現(xiàn)裝置, 可廣泛地應(yīng)用于IEEE 802. Ilx協(xié)議規(guī)定的MAC控制器系統(tǒng)設(shè)計。


圖1基于數(shù)據(jù)描述符的MAC控制器軟硬件交互方法的工作流程圖(以發(fā)送幀數(shù)據(jù) 過程為例);圖1中各數(shù)字標號表示如下操作(1)軟件部分將外部存儲器中的數(shù)據(jù)描述符首地址寫入硬件部分TX_DeSCBUfT的 Tx_DP寄存器,并將Tx_En置位;TX_DesCBufT根據(jù)Tx_DP的首地址值讀入數(shù)據(jù)描述符;(2) Tx_DeSCBuff將描述符中指示帶傳輸數(shù)據(jù)的Buff_Ptr和Buff_Len字段傳遞給 Tx_DMA,以供進行數(shù)據(jù)傳輸;(3) Tx_DMA從外部存儲器中讀入幀數(shù)據(jù)并傳遞給硬件部分的后續(xù)發(fā)送單元;(4)發(fā)送完成后,Tx_DescBuff更新對應(yīng)的狀態(tài)寄存器,軟件部分從硬件部分的發(fā) 送寄存器中獲取發(fā)送信息。圖2發(fā)送和接收數(shù)據(jù)描述符的數(shù)據(jù)格式。圖3基于描述符方式的MAC控制器軟硬件交互的硬件實現(xiàn)裝置。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,以下結(jié)合具體實施例,并參照 附圖,對本發(fā)明進一步詳細說明。本發(fā)明提出了一種基于數(shù)據(jù)描述符的MAC軟硬件交互方法及其硬件實現(xiàn)裝置,提 出根據(jù)MAC控制器軟硬件實現(xiàn)劃分方案,軟件部分將本次發(fā)送或待接收的幀數(shù)據(jù)信息及 其控制信息按照規(guī)定格式組成發(fā)送或接收數(shù)據(jù)描述符(Tx/Rx Descriptor),并發(fā)送給硬 件部分完成對本次幀數(shù)據(jù)發(fā)送或接收的控制操作;在硬件架構(gòu)設(shè)計中開放系統(tǒng)控制/狀 態(tài)寄存器堆(SyS_Ctrl/SyS_Ma Register Banks)與發(fā)送/接收狀態(tài)寄存器堆(Tx/Rx StatusRegister Banks)以分別實現(xiàn)軟、硬件之間的常規(guī)收發(fā)控制以及本次數(shù)據(jù)傳輸?shù)目?制及狀態(tài)反饋;發(fā)送/接收描述符緩存控制器(TX/RX_DeSCBUfT)完成對描述符的解析并對協(xié)議控制單元(PCU)的數(shù)據(jù)收發(fā)操作進行控制。請參閱圖2,該圖描述了發(fā)送和接收數(shù)據(jù)描述符的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)描述符以鏈表的 形式儲存于外部地址空間,其ID字段表示該描述符的唯一標識,Buf_Ptr和BUf_Len給出 了待發(fā)送或接收數(shù)據(jù)的外部地址和長度,Link_Ptr字段為鏈接到下一個數(shù)據(jù)描述符的外部 地址空間。描述符的其余數(shù)據(jù)域為與幀發(fā)送相關(guān)的控制信息。圖3給出了基于數(shù)據(jù)描述符方式實現(xiàn)軟硬件協(xié)同工作的MAC硬件實現(xiàn)裝置。該 裝置包括1個系統(tǒng)控制寄存器(Sys_Ctrl Register)、1個系統(tǒng)狀態(tài)寄存器(Sys_Sta Register)、N個發(fā)送描述符緩存控制器(TX_DeSCBuff)及其對應(yīng)的N個發(fā)送狀態(tài)寄存器堆 (Tx_Status Register Banks) (N可根據(jù)發(fā)送數(shù)據(jù)流量進行配置)、M個接收描述符緩存寄存 器(Rx_DescBuff)及其對應(yīng)的M個接收狀態(tài)寄存器堆(Rx_Matus Register Banks) (Μ可 根據(jù)接收數(shù)據(jù)流量進行配置)、Ρ個發(fā)送DMA (Tx_DMA) (P可根據(jù)發(fā)送數(shù)據(jù)流量進行配置)、1 個接收DMA(Rx_DMA)以及1個中央控制器(CentralController)。該方法進行軟硬件協(xié)同工作的過程包括幀數(shù)據(jù)發(fā)送過程和幀數(shù)據(jù)接收過程。請參閱圖1,幀數(shù)據(jù)發(fā)送(Tx)過程包括以下步驟步驟1,MAC控制器軟件部分將描述符在外部存儲器中的地址寫入硬件中某一發(fā) 送描述符緩存控制器(Tx_DeSCBUff)的描述符地址寄存器(Tx_DP),并同時向該發(fā)送描述 符緩存控制器的發(fā)送使能寄存器(Tx_En)置“1”;步驟2,該Tx_DeSCBuff按照Tx_DP中的描述符地址讀入該描述符;步驟3,Tx_DescBuff正常處理該描述符,并將數(shù)據(jù)傳輸任務(wù)分配給一個Tx_DMA, 后者根據(jù)描述符中的Buff_Ptr以及BUff_Len讀取指定的發(fā)送數(shù)據(jù);步驟4,Tx_DescBuff控制器根據(jù)該描述符的控制信息完成對協(xié)議控制單元(PCU) 數(shù)據(jù)傳輸操作的控制;步驟5,Tx_DeSCBUff檢測當(dāng)前描述符中More數(shù)據(jù)域是否為空,若為1,則根據(jù)當(dāng)前 描述符中Link_Ptr的值讀入下一個發(fā)送描述符,之后重復(fù)步驟2 ;若More數(shù)據(jù)域為空,則 說明一幀數(shù)據(jù)已經(jīng)完全處理完,則該Tx_DeSCBUff更新對應(yīng)的發(fā)送狀態(tài)寄存器(TxJtatus Register),將當(dāng)前描述符對應(yīng)數(shù)據(jù)幀的發(fā)送狀態(tài)寫入該狀態(tài)寄存器以便軟件部分讀??;步驟6,當(dāng)處理完該描述符后,如果當(dāng)前的Tx_DeSCBUff所處理的當(dāng)前描述符的 Link_Ptr數(shù)據(jù)域非空,則將將當(dāng)前描述符的Link_Ptr中的地址傳遞給下一個TX_DeSCBufT 的Tx_DP寄存器,之后下一個Tx_DeSCBuff重復(fù)步驟2 ;步驟7,如果當(dāng)前Tx_DeSCBuff所處理的描述符的Link_Ptr數(shù)據(jù)域為空,則說明當(dāng) 前鏈表指針已經(jīng)處理完畢。系統(tǒng)下一次進行操作會重復(fù)步驟1。上述幀發(fā)送方案中,步驟1中所述MAC軟件部分將描述符寫入硬件TX_DeSCBUfT 的過程,具體包括步驟11、系統(tǒng)軟件部分根據(jù)待發(fā)送幀的具體要求,生成發(fā)送描述符并將其存儲于 以deSC_addr為首地址的外部存儲空間中;步驟12、軟件部分查詢Central Controller中包含的N個Tx_DescBuff的狀態(tài) 位,獲取某一空閑Tx_DeSCBuff的使用權(quán);步驟13、軟件部分向該空閑Tx_DescBuff的Tx_DP寄存器寫入desc_addr,并將其 Tx_En位置“ 1 ”,允許其開始進行幀數(shù)據(jù)發(fā)送。
上述幀發(fā)送方案中,步驟3中所述Tx_DeSCBUff處理數(shù)據(jù)描述符的過程,具體包 括步驟31、I^x—DescBuff 向 Central Controller 申請!"x—DMA 的使用權(quán);步驟32、Central Controller通過輪詢得到某一空閑的Tx_DMA,并將其分配給 Tx_DescBuff 使用;步驟33、Tx_DescBuff將待發(fā)送數(shù)據(jù)的信息Buff_Ptr和Buff_Len信息傳遞給Tx_ DMA,后者發(fā)起數(shù)據(jù)傳輸申請,將外部存儲空間的數(shù)據(jù)讀入硬件內(nèi)部。上述幀發(fā)送方案中,步驟5、6中所述Tx_DeSCBUff完成幀數(shù)據(jù)發(fā)送后的處理過程, 具體包括步驟51、Tx_DescBuff在得到P⑶發(fā)送幀數(shù)據(jù)返回的結(jié)果后,檢查當(dāng)前描述符中 More字段是否置位,若為1,表示當(dāng)前幀包含多個分段,則該Tx_DeSCBUff根據(jù)當(dāng)前描述符 的Link_Ptr字段發(fā)起數(shù)據(jù)傳輸,將下一個數(shù)據(jù)描述符讀入到當(dāng)前Tx_DP寄存器中,重復(fù)步 驟2的工作;步驟52、若當(dāng)前描述符More字段為0,表示當(dāng)前幀不包含下一分段,則該Tx_ DescBuff將已完成發(fā)送的相關(guān)狀態(tài)信息寫入對應(yīng)的TxJtatusRegister,以供軟件部分讀 取;步驟53、Tx_DescBuff在完成TxJtatus Register更新的同時,將檢查當(dāng)前描述 符Link_Ptr字段是否非空。若非空,則Tx_DescBuff向CentralController申請空閑的 Tx_DeSCBUff,若為空,則說明當(dāng)前描述符鏈表結(jié)束,系統(tǒng)下一次操作重復(fù)步驟1 ;步驟54,CentralController 在接到 Tx_DescBuff 的申請后,根據(jù)各Tx_DescBuff 的狀態(tài)信息,獲取某一空閑的Tx_DeSCBuff的使用權(quán)后分配給當(dāng)前申請的TX_DeSCBufT ;步驟55、當(dāng)前Tx_DeSCBuff獲得下一可用的Tx_DeSCBuff后,將當(dāng)前描述符的 Link_Ptr數(shù)據(jù)域?qū)懭氲较乱?TX_DeSCBufT的Tx_DP寄存器,并將其Tx_En置位,開始下一幀 數(shù)據(jù)段的傳輸。幀數(shù)據(jù)接收(Rx)過程包括以下步驟步驟10,MAC控制器的軟件部分將描述符在外部存儲空間的地址寫入硬件中某一 個接收描述符緩存控制器(Rx_DeSCBUff)的描述符地址寄存器(Rx_DP);步驟20,該Rx_DeSCBuff按照Rx_DP中的描述符地址讀入該描述符;步驟30,Rx_DeSCBuff等待Rx_DMA的描述符申請,當(dāng)后者發(fā)起描述符使用申請時, Rx_DescBuff將當(dāng)前描述符的Buff_Ptr和Buff_Len傳遞給Rx_DMA,并完成接收數(shù)據(jù)的傳 輸;步驟40,當(dāng)Rx_DMA將接收到的數(shù)據(jù)完全傳輸?shù)街付ǖ腂uffer后,通知Rx_ DescBuff更新接收寄存器(Rxjtatus Register)并更新描述符完成信號;步驟50,當(dāng)處理當(dāng)前接收描述符后,若當(dāng)前描述符的Link_Ptr不為空則等待空閑 的Rx_DeSCBUff并向其Rx_DP中寫入描述符的外部地址,若為空表示此描述符鏈表處理完 畢。當(dāng)再次寫入描述符時,系統(tǒng)查詢接收描述符緩存控制器的狀態(tài)寄存器,向空閑的Rx_ DescBuff的Rx_DP中寫入下一個接收描述符的外部地址,即重復(fù)步驟1。上述幀接收方案中,步驟10中所述MAC軟件部分將描述符寫入硬件RX_DeSCBufT 的過程,具體包括
步驟101、系統(tǒng)軟件部分根據(jù)待接收幀的具體要求,生成接收描述符并將其存儲于 以deSC_addr為首地址的外部存儲空間中;步驟102、軟件部分查詢Central Controller中包含的M個Rx_DescBuff的狀態(tài) 位,獲取某一空閑Rx_DesCBuff的使用權(quán);步驟103、軟件部分向該空閑Rx_DescBuff的Rx_DP寄存器寫入desc_addr。上述幀接收方案中,步驟30中所述Rx_DeSCBUff處理接收描述符的過程,具體包 括步驟301、Rx_DMA將接收到的幀數(shù)據(jù)讀入Rx_DMA緩存中,向Central Controller 發(fā)起申請,請求準備就緒的接收描述符;步驟302、Central Controller根據(jù)各Rx_DescBuff的狀態(tài)位,獲取某一已讀入接 收描述符的Rx_DesCBuff的使用權(quán),將發(fā)起申請的Rx_DMA與該RX_DesCBuff進行關(guān)聯(lián);步驟303、該Rx_DescBuff將當(dāng)前接收描述符的Buff_Ptr和Buff_Len字段傳遞給 與其關(guān)聯(lián)的Rx_DMA,指示其完成接收幀數(shù)據(jù)向外部存儲器的傳輸。上述幀接收方案中,步驟50中所述Rx_DeSCBUff完成接收描述符的處理過程,具 體包括步驟501、Rx_DesCBuff在向Rx_DMA傳遞數(shù)據(jù)參數(shù)后,檢查當(dāng)前接收描述符的 Link_Ptr是否非空,若非空,則向Central Controller申請下一個可用的Rx_DescBuff ;步驟502、Central Controller根據(jù)各Rx_DescBuff的狀態(tài)位,獲取某一空閑的 Rx_DescBuff的使用權(quán),將其分配給發(fā)起申請的Rx_DeSCBufT ;步驟503、當(dāng)前Rx_DeSCBuff將當(dāng)前接收描述符的Link_Ptr寫入申請得到的Rx_ DescBuff,之后重復(fù)步驟52 ;步驟504、若當(dāng)前描述符的Link_Ptr為空,則表示當(dāng)前描述符列表處理完畢。當(dāng)系 統(tǒng)再一次發(fā)起描述符寫入操作時,重復(fù)步驟51的操作。以下結(jié)合具體符合IEEE 802. Ilx軟硬件協(xié)同工作的MAC控制器進行幀數(shù)據(jù)發(fā) 送和接收過程的具體實例,以基于嵌入式開發(fā)平臺的MAC控制器實現(xiàn)為例,軟件平臺采用 ARM926微處理器,該平臺采用M位地址總線,16位數(shù)據(jù)總線的方式,進行數(shù)據(jù)傳輸。則在該平臺下數(shù)據(jù)描述符中每個字的長度為16bit,Buff_Ptr和相關(guān)地址指針為 Mbit,需要兩個字長的存儲空間。同時該硬件平臺MAC控制器硬件設(shè)備共包含1個系統(tǒng)控 制寄存器(Sys_Ctrl Register)、1個系統(tǒng)狀態(tài)寄存器(Sys_Sta Register)、16個發(fā)送描述 符緩存控制器(Tx_DeSCBuff)及其對應(yīng)的16個發(fā)送狀態(tài)寄存器堆(Txjtatus Register Banks)、16個接收描述符緩存寄存器(RX_DeSCBuff)及其對應(yīng)的16個接收狀態(tài)寄存器堆 (Rx_Status Register Banks)、10 個發(fā)送 DMA (Tx_DMA)、1 個接收 DMA(Rx_DMA)以及 1 個中 央控制器(Central Controller)。本實例過程共發(fā)送一個具有兩個分段的數(shù)據(jù)幀和接收一個數(shù)據(jù)幀分段。該方法進 行軟硬件協(xié)同工作的過程包括幀數(shù)據(jù)發(fā)送過程和幀數(shù)據(jù)接收過程。請參閱圖1,幀數(shù)據(jù)發(fā)送(Tx)過程包括以下步驟步驟1,MAC控制器軟件部分將描述符在外部存儲器中的24bit首地址寫入硬件中 某一發(fā)送描述符緩存控制器(Tx_DeSCBUff)的描述符地址寄存器(Tx_DP),并同時向該發(fā) 送描述符緩存控制器的發(fā)送使能寄存器(Tx_En)置“1”;
該步驟進一步包括(1)系統(tǒng)軟件部分根據(jù)待發(fā)送幀的具體要求,生成發(fā)送描述符并將其存儲于以 deSC_addr為首地址的外部存儲空間中;(2)軟件部分查詢Central Controller中包含的16個Tx_DescBuff的狀態(tài)位,獲 取某一空閑Tx_DescBuff的使用權(quán),例如Tx_DescBuff#l ;(3)軟件部分向Tx_DescBuff#l的!"x—DP寄存器寫入24bit長的desc_addr,并將 其Tx_En位置“ 1 ”,允許其開始進行幀數(shù)據(jù)發(fā)送。步驟2,Tx_DescBuff#l按照Tx_DP中的描述符地址讀入該描述符;步驟3,Tx_DescBuff#l正常處理該描述符,并將數(shù)據(jù)傳輸任務(wù)分配給一個Tx_ DMA,后者根據(jù)描述符中的Buff_Ptr以及Buff_Len讀取指定的發(fā)送數(shù)據(jù);該步驟進一步包括(l)Tx_DescBuff#l 向 Central Controller 申請 Tx_DMA 的使用權(quán);(2)Central Controller通過輪詢得到某一空閑的Tx_DMA,并將其分配給Tx_ DescBuff 使用,例如 1^_0嫩#5 ;(3) Tx_DescBuff#l將待發(fā)送數(shù)據(jù)的信息Buff_Ptr和Buff_Len信息傳遞給Tx_ DMA#5,后者發(fā)起數(shù)據(jù)傳輸申請,將外部存儲空間的數(shù)據(jù)讀入硬件內(nèi)部。步驟4,Tx_DescBuff#l控制器根據(jù)該描述符的控制信息完成對協(xié)議控制單元 (PCU)數(shù)據(jù)傳輸操作的控制;步驟5,Tx_DeSCBUff#l檢測當(dāng)前描述符中More數(shù)據(jù)域為1,則根據(jù)當(dāng)前描述符中 Link_Ptr的值讀入下一個發(fā)送描述符,之后重復(fù)步驟2至步驟4 ;當(dāng)TX_DeSCBuff#l檢測到 當(dāng)前描述符中More數(shù)據(jù)域為0,則表示當(dāng)前數(shù)據(jù)幀發(fā)送完畢;Tx_DeSCBUff#l將PCU傳遞的 發(fā)送過程狀態(tài)信息寫入對應(yīng)的TxJtatus Registertl,以便軟件部分讀??;該步驟進一步包括(l)Tx_DescBuff#l 將當(dāng)前 Link_Ptr 的值寫入!"x—DP 寄存器;(2)Tx_DescBuff#l根據(jù)Tx_DP的地址值讀入在外部存儲空間中的發(fā)送描述符,即 步驟2 ;(3)Tx_DescBuff#l 向 Central Controller 申請 Tx_DMA 的使用權(quán);(4)Central Controller通過輪詢得到某一空閑的Tx_DMA,并將其分配給Tx_ DescBuff 使用,例如 1^_0嫩#3 ;(5)Tx_DescBuff#l將待發(fā)送數(shù)據(jù)的信息Buff_Ptr和Buff_Len信息傳遞給Tx_ DMA#3,后者發(fā)起數(shù)據(jù)傳輸申請,將外部存儲空間的數(shù)據(jù)讀入硬件內(nèi)部;(6)Tx_DescBuff#l控制器根據(jù)該描述符的控制信息完成對協(xié)議控制單元(P⑶) 數(shù)據(jù)傳輸操作的控制,即步驟4;(7) Tx_DescBuff#l檢測到當(dāng)前描述符中More數(shù)據(jù)域為0,則表示當(dāng)前數(shù)據(jù)幀發(fā)送 完畢;Tx_DescBuff#l將PCU傳遞的發(fā)送過程狀態(tài)信息寫入對應(yīng)的TxJtatus Register#l, 以便軟件部分讀取。步驟6,當(dāng)處理完該描述符后,Tx_DeSCBuff#l檢查當(dāng)前描述符的Link_Ptr數(shù)據(jù)域 為空,則說明當(dāng)前鏈表指針已經(jīng)處理完畢。Tx_DeSCBUff復(fù)位等待下一次處理過程。幀數(shù)據(jù)接收(Rx)過程包括以下步驟
步驟1,MAC控制器的軟件部分將描述符在外部存儲空間的M位地址寫入硬件中 某一個接收描述符緩存控制器(RX_DeSCBuff)的描述符地址寄存器(Rx_DP);該步驟進一步包括(1)系統(tǒng)軟件部分根據(jù)待接收幀的具體要求,生成接收描述符并將其存儲于以 deSC_addr為首地址的外部存儲空間中;(2)軟件部分查詢Central Controller中包含的16個Rx_DescBuff的狀態(tài)位,獲 取某一空閑Rx_DescBuff的使用權(quán),例如Rx_DescBuff#10 ;(3)軟件部分向 Rx_DescBuff#10 的 Rx_DP 寄存器寫入 desc_addr。
步驟2,Rx_DescBuff#10按照Rx_DP中的描述符地址讀入該描述符;步驟3,Rx_DescBuff#10等待Rx_DMA的描述符申請,當(dāng)后者發(fā)起描述符使用申請 時,Rx_DescBuff將當(dāng)前描述符的Buff_Ptr和Buff_Len傳遞給Rx_DMA,并完成接收數(shù)據(jù)的 傳輸;該步驟進一步包括(l)Rx_DMA (例如Rx_DMA#2)將接收到的幀數(shù)據(jù)讀入Rx_DMA#2緩存中,向Central Controller發(fā)起申請,請求準備就緒的接收描述符;(2)Central Controller根據(jù)各Rx_DeSCBuff的狀態(tài)位,獲取已讀入接收描述符 的Rx_DescBuff#10的使用權(quán),將發(fā)起申請的Rx_DMA#2與Rx_DescBuff#10進行關(guān)聯(lián);(3) Rx_DescBuff#10將當(dāng)前接收描述符的Buff_Ptr和Buff_Len字段傳遞給與其 關(guān)聯(lián)的Rx_DMA#2,指示其完成接收幀數(shù)據(jù)向外部存儲器的傳輸。步驟4,當(dāng)Rx_DMA#2將接收到的數(shù)據(jù)完全傳輸?shù)街付ǖ腂uffer后,通知Rx_ DescBuff#10更新接收寄存器(Rxjtatus Register#10)并更新描述符完成信號;步驟5,當(dāng)處理當(dāng)前接收描述符后,Rx_DescBuff#10檢查當(dāng)前描述符Link_Ptr為 空,則表示此描述符鏈表處理完畢。RX_DesCBufT#10復(fù)位等待下一次數(shù)據(jù)接收。以上所述的具體實施例,對本發(fā)明的目的、技術(shù)方案和有益效果進行了進一步詳 細說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限制本發(fā)明,凡 在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保 護范圍之內(nèi)。參考文獻[l]Nirav Salot, Implementation of IEEE 802. IlMedium AccessController. IIT BomBay, India,2004,.[2]Mikael Rudberg, Physical Layer Interface for IEEE 802. 11MAC, Institution of Systemteknik, Sweden,2002.[3]AMD AM79C930 PCnet Mobile Single Chip Wireless LAN MediaAccess Controller, AMD Incorporation,1998.[4]Marve11 88W8686 Integrated MAC/Baseband/RF Low Power SoC, Marvell Incorporation,2007.
權(quán)利要求
1.一種基于數(shù)據(jù)描述符的MAC軟硬件交互方法,其特征在于,該方法包括軟件部分將本次發(fā)送或待接收的幀數(shù)據(jù)信息及其控制信息組成發(fā)送或接收數(shù)據(jù)描述 符(Tx/Rx Descriptor),并發(fā)送給硬件部分完成對本次幀數(shù)據(jù)發(fā)送或接收的控制操作;在硬件架構(gòu)設(shè)計中開放系統(tǒng)控制/狀態(tài)寄存器堆(Sys_Ctrl/SysJtaRegister Banks)與發(fā)送/接收狀態(tài)寄存器堆(Tx/Rx Status Register Banks),以分別實現(xiàn)軟、硬件 之間的常規(guī)收發(fā)控制以及本次數(shù)據(jù)傳輸?shù)目刂萍盃顟B(tài)反饋;發(fā)送/接收描述符緩存控制器(TX/RX_DeSCBUfT)完成對描述符的解析,并對協(xié)議控制 單元(PCU)的數(shù)據(jù)收發(fā)操作進行控制。
2.根據(jù)權(quán)利要求1所述的基于數(shù)據(jù)描述符的MAC軟硬件交互方法,其特征在于,所述 數(shù)據(jù)描述符包括發(fā)送描述符(Tx Descriptor)和接收描述符(Rx Descriptor),其中發(fā)送描 述符至少包含有一個ID字段、一個Buff_Len字段、一個Buff_Ptr字段、一個Frame_Len字 段、一個Frame Type字段、一個Link_Ptr字段和若干發(fā)送控制字段;接收描述符至少包含 一個ID字段、一個Buff_Len字段、一個Buff_Ptr字段和一個Link_Ptr字段。
3.根據(jù)權(quán)利要求2所述的基于數(shù)據(jù)描述符的MAC軟硬件交互方法,其特征在于,所述 數(shù)據(jù)描述符以鏈表的形式儲存于外部地址空間,其ID字段表示該描述符的唯一標識,Buf_ Ptr和BUf_Len給出了待發(fā)送或接收數(shù)據(jù)的外部地址和長度,Link_Ptr字段為鏈接到下一 個數(shù)據(jù)描述符的外部地址空間。描述符的其余數(shù)據(jù)域為與幀發(fā)送相關(guān)的控制信息。
4.根據(jù)權(quán)利要求1所述的基于數(shù)據(jù)描述符的MAC軟硬件交互方法,其特征在于,所述幀 數(shù)據(jù)發(fā)送(Tx)過程主要包括如下步驟步驟1、MAC控制器軟件部分將描述符在外部存儲器中的地址寫入硬件中某一發(fā)送描 述符緩存控制器(Tx_DeSCBUff)的描述符地址寄存器(Tx_DP),并同時向該發(fā)送描述符緩 存控制器的發(fā)送使能寄存器(Tx_En)置“1”;步驟2、該TX_DeSCBUfT按照Tx_DP中的描述符地址讀入該描述符; 步驟3、Tx_DescBuff正常處理該描述符,并將數(shù)據(jù)傳輸任務(wù)分配給一個Tx_DMA,后者 根據(jù)描述符中的Buff_Ptr以及BUff_Len讀取指定的發(fā)送數(shù)據(jù);步驟4、TX_DeSCBUfT控制器根據(jù)該描述符的控制信息完成對協(xié)議控制單元(PCU)數(shù)據(jù) 傳輸操作的控制;步驟5、Tx_DeSCBUff檢測當(dāng)前描述符中More數(shù)據(jù)域是否為空,若為1,則根據(jù)當(dāng)前描 述符中Link_Ptr的值讀入下一個發(fā)送描述符,之后重復(fù)步驟2 ;若More數(shù)據(jù)域為空,則說 明一幀數(shù)據(jù)已經(jīng)完全處理完,則該Tx_DeSCBUff更新對應(yīng)的發(fā)送狀態(tài)寄存器(TxJtatus Register),將當(dāng)前描述符對應(yīng)數(shù)據(jù)幀的發(fā)送狀態(tài)寫入該狀態(tài)寄存器以便軟件部分讀??;步驟6,當(dāng)處理完該描述符后,如果當(dāng)前的Tx_DeSCBUff所處理的當(dāng)前描述符的Link_ Ptr數(shù)據(jù)域非空,則將將當(dāng)前描述符的Link_Ptr中的地址傳遞給下一個Tx_DeSCBuff的 Tx_DP寄存器,之后下一個Tx_DeSCBuff重復(fù)步驟2 ;步驟7,如果當(dāng)前Tx_DeSCBUff所處理的描述符的Link_Ptr數(shù)據(jù)域為空,則說明當(dāng)前鏈 表指針已經(jīng)處理完畢;系統(tǒng)下一次進行操作會重復(fù)步驟1。
5.根據(jù)權(quán)利要求4所述的基于數(shù)據(jù)描述符的MAC軟硬件交互方法,其特征在于,步驟1 中所述MAC軟件部分將描述符寫入硬件Tx_DeSCBUff的過程,具體包括步驟11、系統(tǒng)軟件部分根據(jù)待發(fā)送幀的具體要求,生成發(fā)送描述符并將其存儲于以deSC_addr為首地址的外部存儲空間中;步驟12、軟件部分查詢Central Controller中包含的N個Tx_DescBuff的狀態(tài)位,獲 取某一空閑Tx_DeSCBuff的使用權(quán);步驟13、軟件部分向該空閑Tx_DescBuff的Tx_DP寄存器寫入desc_addr,并將其Tx_ En位置“ 1,,,允許其開始進行幀數(shù)據(jù)發(fā)送。
6.根據(jù)權(quán)利要求4所述的基于數(shù)據(jù)描述符的MAC軟硬件交互方法,其特征在于,步驟3 中所述TX_DeSCBuff處理數(shù)據(jù)描述符的過程,具體包括步驟 31、Tx_DescBuff 向 Central Controller 申請 Tx_DMA 的使用權(quán); 步驟32、Central Controller通過輪詢得到某一空閑的Tx_DMA,并將其分配給Tx_ DescBuff 使用;步驟33、Tx_DescBuff將待發(fā)送數(shù)據(jù)的信息Buff_Ptr和Buff_Len信息傳遞給Tx_DMA, 后者發(fā)起數(shù)據(jù)傳輸申請,將外部存儲空間的數(shù)據(jù)讀入硬件內(nèi)部。
7.根據(jù)權(quán)利要求4所述的基于數(shù)據(jù)描述符的MAC軟硬件交互方法,其特征在于,步驟5 和6中所述TX_DeSCBuff完成幀數(shù)據(jù)發(fā)送后的處理過程,具體包括步驟51、Tx_DeSCBUff在得到P⑶發(fā)送幀數(shù)據(jù)返回的結(jié)果后,檢查當(dāng)前描述符中More 字段是否置位,若為1,表示當(dāng)前幀包含多個分段,則該Tx_DeSCBUff根據(jù)當(dāng)前描述符的 Link_Ptr字段發(fā)起數(shù)據(jù)傳輸,將下一個數(shù)據(jù)描述符讀入到當(dāng)前Tx_DP寄存器中,重復(fù)步驟2 的工作;步驟52、若當(dāng)前描述符More字段為0,表示當(dāng)前幀不包含下一分段,則該Tx_DesCBuff 將已完成發(fā)送的相關(guān)狀態(tài)信息寫入對應(yīng)的T^MatusRegister,以供軟件部分讀取;步驟53、Tx_DescBuff在完成TxJtatus Register更新的同時,將檢查當(dāng)前描述符 Link_Ptr字段是否非空。若非空,則Tx_DescBuff向CentralController申請空閑的Tx_ DescBuff,若為空,則說明當(dāng)前描述符鏈表結(jié)束,系統(tǒng)下一次操作重復(fù)步驟1 ;步驟 54、Central Controller 在接到 Tx_DescBuff 的申請后,根據(jù)各 Tx_DescBuff 的 狀態(tài)信息,獲取某一空閑的Tx_DeSCBuff的使用權(quán)后分配給當(dāng)前申請的TX_DeSCBufT ;步驟55、當(dāng)前Tx_DeSCBuff獲得下一可用的Tx_DeSCBuff后,將當(dāng)前描述符的Link_ Ptr數(shù)據(jù)域?qū)懭氲较乱?TX_DeSCBufT的Tx_DP寄存器,并將其Tx_En置位,開始下一幀數(shù)據(jù) 段的傳輸。
8.根據(jù)權(quán)利要求1所述的基于數(shù)據(jù)描述符的MAC軟硬件交互方法,其特征在于,所述幀 數(shù)據(jù)接收(Rx)過程主要包括如下步驟步驟10,MAC控制器的軟件部分將描述符在外部存儲空間的地址寫入硬件中某一個接 收描述符緩存控制器(Rx_DeSCBUff)的描述符地址寄存器(Rx_DP); 步驟20,該RX_DesCBuff按照Rx_DP中的描述符地址讀入該描述符; 步驟30,Rx_DescBuff等待Rx_DMA的描述符申請,當(dāng)后者發(fā)起描述符使用申請時,Rx_ DescBuff將當(dāng)前描述符的Buff_Ptr和Buff_Len傳遞給Rx_DMA,并完成接收數(shù)據(jù)的傳輸; 步驟40,當(dāng)Rx_DMA將接收到的數(shù)據(jù)完全傳輸?shù)街付ǖ腂uffer后,通知RX_DesCBuff 更 新接收寄存器(Rxjtatus Register)并更新描述符完成信號;步驟50,當(dāng)處理當(dāng)前接收描述符后,若當(dāng)前描述符的Link_Ptr不為空則等待空閑的 Rx_DeSCBUff并向其Rx_DP中寫入描述符的外部地址,若為空表示此描述符鏈表處理完畢。當(dāng)再次寫入描述符時,系統(tǒng)查詢接收描述符緩存控制器的狀態(tài)寄存器,向空閑的Rx_ DescBuff的Rx_DP中寫入下一個接收描述符的外部地址,即重復(fù)步驟10。
9.根據(jù)權(quán)利要求8所述的基于數(shù)據(jù)描述符的MAC軟硬件交互方法,其特征在于,步驟 10中所述MAC軟件部分將描述符寫入硬件Rx_DeSCBuff的過程,具體包括步驟101、系統(tǒng)軟件部分根據(jù)待接收幀的具體要求,生成接收描述符并將其存儲于以 deSC_addr為首地址的外部存儲空間中;步驟102、軟件部分查詢Central Controller中包含的M個Rx_DescBuff的狀態(tài)位,獲 取某一空閑Rx_DesCBuff的使用權(quán);步驟103、軟件部分向該空閑Rx_DescBuff的Rx_DP寄存器寫入desc_addr。
10.根據(jù)權(quán)利要求8所述的基于數(shù)據(jù)描述符的MAC軟硬件交互方法,其特征在于,步驟 30中所述Rx_DeSCBUff處理接收描述符的過程,具體包括步驟301、Rx_DMA將接收到的幀數(shù)據(jù)讀入Rx_DMA緩存中,向Central Controller發(fā)起 申請,請求準備就緒的接收描述符;步驟302、Central Controller根據(jù)各Rx_DeSCBuff的狀態(tài)位,獲取某一已讀入接收描 述符的Rx_DesCBuff的使用權(quán),將發(fā)起申請的Rx_DMA與該Rx_DeSCBuff進行關(guān)聯(lián);步驟303、該Rx_DeSCBuff將當(dāng)前接收描述符的Buff_Ptr和Buff_Len字段傳遞給與其 關(guān)聯(lián)的Rx_DMA,指示其完成接收幀數(shù)據(jù)向外部存儲器的傳輸。
11.根據(jù)權(quán)利要求8所述的基于數(shù)據(jù)描述符的MAC軟硬件交互方法,其特征在于,步驟 50中所述Rx_DeSCBUff完成接收描述符的處理過程,具體包括步驟501、Rx_DescBuff在向Rx_DMA傳遞數(shù)據(jù)參數(shù)后,檢查當(dāng)前接收描述符的Link_Ptr 是否非空,若非空,則向Central Controller申請下一個可用的Rx_DescBuff ;步驟502、Central Controller根據(jù)各Rx_DescBuff的狀態(tài)位,獲取某一空閑的Rx_ DescBuff的使用權(quán),將其分配給發(fā)起申請的Rx_DeSCBufT ;步驟503、當(dāng)前Rx_DeSCBuff將當(dāng)前接收描述符的Link_Ptr寫入申請得到的Rx_ DescBuff,之后重復(fù)步驟52 ;步驟504、若當(dāng)前描述符的Link_Ptr為空,則表示當(dāng)前描述符列表處理完畢;當(dāng)系統(tǒng)再 一次發(fā)起描述符寫入操作時,重復(fù)步驟51的操作。
12.一種基于數(shù)據(jù)描述符的MAC軟硬件交互的硬件實現(xiàn)裝置,其特征在于,包含P個發(fā) 送DMA (Tx_DMA)、1個接收DMA (Rx_DMA)、N個發(fā)送描述符緩存控制器(Tx_DescBuff)及其對 應(yīng)的N個發(fā)送狀態(tài)寄存器(Txjtatus Register Banks)、M個接收描述符緩存控制器(Rx_ DescBuff)及其對應(yīng)的M個接收狀態(tài)寄存器(RxJtatus RegisterBanks)、1個系統(tǒng)控制寄 存器(Sys_Ctrl Register)、1個系統(tǒng)狀態(tài)寄存器(Sys_Sta Register)以及一個中央控制 器(Central Controller),其中,P可根據(jù)發(fā)送數(shù)據(jù)流量進行配置,N可根據(jù)發(fā)送數(shù)據(jù)流量 進行配置,M可根據(jù)接收數(shù)據(jù)流量進行配置。
13.根據(jù)權(quán)利要求12所述的基于數(shù)據(jù)描述符的MAC軟硬件交互的硬件實現(xiàn)裝置,其特 征在于,所述發(fā)送描述符緩存控制器(TX_DeSCBUfT)包含一個Tx_DP地址寄存器和一個Tx_ En發(fā)送使能寄存器。
14.根據(jù)權(quán)利要求12所述的基于數(shù)據(jù)描述符的MAC軟硬件交互的硬件實現(xiàn)裝置,其特 征在于,所述接收描述符緩存控制器(RX_DeSCBUfT)包含一個Rx_DP地址寄存器。c
全文摘要
本發(fā)明公開了一種基于數(shù)據(jù)描述符的MAC軟硬件交互方法及其硬件實現(xiàn)裝置。方法包括軟件部分將本次發(fā)送或待接收的幀數(shù)據(jù)信息及其控制信息按照規(guī)定格式組成發(fā)送或接收數(shù)據(jù)描述符,并發(fā)送給硬件部分完成對本次幀數(shù)據(jù)發(fā)送或接收的控制操作;在硬件架構(gòu)設(shè)計中開放系統(tǒng)控制/狀態(tài)寄存器堆與發(fā)送/接收狀態(tài)寄存器堆以分別實現(xiàn)軟、硬件之間的常規(guī)收發(fā)控制以及本次數(shù)據(jù)傳輸?shù)目刂萍盃顟B(tài)反饋;發(fā)送/接收描述符緩存控制器完成對描述符的解析并對協(xié)議控制單元的數(shù)據(jù)收發(fā)操作進行控制。利用本發(fā)明可實現(xiàn)MAC控制器中軟件部分對硬件部分的實時控制及狀態(tài)監(jiān)控,避免了單一使用中斷控制而造成的響應(yīng)緩慢、操作復(fù)雜等弊端,具有靈活高效的特點。
文檔編號H04W80/00GK102065568SQ20091023777
公開日2011年5月18日 申請日期2009年11月17日 優(yōu)先權(quán)日2009年11月17日
發(fā)明者吳斌, 周玉梅, 王海欣 申請人:中國科學(xué)院微電子研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1