FPGA控制DM9000A進(jìn)行以太網(wǎng)數(shù)據(jù)收發(fā)的Verilog實(shí)現(xiàn)_第1頁(yè)
FPGA控制DM9000A進(jìn)行以太網(wǎng)數(shù)據(jù)收發(fā)的Verilog實(shí)現(xiàn)_第2頁(yè)
FPGA控制DM9000A進(jìn)行以太網(wǎng)數(shù)據(jù)收發(fā)的Verilog實(shí)現(xiàn)_第3頁(yè)
FPGA控制DM9000A進(jìn)行以太網(wǎng)數(shù)據(jù)收發(fā)的Verilog實(shí)現(xiàn)_第4頁(yè)
FPGA控制DM9000A進(jìn)行以太網(wǎng)數(shù)據(jù)收發(fā)的Verilog實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Verilog實(shí)現(xiàn)FPGA控制DM9000A進(jìn)行以太網(wǎng)數(shù)據(jù)收發(fā)的本文為實(shí)現(xiàn)高速數(shù)據(jù)的實(shí)時(shí)遠(yuǎn)程傳輸處理川出了采用FPGA直接控制DM9000A進(jìn)行以太網(wǎng)數(shù)據(jù)收發(fā)的設(shè)計(jì)思路,實(shí)現(xiàn)了一種低成本、低功耗和高速率的網(wǎng)絡(luò)傳輸功能,最高傳輸速率可達(dá)100Mbps。DM9000A簡(jiǎn)介主要特點(diǎn)DM9000A實(shí)現(xiàn)以太網(wǎng)媒體介質(zhì)訪問層(MAC)和物理層(PHY)的功能,包括MAC數(shù)據(jù)幀的組裝叮分與收發(fā)、地址識(shí)別、CRC編碼口校驗(yàn)、MLT-3編碼器、接收噪聲抑制、輸出脈沖成形、超時(shí)重傳、鏈路完整性測(cè)試、信號(hào)極性檢測(cè)與糾正等。工作原理DM9000A可以和微處理器以8位或16位的總線方式連接,并可根據(jù)需要以單工或全雙工等

2、模式運(yùn)行。在系統(tǒng)上電時(shí),處理器通過總線配置DM9000A內(nèi)的網(wǎng)絡(luò)控制寄存器(NCR)、中斷寄存器(ISR)等,以完成DM9000A的初始化。隨后,DM9000A進(jìn)人數(shù)據(jù)收發(fā)等待狀態(tài)。當(dāng)處理器要向以太網(wǎng)發(fā)送數(shù)據(jù)幀時(shí),先將數(shù)據(jù)打包成UDP或IP數(shù)據(jù)包,并通過8位或16位總線逐字節(jié)發(fā)送到DM9000A的數(shù)據(jù)發(fā)送緩存中,然后將數(shù)據(jù)長(zhǎng)度等信息填充到DM9000A的相應(yīng)寄存器內(nèi),隨后發(fā)送使能命令,DM9000A將緩存的數(shù)據(jù)和數(shù)據(jù)幀信息進(jìn)行MAC組幀,并發(fā)送出去。當(dāng)DM9000A接收到外部網(wǎng)絡(luò)送來的以太網(wǎng)數(shù)據(jù)時(shí),首先檢測(cè)數(shù)據(jù)幀的合法性,如果幀頭標(biāo)志有誤或存在CRC校驗(yàn)錯(cuò)誤,則將該幀數(shù)據(jù)丟棄,否則將數(shù)據(jù)幀緩存

3、到內(nèi)部RAM,并通過中斷標(biāo)志位通知處理器,處理器收到中斷后將DM9000A接收RAM的數(shù)據(jù)讀出進(jìn)行處理。DM9000A自動(dòng)檢測(cè)網(wǎng)絡(luò)連接情況,根據(jù)網(wǎng)速設(shè)定內(nèi)部的數(shù)據(jù)收發(fā)速率是10Mbps或100Mbps。同時(shí),DM9000A還能根據(jù)RJ45接口是采用對(duì)等還是交叉連接方式而改變數(shù)據(jù)收發(fā)引腳的方向,因此,無(wú)論外部網(wǎng)線采用對(duì)等還是交叉方式,系統(tǒng)均能正常通信?;贔PGA和DM9000A的網(wǎng)絡(luò)接口設(shè)計(jì)與實(shí)現(xiàn)下面給出DM9000A與FPGA的硬件設(shè)計(jì)和軟件配置方法。FPGA啟動(dòng)以太網(wǎng)發(fā)送程序,將解調(diào)數(shù)據(jù)發(fā)送到DM9000A,完成數(shù)據(jù)發(fā)送過程。在接收方向,網(wǎng)絡(luò)工作站把控制指令按照一定的幀格式組幀發(fā)送到以太網(wǎng)

