基于FPGA的以太網(wǎng)MAC子層協(xié)議設計實現(xiàn)-設計應用_第1頁
基于FPGA的以太網(wǎng)MAC子層協(xié)議設計實現(xiàn)-設計應用_第2頁
基于FPGA的以太網(wǎng)MAC子層協(xié)議設計實現(xiàn)-設計應用_第3頁
基于FPGA的以太網(wǎng)MAC子層協(xié)議設計實現(xiàn)-設計應用_第4頁
基于FPGA的以太網(wǎng)MAC子層協(xié)議設計實現(xiàn)-設計應用_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

精品文檔-下載后可編輯基于FPGA的以太網(wǎng)MAC子層協(xié)議設計實現(xiàn)-設計應用摘要:本文介紹了基于現(xiàn)場可編程門陣列(FPGA)的以太網(wǎng)MAC子層協(xié)議的硬件實現(xiàn)方法.硬件結構上由控制模塊、發(fā)送模塊和接收模塊3個部分組成,發(fā)送模塊和接收模塊采用狀態(tài)機控制數(shù)據(jù)發(fā)送和接收的過程,完成數(shù)據(jù)的封裝、發(fā)送和接收功能.關鍵詞:嵌入式系統(tǒng);以太網(wǎng)MAC;現(xiàn)場可編程門陣列;硬件描述語言傳統(tǒng)以PC為中心的互聯(lián)網(wǎng)應用現(xiàn)已開始轉向以嵌入式設備為中心.IA(internetappliance)概念現(xiàn)在甚為流行,這表明互聯(lián)網(wǎng)應用進入了嵌入式互聯(lián)網(wǎng)的時代已經(jīng)來臨.據(jù)網(wǎng)絡預測,將來在互聯(lián)網(wǎng)上傳輸?shù)男畔⒅?有70%來自小型嵌入式系統(tǒng).因此,對嵌入式系統(tǒng)接入Internet網(wǎng)絡的研究是有必要的.目前有兩種方法可以實現(xiàn)單片機系統(tǒng)接入Internet.一種方法是利用NIC(網(wǎng)絡控制/網(wǎng)卡)實現(xiàn)網(wǎng)絡接口,由單片機來提供所需的網(wǎng)絡協(xié)議.另外一種方法是利用具有網(wǎng)絡協(xié)議棧結構的芯片和PHY(物理層的接收器)來實現(xiàn)網(wǎng)絡接口,主控制器只負責往協(xié)議棧結構芯片的某個寄存器里放上適當?shù)臄?shù)據(jù).美國SeikoInstrument公司生產的S7600A就是具有這種結構的芯片.與此同時,用FPGA實現(xiàn)單片機系統(tǒng)接入Internet的方法也日益受到人們的重視.FPGA是現(xiàn)場可編程門陣列的縮寫,是近年來發(fā)展迅速的大規(guī)??删幊唐骷?具有密度高,速度快,功耗小、使用方便等特點,在嵌入式系統(tǒng)設計中得到了廣泛的應用.以MCU為,采用FPGA設計實現(xiàn)外圍電路,不僅可以使設計的電子產品小型化、集成化和實現(xiàn)高可靠性,還大大縮短了設計周期,減少了設計費用,降低了設計風險.本文提出采用FPGA實現(xiàn)網(wǎng)絡協(xié)議棧,著重介紹以太網(wǎng)MAC子層協(xié)議的硬件實現(xiàn)方法.1以太網(wǎng)MAC子層協(xié)議IEEE802協(xié)議標準系列中,數(shù)據(jù)鏈路層包括邏輯鏈路控制(LLC)子層和媒體訪問控制(MAC)子層.其中MAC位于LLC和物理層之間,它使LLC適應于不同的媒體訪問技術和物理媒體.MAC單獨作為一個子層,就不會因為媒體訪問方法的改變而影響較高層次的協(xié)議.MAC由數(shù)據(jù)拆裝和媒體訪問管理兩個模塊組成,完成數(shù)據(jù)幀的封裝、解封、發(fā)送和接收功能.以太網(wǎng)數(shù)據(jù)幀封裝格式如表1所示,其中目的地址、源地址、長度/類型和數(shù)據(jù)4個字段由上一層協(xié)議模塊生成.傳送數(shù)據(jù)幀時,數(shù)據(jù)封裝模塊自動在待傳輸數(shù)據(jù)前面添加7個字節(jié)的前導碼和1個字節(jié)的定界符,并在數(shù)據(jù)傳送結束時加發(fā)4個字節(jié)的循環(huán)冗余校驗碼,如果數(shù)據(jù)長度小于46字節(jié),則會自動進行數(shù)據(jù)填充以達到要求的短長度.接收數(shù)據(jù)幀時,數(shù)據(jù)拆裝模塊將自動丟棄前導碼和定界符2個字段.媒體訪問管理模塊主要實現(xiàn)CSMA/CD(carriersensemultipleaccesswithcollisiondetection)協(xié)議.CSMA/CD是一種分布式介質訪問控制協(xié)議,使網(wǎng)中的多個站(節(jié)點)可以共享傳輸介質.發(fā)送數(shù)據(jù)幀時,節(jié)點首先進行載波監(jiān)聽,當介質空閑時開始發(fā)送幀.如果在傳輸過程中與其他節(jié)點產生沖突,則正在傳輸?shù)拿總€節(jié)點必須發(fā)出32比特大小的阻塞信號來加強沖突,以便通知總線上各個站點已發(fā)生沖突,然后隨機延時一段時間重新爭用介質,再重新傳送數(shù)據(jù)幀.2MAC子層協(xié)議的FPGA實現(xiàn)以太網(wǎng)MAC子層協(xié)議的硬件結構框圖如圖1所示,由控制模塊、發(fā)送模塊和接收模塊3個部分組成.由于小型嵌入式系統(tǒng)主要應用在集散控制系統(tǒng)中,信息交流多為“一問一答”式的半雙工通信模式,同時為了降低硬件資源的開銷,本模塊僅支持半雙工通信模式.圖1硬件結構框圖2.1控制模塊該模塊包含主機接口、寄存器、發(fā)送數(shù)據(jù)緩沖區(qū)及接收數(shù)據(jù)緩沖區(qū)4個部分.主機接口部分用以實現(xiàn)與MCU之間的數(shù)據(jù)交換,采用8位外部數(shù)據(jù)總線.寄存器主要用于功能參數(shù)的設置及狀態(tài)信息的存貯.發(fā)送數(shù)據(jù)緩沖區(qū)是主機與發(fā)送模塊之間的數(shù)據(jù)傳輸通道,接收數(shù)據(jù)緩沖區(qū)則是主機與接收模塊之間的數(shù)據(jù)傳輸通道.控制模塊的工作時鐘有兩種選擇方式,一種是直接由外部提供,另一種是外部時鐘通過FPGA片內的延遲鎖相環(huán)進行倍頻后供內部使用,用戶可以根據(jù)系統(tǒng)設計實際需要自由選擇.數(shù)據(jù)緩沖區(qū)(發(fā)送數(shù)據(jù)緩沖區(qū)和接收數(shù)據(jù)緩沖區(qū))用作發(fā)送與接收數(shù)據(jù)的緩沖,以使主機的傳輸速度與本模塊相匹配.發(fā)送數(shù)據(jù)時,主機先將待發(fā)送的數(shù)據(jù)幀寫入發(fā)送數(shù)據(jù)緩沖區(qū),然后由發(fā)送模塊將數(shù)據(jù)讀出.傳統(tǒng)意義上的數(shù)據(jù)緩沖區(qū)由一塊內部或外部RAM來實現(xiàn),但這樣需要設計實現(xiàn)一個復雜的控制狀態(tài)機來管理主機、發(fā)送模塊和接收模塊3個部分對RAM的讀寫.SpartanⅡ系列的FPGA內部提供了豐富的塊RAM資源,可以配置雙端口RAM.因此本文將發(fā)送緩沖區(qū)分成兩個獨立的部分,這樣每個數(shù)據(jù)緩沖區(qū)便可以由雙端口的RAM來實現(xiàn),大大簡化了設計,節(jié)省了硬件資源.2.2發(fā)送模塊該模塊主要實現(xiàn)CSMA/CD協(xié)議,完成數(shù)據(jù)幀的傳送,即以字節(jié)為單位從發(fā)送緩沖區(qū)讀取數(shù)據(jù),并將其轉換成4比特的半位元傳送給以太網(wǎng)的物理層PHY芯片,結構框圖如圖2所示.重發(fā)計數(shù)器用以存貯當前幀成功傳輸時的發(fā)送次數(shù).幀間隙計數(shù)器用以保證相鄰兩個幀之間保持一定的傳輸時間間隔.沖突窗計數(shù)器用以判斷當前所發(fā)生的沖突是否為后沖突(latecollision).延時計數(shù)器用以存貯啟動傳輸后等待總線空閑的時間,當超過一定時間后將放棄當前幀的傳輸.這4個功能子模塊都由1個計數(shù)器和1個比較器來實現(xiàn).退避計數(shù)器模塊用以實現(xiàn)二進制指數(shù)退避算法,包括一個偽隨機數(shù)生成器.CRC生成電路用以實現(xiàn)數(shù)據(jù)幀的校驗碼序列,采用4位數(shù)據(jù)線并行方式實現(xiàn).圖2發(fā)送模塊結構框圖發(fā)送控制狀態(tài)機是整個發(fā)送模塊的,用以管理各個功能子模塊,并使它們按照一定的時序協(xié)同工作,其狀態(tài)圖如圖3所示.當總線被其他站點占用進行數(shù)據(jù)傳輸時,發(fā)送模塊處于Defer狀態(tài),如果此時數(shù)據(jù)準備好需要傳輸則啟動延時計數(shù)器,經(jīng)過規(guī)定的延時時間后總線仍被占用則放棄當前幀的傳輸.當總線空閑后則進入IPG狀態(tài),經(jīng)過幀間間隙時間自動進入空閑狀態(tài)IDLE并等待數(shù)據(jù)傳輸,此時如果數(shù)據(jù)準備好并且數(shù)據(jù)的長度大于46字節(jié)則按照前導碼、數(shù)據(jù)、校驗序列的順序進行數(shù)據(jù)幀的傳輸,否則按照前導碼、數(shù)據(jù)、數(shù)據(jù)填充、校驗序列的順序進行數(shù)據(jù)幀的傳輸;在傳輸過程中,如果遇到?jīng)_突則進入Jam狀態(tài),發(fā)送32比特的阻塞信號加強沖突以保證網(wǎng)絡的各個站點都可以檢測到此次的沖突,如果此次沖突是后沖突則直接進入Defer狀態(tài),并丟棄當前幀,否則進入Back狀態(tài),隨機延時一段時間后重新爭用總線來傳輸當前幀.圖3發(fā)送控制狀態(tài)機2.3接收模塊該模塊主要完成數(shù)據(jù)幀的接收,即從物理層PHY芯片接收4比特半位元數(shù)據(jù),將其轉化成以字節(jié)為單位的數(shù)據(jù)并存貯在接收數(shù)據(jù)緩沖區(qū),結構框圖如圖4所示.圖4接收模塊結構框圖圖4中的地址判斷子模塊用以檢查幀的目的地址字段是否與本站地址相匹配,如果不匹配,則說明不是發(fā)送給本站的而將它丟棄掉.幀間隙計數(shù)器用以檢測接收到的數(shù)據(jù)幀與前一幀之間是否滿足幀間間隔的要求,如果不滿足則將它丟棄.接收字節(jié)計數(shù)器用以存貯接收幀的字節(jié)長度,判斷接收幀長度是否滿足要求(在幀長度與幀長度之間).CRC生成電路與發(fā)送模塊一樣采用4位數(shù)據(jù)線并行方式實現(xiàn).接收控制狀態(tài)機是整個接收模塊的,負責管理各個功能子模塊,檢測總線及實現(xiàn)接收數(shù)據(jù)幀的時序,其狀態(tài)圖如圖5所示.通常接收模塊處于IDLE狀態(tài)并監(jiān)聽總線的狀態(tài),當檢測到以太網(wǎng)幀的前導碼時自動進入SFD狀態(tài),此時如果接收到以太網(wǎng)數(shù)據(jù)幀的幀定界符,并且與前一個數(shù)據(jù)幀之間的時間間隔大于幀間間隙,則接收模塊進入數(shù)據(jù)接收狀態(tài)開始接收數(shù)據(jù).處于Data0狀態(tài)時接收字節(jié)的低4位,而處于Datal狀態(tài)時接收字節(jié)的高4位,并在Data0狀態(tài)將接收到的完整字節(jié)數(shù)據(jù)存貯到接收數(shù)據(jù)緩沖區(qū).如果接收的數(shù)據(jù)字節(jié)數(shù)超過允許的幀長度,則接收模塊進入Drop狀態(tài),此時丟棄后面的數(shù)據(jù).當全部數(shù)據(jù)傳輸完畢即總線處于空閑時,接收模塊重新處于IDLE狀態(tài),等待接收下一個數(shù)據(jù)幀.圖5接收控制狀態(tài)圖3綜合與仿真本文采用Xilinx公司的SpartanⅡ系列XC2S100PQ208芯片,整個設計全部采用VerilogHDL硬件描述語言來實現(xiàn),并在Foundation3.1的設計平臺上完成整個模塊的設計、綜合、仿真、映射及布局布線.圖6為發(fā)送時序仿真的波形,從圖中可以看出,當傳輸過程中發(fā)生沖突時繼續(xù)發(fā)送32比特的阻塞碼,然后隨機延時一段時間重新爭用介質以傳輸數(shù)據(jù),

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論