<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > FPGA通過(guò)以太網(wǎng)與PC機通信完整方案

FPGA通過(guò)以太網(wǎng)與PC機通信完整方案

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

本文引用地址:http://dyxdggzs.com/article/201706/348699.htm

一、簡(jiǎn)介

使用以太網(wǎng)接口實(shí)現,相對于串口而言,具有更高的傳輸速度。采用以太網(wǎng)接口的目的在于,在一定技術(shù)要求下,實(shí)現機和的實(shí)時(shí)數據傳輸。從而可以借助機強大的計算能力,降低的運算負擔。

成都浩然電子有限公司開(kāi)發(fā)的網(wǎng)絡(luò )模塊HS-NM5300A,作為實(shí)現以太網(wǎng)的主要元件。模塊以韓國Wiznet公司開(kāi)發(fā)為關(guān)鍵芯片。模塊一端為RJ45,通過(guò)網(wǎng)絡(luò )交叉線(xiàn)與PC機相連;另一端為外部總線(xiàn),與FPGA的IO相連。模塊內嵌10BaseT/100BaseTX的以太網(wǎng)物理層,支持自動(dòng)握手功能,支持固件TCP/IP協(xié)議,理想速率可達到50Mbps。

接收PC機發(fā)來(lái)的數據包,進(jìn)行協(xié)議解析,并將傳輸的數據保存在其內部寄存器中,或者將寄存器內的數據打包封裝發(fā)送到以太網(wǎng)上。FPGA通過(guò)外部總線(xiàn),訪(fǎng)問(wèn)的寄存器,從而對W5300A進(jìn)行配置、查詢(xún)數據包是否到來(lái)、收取/發(fā)送通信數據等等。

二、FPGA與W5300A的硬件連接

FPGA與W5300A的外部總線(xiàn)連接如下圖所示(ref:W5300_v1.2.2_english,115-115)。

FPGA和W5300的連線(xiàn),我們稱(chēng)之為外部總線(xiàn)。FPGA為外部總線(xiàn)的主機,W5300為從機。通過(guò)外部總線(xiàn),可以實(shí)現FPGA對W5300的讀/寫(xiě)。圖中DATA為十六位數據線(xiàn),ADDR為10位地址線(xiàn),WR為寫(xiě)使能,RD為讀使能,CS為片選使能,INT為中斷請求。

三、外部總線(xiàn)的工作時(shí)序

要使W5300正確讀入/輸出數據,外部總線(xiàn)上各信號電平應滿(mǎn)足一定的時(shí)序要求。讀時(shí)序如下圖所示(ref:P120-122):

圖中PLL_CLK為W5300A的內部時(shí)鐘,頻率為15OMHz。

四、FPGA程序實(shí)現

(1)FPGA網(wǎng)口通信模塊的頂層結構如下圖所示:

BusDriver是核心模塊,驅動(dòng)外部總線(xiàn)和RX_FIFO的寫(xiě)使能以及TX_FIFO的讀使能。RX_FIFO和TX_FIFO是兩個(gè)16位的先進(jìn)先出存儲器。在FPGA內部,可以通過(guò)讀取RX_FIFO的數據,寫(xiě)TX_FIFO實(shí)現與以太網(wǎng)的數據交換。

(2)接口定義

引腳名稱(chēng)

IN/

OUT

說(shuō)明

有效狀態(tài)

位置

Enet_ADDR

OUT

網(wǎng)絡(luò )芯片總線(xiàn)的地址位

Enet_BRDY

IN

Enet_CSn

OUT

網(wǎng)絡(luò )芯片總線(xiàn)的片選

Enet_DATA

INOUT

網(wǎng)絡(luò )芯片總線(xiàn)的數據位,16位

Enet_INTn

IN

網(wǎng)絡(luò )芯片總線(xiàn)的中斷位

Enet_L_LINK

IN

網(wǎng)絡(luò )電氣連接位

Enet_RDn

OUT

網(wǎng)絡(luò )芯片總線(xiàn)的讀使能

Enet_RST

OUT

網(wǎng)絡(luò )芯片硬件復位

Enet_WRn

OUT

網(wǎng)絡(luò )芯片總線(xiàn)的寫(xiě)使能

RESET

IN

Bus_fifo模塊的初始化,包括總線(xiàn)模塊和FIFO

rxfifo_dout

OUT

RX_FIFO的數據輸出,16位

rxfifo_rd_en

IN

RX_FIFO的讀使能,如果在rxfifo_empty_p為1,有可能出現錯誤。

rxfifo_empty_p

OUT