4、,DM9000A接收到發(fā)給自己的以太網(wǎng)幀并通知FPGA啟動(dòng)以太網(wǎng)接收程序,F(xiàn)PGA將相應(yīng)的數(shù)據(jù)從DM9000A的接收FIFO讀出。與FPGA的數(shù)據(jù)接口和控制接口DM9000A的外部總線符合ISA標(biāo)準(zhǔn)。可通過ISA總線直接與FPGA無(wú)縫連接。其硬件連接原理如圖1所示。A肚JWWkPft*4N-SD0-I5c2SD0-I5CS#l1/CS#譚射-IDKIOW|JrOVfJrCMBV-CMDKESkTrf;RESET#I.N?*INT廖I與FPGA揍口DM9000A的FPGA控制初始化模塊DM9000A正常工作需要在上電后對(duì)內(nèi)部寄存器進(jìn)行初始化,該過程通過FPGA對(duì)DM9000A外部控制總線和數(shù)據(jù)總

5、線的讀寫操作完成。具體流程如下所示:激活PHY設(shè)置GPR(REG_1F)CEPIO0bit0=0;復(fù)位后,DM9000A恢復(fù)默認(rèn)的休眠狀態(tài),以降低功耗,因此需要首先喚醒PHY。進(jìn)行兩次軟復(fù)位,步驟如下:設(shè)置NCR(REG_00)bit2:0=011,至少保持20;清除NCR(REG_00)bit2:0=000;設(shè)置NCR(REG_00)bit2:0=011,至少保持20;清除NCR(REG_00)bit2:0=000;配置NCR寄存器;設(shè)置NCR(REG_00)bit2:1=00;配置為正常模式。通過改變?cè)摷拇嫫骺梢赃x擇設(shè)置內(nèi)部或者外部PHY、全雙工或者半雙工模式、使能喚醒事件等網(wǎng)絡(luò)操作。清除

6、發(fā)送狀態(tài);設(shè)置NSR(REG_01)bit5=1bit3=1bit2=1;設(shè)置IMR寄存器(REG_FF)PARbit7=1,以肩用RX/TXFIFOSRAM讀/寫地址指針自動(dòng)返回功能;通過IMR寄存器(REG_FF)PRMbit0/PTMbit1,對(duì)RX/TX中斷使能。如果需要在一個(gè)數(shù)據(jù)幀發(fā)送完后產(chǎn)生一個(gè)中斷,就應(yīng)該將PTMbit1置1,如果需要在接收到一幀新數(shù)據(jù)時(shí)產(chǎn)生一個(gè)中斷,就應(yīng)該將PRMbit1置1;設(shè)置RCR寄存器,使能數(shù)據(jù)接收功能。通過以上步驟,可以通過LED指示燈觀測(cè)到DM9000A是否已成功初始化。發(fā)送模塊DM9000A中的發(fā)送緩沖區(qū)可以同時(shí)存儲(chǔ)兩幀數(shù)據(jù),可以按照先后順序命名為

7、幀I和幀II。DM9000A上電初始化后,發(fā)送緩存區(qū)的起始地址是00H,當(dāng)前數(shù)據(jù)幀編號(hào)為幀I。兩幀數(shù)據(jù)的狀態(tài)控制字分別記錄在DM9000A的狀態(tài)寄存器03H和04H中。發(fā)送過程如下:首先,FPGA利用寫操作寄存器MWCMD(REG_F8)向DM9000A的發(fā)送緩存區(qū)中寫入發(fā)送數(shù)據(jù)幀,即需要先寫入6字節(jié)的目的MAC地址,再寫入6字節(jié)的源MAC地址,最后再寫入發(fā)送數(shù)據(jù)。隨后,F(xiàn)PGA利用寫操作寄存器MWCMD(REG_F8)將數(shù)據(jù)幀長(zhǎng)度寫入寄存器FCH和FDH,數(shù)據(jù)長(zhǎng)度為16位,將高8位寫入寄存器FCH,低8位寫入寄存器FDH。最后,F(xiàn)PGA將發(fā)送控制寄存器TCR(REG_02)的bit1置為高電

