新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于W3150A+的虛擬儀器通用以太網(wǎng)接口設(shè)計(jì)

基于W3150A+的虛擬儀器通用以太網(wǎng)接口設(shè)計(jì)

作者: 時(shí)間:2014-12-02 來(lái)源:網(wǎng)絡(luò) 收藏

  3 數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)過(guò)程

本文引用地址:http://butianyuan.cn/article/266268.htm

  通過(guò)控制器對(duì)寄存器進(jìn)行讀寫訪問(wèn)操作,就可以進(jìn)行網(wǎng)絡(luò)連接。下面介紹具體的操作過(guò)程。

  首先應(yīng)進(jìn)行初始化。初始化設(shè)置包括基本設(shè)置、網(wǎng)絡(luò)信息設(shè)置,端口存儲(chǔ)器信息設(shè)置等,設(shè)置完后就可進(jìn)行數(shù)據(jù)傳輸。數(shù)據(jù)傳輸可以

  采用TCP、UDP、IP_RAW和MAC_RAW模式進(jìn)行,并可在端口n模式寄存器(Sn_MR)的協(xié)議類型中選擇通信模式。其中,基本設(shè)置包括模式寄存器(MR)、中斷屏蔽寄存器(SIMR)、重發(fā)時(shí)間寄存器(RTR)、重發(fā)計(jì)數(shù)寄存器(RGR)等;設(shè)置網(wǎng)絡(luò)信息包括設(shè)定網(wǎng)關(guān)(GAR)、設(shè)定源硬件地址(SHAR)、設(shè)定子網(wǎng)掩碼(SUBR)、設(shè)定源IP地址(SIPR)等;而設(shè)置端口存儲(chǔ)器信息則主要是設(shè)定發(fā)送緩沖區(qū)和接收緩沖區(qū)的大小分配,具體可通過(guò)設(shè)置RMSR、TMSR寄存器實(shí)現(xiàn)。

  本系統(tǒng)在FPGA芯片EPM570GT100C4的基礎(chǔ)上可利用軟件Quartus II來(lái)開發(fā)邏輯控制功能,從而實(shí)現(xiàn)對(duì)的控制。其主要端口如下:

  nrst:復(fù)位輸入鍵,低電平有效;

  clk:時(shí)鐘輸入;

  nwrst:復(fù)位輸出,可復(fù)位和RTL8201;

  nwr:對(duì)W3150A+寫使能信號(hào),低電平有效;

  nrd:對(duì)W3150A+讀使能信號(hào),低電平有效;

  ncs:W3150A+片選信號(hào),低電平有效;

  address:15位地址信號(hào);

  data:8位數(shù)據(jù)信號(hào);

  本接口通信設(shè)計(jì)采用的是UDP通信方式,其通信流程圖如圖5所示。

  

 

  端口初始化主要是對(duì)端口進(jìn)行初始化,包括設(shè)置UDP模式、設(shè)置端口號(hào),設(shè)置OPEN命令;通過(guò)Sn_RX_RSR寄存器的值可檢測(cè)是否收到數(shù)

  據(jù),若非零,即進(jìn)入數(shù)據(jù)接收處理;接收處理時(shí),首先讀取Sn_RX_RSR寄存器的值,即接收數(shù)據(jù)字節(jié)數(shù),然后計(jì)算偏址和實(shí)際物理地址,再根

  據(jù)物理地址讀取數(shù)據(jù)。在讀取數(shù)據(jù)過(guò)程中,如果物理地址到達(dá)該端口設(shè)定的高限地址,則先讀高限地址的數(shù)據(jù),然后將物理地址改為基地址,然后再?gòu)幕刂防^續(xù)讀取剩余的數(shù)據(jù)。讀完所有的數(shù)據(jù)后,可將Sn_RX_RR的值加上讀取的數(shù)據(jù)長(zhǎng)度,然后寫入sn_RX_BASE,最后再向端口n的指令寄存器寫入RECV命令。

  發(fā)送數(shù)據(jù)?/發(fā)送處理的實(shí)現(xiàn)過(guò)程是首先讀取S_TX_FSR寄存器的值以便能使用發(fā)送數(shù)據(jù)空間的大小來(lái)計(jì)算偏址和實(shí)際物理地址,然后再?gòu)?/p>

  物理地址寫入要發(fā)送的數(shù)據(jù)。在發(fā)送數(shù)據(jù)過(guò)程中,如果物理地址已到達(dá)該端口設(shè)定的高限地址,則先將數(shù)據(jù)寫入高限地址,然后再將物理地

  址改為基地址,接著從基地址繼續(xù)寫入數(shù)據(jù)。寫完所有的數(shù)據(jù)后,再將Sn_TX_WR的值加上發(fā)送的數(shù)據(jù)長(zhǎng)度,然后寫入Sn_TX_BASE,最后向端

  口n的指令寄存器寫入SEND命令。

  發(fā)送完成的確定可在發(fā)送(SEND)命令后,通過(guò)檢測(cè)Sn_CR的值來(lái)判斷數(shù)據(jù)是否全部發(fā)送完成。

  當(dāng)遠(yuǎn)程對(duì)端不存在或數(shù)據(jù)傳輸不正常時(shí),將產(chǎn)生超時(shí)錯(cuò)誤。此次可以通過(guò)對(duì)Sn_IR(TIMEOUT bit)檢測(cè)來(lái)判斷是否超時(shí)。

  當(dāng)操作全部完成時(shí),應(yīng)關(guān)閉窗口,即將Sn_CR寄存器置為CLOSE。

  4 結(jié)束語(yǔ)

  本文介紹了接口的設(shè)計(jì)及其數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)過(guò)程。利用本文的方法可以使接口正常運(yùn)行,故可為后續(xù)的開發(fā)奠定基礎(chǔ)。事實(shí)上,本方法已經(jīng)過(guò)多次試驗(yàn)證明:完全滿足工程需要。

tcp/ip相關(guān)文章:tcp/ip是什么


存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理



上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