當RX_FIFO為空時(shí),輸出高電位

rxfifo_valid

OUT

在rxfifo_rd_en置1后一個(gè)fifo_clk置1,標示RX_FIFO輸出數據有效。

txfifo_din

IN

TX_FIFO的數據輸入,16位

txfifo_wr_en

IN

TX_FIFO的數據寫(xiě)使能

txfifo_full

OUT

當TX_FIFO滿(mǎn)時(shí),輸出高電位

txfifo_valid

OUT

TX_FIFO數據輸出有效位

fifo_clk

IN

RX_FIFO的讀時(shí)鐘和TX_FIFO的寫(xiě)時(shí)鐘,上升沿從FIFO中讀取或寫(xiě)入數據。10M

CLK

IN

bus_driver的時(shí)鐘,RX_FIFO的寫(xiě)時(shí)鐘和TX_FIFO的讀時(shí)鐘。100M

注:表中第五列“位置”,標示該信號線(xiàn)應連接至FPGA內部信號或者FPGA外部信號。

(3)TCP工作模式

PC機與W5300A通信采用TCP協(xié)議。對于TCP模式,通信的一方根據IP地址和端口號與對端建立SOCKET連接。再通過(guò)指定的SOCKET發(fā)送和接收數據。建立SOCKET的連接有兩種方式:“TCP服務(wù)器”和“TCP客戶(hù)端”。區別在于誰(shuí)首先發(fā)送連接請求(SYS數據包)。“TCP服務(wù)器”等待對端的連接請求,當收到連接請求時(shí)建立SOCKET連接(被動(dòng)打開(kāi))。“TCP客戶(hù)端”主動(dòng)發(fā)出連接請求,與對端建立連接(主動(dòng)打開(kāi))。出于方便考慮,由PC端發(fā)起連接,設定PC端為T(mén)CP客戶(hù)端,W5300A為T(mén)CP服務(wù)端。通信流程如下圖所示(ref:90)。

圖中的LISTEN、ESTALISHED、CLOSED為對應SOCKET的狀態(tài)。對W5300A的SOCKET正確地初始化(OPEN)后,SOCKET處于LISTEN狀態(tài),對網(wǎng)絡(luò )進(jìn)行偵聽(tīng)。當收到客戶(hù)端發(fā)來(lái)的連接請求(SYS數據包),變?yōu)镋STABLISHED狀態(tài),此時(shí)客戶(hù)端和服務(wù)器可以進(jìn)行數據通信。當服務(wù)器斷開(kāi)連接或者收到客戶(hù)端發(fā)來(lái)的斷開(kāi)請求(FIN數據包),W5300A相應的SOCKET狀態(tài)變?yōu)镃LOSED。服務(wù)器SOCKET更為詳細的狀態(tài)轉換過(guò)程可以參考W5300A手冊77頁(yè)。

(4)busdriver模塊的工作流程

busdriver通過(guò)外部總線(xiàn)對網(wǎng)絡(luò )芯片進(jìn)行復位和數據交換。通過(guò)訪(fǎng)問(wèn)W5300A的寄存器,實(shí)現網(wǎng)絡(luò )芯片的配置、監控、數據收/發(fā)。同時(shí),busdriver監視FIFO,如果RX_FIFO則暫緩收數;如果TX_FIFO不空則發(fā)送數據。Busdriver的工作流程如下圖所示。

圖中,重置芯片是指:對芯片硬件復位、軟件復位;基本配置包括:配置 W5300A的MAC地址、IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)地址,分配W5300A的存儲空間,中斷設置等等。中斷服務(wù)程序主要是讀取芯片的中斷寄存器,獲取中斷類(lèi)型,并復位中斷寄存器。值得注意的是,上圖所示的流程是查詢(xún)方式而不是中斷方式。啟動(dòng)SOCKET的程序主要是:設置SOCKET端口號,工作模式(TCP服務(wù)器端),打開(kāi)SOCKET、開(kāi)始偵聽(tīng)等等。

(5)以太網(wǎng)通信的程序實(shí)現

考慮到處理器是FPGA,采用VHDL語(yǔ)言描述圖中所示流程。與C語(yǔ)言順序為執行不同,VHDL基于硬件結構、并發(fā)執行。圖中用C語(yǔ)言可以很方便地描述出來(lái),但是要在FPGA里面實(shí)現,則需要靈活運用狀態(tài)機以控制其流程,且要盡力避免競爭和險象。限于正文篇幅,源程序在附錄中給出。



關(guān)鍵詞: W5300A 通信 FPGA PC

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>