8、平,向DM9000A發(fā)出發(fā)送數(shù)據(jù)指令。DM9000A會(huì)自動(dòng)做一些處理才將數(shù)據(jù)發(fā)往以太網(wǎng),這包括:插入報(bào)頭和幀起始分隔符;插入來自上層協(xié)議的數(shù)據(jù),如果數(shù)據(jù)量小于64字節(jié),則自動(dòng)補(bǔ)齊64字節(jié);根據(jù)目標(biāo)地址、源地址、長(zhǎng)度/類型和數(shù)據(jù)產(chǎn)牛CRC校驗(yàn)序列,并插入校驗(yàn)序列位。這些處理都無(wú)需FPGA干預(yù)。處理完畢后,DM9000A即開始發(fā)送幀I,在幀I發(fā)送的同時(shí),幀II的數(shù)據(jù)即可寫入發(fā)送緩存區(qū)。在幀I發(fā)送完后,將幀II的數(shù)據(jù)長(zhǎng)度寫入寄存器FCH和FDH,最后將發(fā)送控制寄存器NSR(REG_01)的bit1置為高電平,即可開始幀II的發(fā)送。依此類推,下面發(fā)送的幀將會(huì)繼續(xù)編號(hào)為幀I、幀II、幀I、幀II按照同樣

9、的方式發(fā)送。如果FPGA將中斷屏蔽寄存器IMR(REG_FF)的bit1置為高電平,那么發(fā)送完畢后,DM9000A將會(huì)產(chǎn)生一個(gè)指示發(fā)送完成的中斷信號(hào)。在發(fā)送過程中,F(xiàn)PGA可以查詢寄存器標(biāo)志位寄存器NSR(REG_01)中的TX1ENDbit2或者TX2ENDbit3,得到數(shù)據(jù)幀的發(fā)送狀態(tài)。發(fā)送流程,寄存器ISR中的PTS標(biāo)志位是發(fā)送中斷標(biāo)志位,當(dāng)一幀數(shù)據(jù)發(fā)送完畢,PTS=0,FPCA檢測(cè)到該標(biāo)志后,應(yīng)清除標(biāo)志位以便發(fā)送新的數(shù)據(jù)幀。這里需要注意的是,向FC、FD所寫的幀長(zhǎng)度應(yīng)該包含目的MAC地址段、源MAC地址段和有效數(shù)據(jù)的總長(zhǎng)度。接收模塊DM9000A中的接收緩存區(qū)是一個(gè)環(huán)形結(jié)構(gòu),初始化后的

10、起始地址為0C00H,每幀數(shù)據(jù)都有4字節(jié)長(zhǎng)的首部,然后是有效數(shù)據(jù)和CRC校驗(yàn)序列。首部4字節(jié)依次是01H、狀態(tài)、長(zhǎng)度低字節(jié)和長(zhǎng)度高字節(jié)。首部4字節(jié)含義如下:第一個(gè)字節(jié)用來檢測(cè)接收緩存區(qū)中是否有數(shù)據(jù),如果這個(gè)字節(jié)是01H,表明接收到了數(shù)據(jù);如果為00H,則說明沒有數(shù)據(jù)。但是,如果第一個(gè)字節(jié)既不是01H,也不是00H,DM9000A就必須作一次軟復(fù)位來從這種異常狀態(tài)中恢復(fù)。第二個(gè)字節(jié)存儲(chǔ)著以太網(wǎng)幀狀態(tài),由此可判斷所接收幀是否正確。第三和第四字節(jié)存儲(chǔ)著以太網(wǎng)幀長(zhǎng)度。后續(xù)的字節(jié)就是有效數(shù)據(jù)。接收過程如下:查看中斷狀態(tài)寄存器,如果接收到新數(shù)據(jù),寄存器ISR的PRS位將被置為0;如果檢測(cè)到PRS=O,清除PRS,FPGA開始讀接收緩存區(qū)數(shù)據(jù)。如果第一字節(jié)是01H,則說明有數(shù)據(jù),00H說明無(wú)數(shù)據(jù),否則要進(jìn)行復(fù)位;根據(jù)獲取的長(zhǎng)度信息,判斷是否讀完一幀,如果讀完,接著讀下一幀

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論