html模版基於FPGA的以太網MAC子層協議設計實現
作者:徐洪波 俞承芳 來源:電子設計信息網摘要: 本文介紹瞭基於現場可編程門陣列(FPGA) 的以太網MAC子層協議的硬件實現方法. 硬件結構上由控制模 塊、發送模塊和接收模塊3個部分組成,發送模塊和接收模塊采用狀態機控制數據發送和接收的過程,完成數據的封裝、發送和接收功能.傳統以PC為中心的互聯網應用現已開始轉向以嵌入式設備為中心. IA(internet appliance) 概念現在甚為流行,這表明互聯網應用進入瞭嵌入式互聯網的時代已經來臨. 據網絡專傢預測,將來在互聯網上傳輸的信息中,有70%來自小型嵌入式系統. 因此,對嵌入式系統接入Internet網絡的研究是有必要的.目前有兩種方法可以實現單片機系統接入Internet.一種方法是利用NIC(網絡控制/ 網卡) 實現網絡接口,由單片機來提供所需的網絡協議. 另外一種方法是利用具有網絡協議棧結構的芯片和PHY(物理層的接收器) 來實現網絡接口,主控制器隻負責往協議棧結構芯片的某個寄存器裡放上適當的數據. 美國Seiko Instrument 公司生產的S7600A 就是具有這種結構的芯片. 與此同時,用FPGA實現單片機系統接入Internet的方法也日益受到人們的重視.FPGA是現場可編程門陣列的縮寫,是近年來發展迅速的大規模可編程器件,具有密度高,速度快,功耗小、使用方便等特點 ,在嵌入式系統設計中得到瞭廣泛的應用. 以MCU 為核心,采用FPGA 設計實現外圍電路,不僅可以使設計的電子產品小型化、集成化和實現高可靠性,還大大縮短瞭設計周期,減少瞭設計費用,降低瞭設計風險. 本文提出采用FPGA實現網絡協議棧,著重介紹以太網MAC 子層協議的硬件實現方法.1 以太網MAC 子層協議IEEE802協議標準系列中,數據鏈路層包括邏輯鏈路控制(LLC) 子層和媒體訪問控制(MAC) 子層. 其中MAC 位於LLC 和物理層之間,它使LLC 適應於不同的媒體訪問技術和物理媒體. MAC 單獨作為一個子層,就不會因為媒體訪問方法的改變而影響較高層次的協議. MAC 由數據拆裝和媒體訪問管理兩個模塊組成,完成數據幀的封裝、解封、發送和接收功能.以太網數據幀封裝格式如表1 所示,其中目的地址、源地址、長度/ 類型和數據4 個字段由上一層協議模塊生成. 傳送數據幀時,數據封裝模塊自動在待傳輸數據前面添加7 個字節的前導碼和1 個字節的定界符,並在數據傳送結束時加發4 個字節的循環冗餘校驗碼,如果數據長度小於46 字節,則會自動進行數據填充以達到要求的最短長度. 接收數據幀時,數據拆裝模塊將自動丟棄前導碼和定界符2 個字段.

媒體訪問管理模塊主要實現CSMA/CD(carrier sense multiple access with collision detection) 協議 . CSMA/CD 是一種分佈式介質訪問控制協議,使網中的多個站(節點) 可以共享傳輸介質. 發送數據幀時,節點首先進行載波監聽,當介質空閑時開始發送幀. 如果在傳輸過程中與其他節點產生沖突,則正在傳輸的每個節點必須發出32 比特大小的阻塞信號來加強沖突,以便通知總線上各個站點已發生沖突,然後隨機延時一段時間重新爭用介質,再重新傳送數據幀.2 MAC 子層協議的FPGA 實現以太網MAC 子層協議的硬件結構框圖如圖1 所示,由控制模塊、發送模塊和接收模塊3個部分組成. 由於小型嵌入式系統主要應用在集散控制系統中,信息交流多為“一問一答”式的半雙工通信模式,同時為瞭降低硬件資源的開銷,本模塊僅支持半雙工通信模式.

圖1 硬件結構框圖2. 1 控制模塊該模塊包含主機接口、寄存器、發送數據緩沖區及接收數據緩沖區4 個部分. 主機接口部分用以實現與MCU 之間的數據交換,采用8 位外部數據總線. 寄存器主要用於功能參數的設置及狀態信息的存貯. 發送數據緩沖區是主機與發送模塊之間的數據傳輸通道,接收數據緩沖區則是主機與接收模塊之間的數據傳輸通道.控制模塊的工作時鐘有兩種選擇方式,一種是直接由外部提供,另一種是外部時鐘通過FPGA 片內的延遲鎖相環進行倍頻後供內部使用,用戶可以根據系統設計實際需要自由選擇.數據緩沖區(發送數據緩沖區和接收數據緩沖區) 用作發送與接收數據的緩沖,以使主機的傳輸速度與本模塊相匹配. 發送數據時,主機先將待發送的數據幀寫入發送數據緩沖區,然後由發送模塊將數據讀出. 傳統意義上的數據緩沖區由一塊內部或外部RAM來實現,但這樣需要設計實現一個復雜的控制狀態機來管理主機、發送模塊和接收模塊3 個部分對RAM的讀寫. Spartan Ⅱ系列的FPGA 內部提供瞭豐富的塊RAM資源,可以配置雙端口RAM. 因此本文將發送緩沖區分成兩個獨立的部分,這樣每個數據緩沖區便可以由雙端口的RAM來實現,大大簡化瞭設計,節省瞭硬件資源.2. 2 發送模塊該模塊主要實現CSMA/CD 協議,完成數據幀的傳送,即以字節為單位從發送緩沖區讀取數據,並將其轉換成4 比特的半位元傳送給以太網的物理層PHY芯片,結構框圖如圖2 所示.重發計數器用以存貯當前幀成功傳輸時的發送次數. 幀間隙計數器用以保證相鄰兩個幀之間保持一定的傳輸時間間隔. 沖突窗計數器用以判斷當前所發生的沖突是否為後沖突(late collision) . 延時計數器用以存貯啟動傳輸後等待總線空閑的時間,當超過一定時間後將放棄當前幀的傳輸.這4 個功能子模塊都由1個計數器和1個比較器來實現. 退避計數器模塊用以實現二進制指數退避算法,包括一個偽隨機數生成器. CRC 生成電路用以實現數據幀的校驗碼序列,采用4 位數據線並行方式實現.

