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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論