圖2 發送模塊結構框圖發送控制狀態機是整個發送模塊的核心,用以管理各個功能子模塊,並使它們按照一定的時序協同工作,其狀態圖如圖3 所示. 當總線被其他站點占用進行數據傳輸時,發送模塊處於Defer 狀態,如果此時數據準備好需要傳輸則啟動延時計數器,經過規定的最大延時時間後總線仍被占用則放棄當前幀的傳輸. 當總線空閑後則進入IPG狀態,經過最小幀間間隙時間自動進入空閑狀態IDLE 並等待數據傳輸,此時如果數據準備好並且數據的長度大於46 字節則按照前導碼、數據、校驗序列的順序進行數據幀的傳輸,否則按照前導碼、數據、數據填充、校驗序列的順序進行數據幀的傳輸;在傳輸過程中,如果遇到沖突則進入Jam 狀態,發送32 比特的阻塞信號加強沖突以保證網絡的各個站點都可以檢測到此次的沖突,如果此次沖突是後沖突則直接進入Defer狀態,並丟棄當前幀,否則進入Back狀態,隨機延時一段時間後重新爭用總線來傳輸當前幀.

圖3 發送控制狀態wish音響改裝機2. 3 接收模塊該模塊主要完成數據幀的接收, 即從物理層PHY芯片接收4比特半位元數據,將其轉化成以字節為單位的數據並存貯在接收數據緩沖區,結構框圖如圖4 所示.

圖4 接收模塊結構框圖圖4中的地址判斷子模塊用以檢查幀的目的地址字段是否與本站地址相匹配,如果不匹配,則說明不是發送給本站的而將它丟棄掉. 幀間隙計數器用以檢測接收到的數據幀與前一幀之間是否滿足最小幀間間隔的要求,如果不滿足則將它丟棄. 接收字節計數器用以存貯接收幀的字節長度,判斷接收幀長度是否滿足要求(在最小幀長度與最大幀長度之間) . CRC 生成電路與發送模塊一樣采用4 位數據線並行方式實現.接收控制狀態機是整個接收模塊的核心,負責管理各個功能子模塊,檢測總線及實現接收數據幀的時序,其狀態圖如圖5 所示. 通常接收模塊處於IDLE 狀態並監聽總線的狀態,當檢測到以太網幀的前導碼時自動進入SFD 狀態,此時如果接收到以太網數據幀的幀定界符,並且與前一個數據幀之間的時間間隔大於最小幀間間隙,則接收模塊進入數據接收狀態開始接收數據. 處於Data0 狀態時接收字節的低4 位,而處於Datal 狀態時接收字節的高4 位,並在Data0 狀態將接收到的完整字節數據存貯到接收數據緩沖區.如果接收的數據字節數超過允許的最大幀長度,則接收模塊進入Drop 狀態,此時丟棄後面的數據. 當全部數據傳輸完畢即總線處於空閑時,接收模塊重新處於IDLE 狀態,等待接收下一個數據幀.

圖5 接收控制狀態圖3 綜合與仿真本文采用Xilinx 公司的Spartan Ⅱ系列XC2S100PQ208芯片,整個設計全部采用Verilog HDL 硬件描述語言來實現,並在Foundation3. 1 的設計平臺上完成整個模塊的設計、綜合、仿真、映射及佈局佈線. 圖6為發送時序仿真的波形,從圖中可以看出,當傳輸過程中發生沖突時繼續發送32 比特的阻塞碼,然後隨機延時一段時間重新爭用介質以傳輸數據,這說明本模塊滿足瞭CSMA/ CD 協議.圖6 發送時序仿真波形4 結語本文介紹瞭一種簡易的車用喇叭品牌基於FPGA 的以太網MAC 子層協議的設計方法. 通過本模塊可以簡單方便地實現小型嵌入式系統的Internet 網絡接口,如果再結合基於FPGA 實現的TCP/ IP 協議棧及其他輔助功能模塊,不僅可以使小型嵌入式系統接入網絡更加簡單,而且系統的集成度、穩定性將進一步得到提高.來源:跳躍音符,活躍人間

lexus音響改裝20709F0643EE058D
arrow
arrow

    f80zd3asj 發表在 痞客邦 留言(0) 人氣()