《電子技術(shù)應用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設計應用 > 一種基于W5100的數(shù)據(jù)傳輸系統(tǒng)
一種基于W5100的數(shù)據(jù)傳輸系統(tǒng)
來源:電子技術(shù)應用2013年第9期
陳 實1,2,王 琪1,2,張鐵軍2,王東輝2,侯朝煥2
1.中國科學院大學,北京100049; 2.中國科學院聲學研究所,北京100190
摘要: 設計了一種基于TCP/IP通信協(xié)議、使用以太網(wǎng)控制器芯片W5100與ARM內(nèi)核芯片AT91SAM7SE實現(xiàn)的數(shù)據(jù)傳輸系統(tǒng)。介紹了系統(tǒng)的硬件設計、接口時序以及軟件流程。設計提出對W5100與AT91SAM7SE的硬件接口采用直接總線連接模式,軟件操作采用直接總線連接模式與間接總線連接模式相混合的方式,以達到高速傳輸?shù)哪康摹?
中圖分類號: TP3
文獻標識碼: A
文章編號: 0258-7998(2013)09-0054-03
A data transfer system based on W5100
Chen Shi1,2,Wang Qi1,2,Zhang Tiejun2,Wang Donghui2,Hou Chaohuan2
1.University of Chinese Academy of Sciences,Beijing 100049,China; 2.Institute of Acoustics,Chinese Academy of Sciences,Beijing 100190,China
Abstract: A data transfer system is introducesd in this paper,that is based on TCP/IP protocols and using Ethernet controller W5100 and AT91SAM7SE which combines an ARM core. This paper describes the system′s hardware design, interface timing as well as the software flow. In order to achieve high speed transmission, the interface between W5100 and AT91SAM7SE is direct bus interface mode, and the software operation is based on direct bus interface mode mixed with indirect bus interface mode.
Key words : W5100;TCP/IP;data transfer

    在諸多應用中[1]都需要對終端提供大量數(shù)據(jù)流[2]。使用數(shù)據(jù)傳輸系統(tǒng)進行傳輸能夠根據(jù)終端需求動態(tài)提供數(shù)據(jù),并且數(shù)據(jù)傳輸系統(tǒng)能夠針對不同終端的接口時序進行靈活調(diào)整[3]。本設計提出一種基于TCP/IP通信協(xié)議、使用以太網(wǎng)控制器芯片W5100ARM內(nèi)核芯片實現(xiàn)的數(shù)據(jù)傳輸系統(tǒng)。本系統(tǒng)能夠?qū)C上的文件數(shù)據(jù)連續(xù)地傳輸給終端,并且針對終端接口的多樣性特點,能夠通過簡單的編程進行調(diào)整,以完成相同的數(shù)據(jù)傳輸功能。本文針對終端具有數(shù)據(jù)緩沖隊列FIFO的情況闡述本系統(tǒng)的硬件設計、接口時序以及軟件流程。對于不同終端,本系統(tǒng)只需經(jīng)過少量的軟件修改就可達到數(shù)據(jù)傳輸?shù)哪康亍?br/>

1 以太網(wǎng)控制器芯片W5100
    以太網(wǎng)控制芯片W5100是WIZnet公司推出的一款單片網(wǎng)絡接口芯片[4]。W5100內(nèi)部集成了傳輸層、網(wǎng)絡層TCP/IP協(xié)議棧與數(shù)據(jù)鏈路層及介質(zhì)訪問子層MAC協(xié)議。這使得通過W5100進行以太網(wǎng)通信時,各層協(xié)議對設計者而言都是透明的。設計者不需要借助操作系統(tǒng),只需要通過W5100的地址線、數(shù)據(jù)線對其內(nèi)部寄存器進行簡單的讀寫訪問,就能靈活方便地控制W5100進行以太網(wǎng)通信。W5100還集成了物理層PHY并支持信號極性自適應,這使得在硬件設計中,只需要在W5100外部使用一個帶有網(wǎng)絡變壓器的RJ45座HR911103C,就可以實現(xiàn)其與PC通信。故本設計中選擇W5100實現(xiàn)以太網(wǎng)通信,既保證了接口簡單,又使得開發(fā)周期短。
    本設計中,對W5100供給3.3 V與1.8 V兩種電源電壓。為了保證信號完整性,降低干擾,兩種電源電壓分別劃分為數(shù)字網(wǎng)絡與模擬網(wǎng)絡,網(wǎng)絡之間使用電感隔離;其地平面也分為數(shù)字地與模擬地,網(wǎng)絡之間使用鐵心磁珠隔離。W5100使用直接總線連接模式,其15 bit地址線與8 bit數(shù)據(jù)線與ARM芯片的通用I/O連接;W5100的控制線/CS、/WR、/RD、/RESET也直接與ARM芯片的通用I/O連接。由此實現(xiàn)ARM芯片對W5100的控制。W5100的SPI接口中的SEN、SCLK、MISO接固定電壓數(shù)字0 V,/SCS接固定電壓數(shù)字3.3 V,MISO保持懸空,由此屏蔽SPI接口。
2 ARM內(nèi)核芯片AT91SAM7SE
    AT91SAM7SE是Atmel公司的一款基于ARM7內(nèi)核的處理器[5]。在本系統(tǒng)中,其作為MCU,完成對W5100一側(cè)的讀寫訪問,并完成對終端一側(cè)的數(shù)據(jù)轉(zhuǎn)發(fā)。AT91SAM7SE具有豐富的通用I/O管腳,能保證整個系統(tǒng)的靈活性。AT91SAM7SE使用 55.296 MHz作為主時鐘MCK、處理器時鐘PCK。
3 硬件設計與接口時序
3.1 硬件設計

    W5100與AT91SAM7SE在硬件設計中采用直接總線連接模式,可以同時兼容間接總線連接模式。這樣設計是為了能夠在連續(xù)訪問發(fā)送存儲器、接收存儲器時工作于間接總線模式,使用W5100的地址自增功能;并且在非連續(xù)訪問時工作于直接總線模式,減少讀寫時序,以提高傳輸速率。
    AT91SAM7SE與W5100之間的接口、AT91SAM7SE與終端之間的接口以及硬件設計的總體框圖如圖1所示。

3.2 AT91SAM7SE與W5100間接口時序
    當AT91SAM7SE在/RESET線上輸出低電平2 ?滋s及以上時,W5100被復位,其公共寄存器、各端口寄存器都恢復初始值。本設計中/CS始終同步于/WR和/RD選中W5100。/WR、/RD與DATA[7:0]、ADDR[14:2]、ADDR[1:0]構(gòu)成讀寫時序,完成對W5100片內(nèi)寄存器、存儲器的訪問,/WR與/RD同時只能有一個有效。W5100可以工作于兩種總線模式下。
3.2.1 間接總線模式
    當AT91SAM7SE連續(xù)訪問W5100發(fā)送存儲器、接收存儲器時,W5100工作在間接總線模式下,其地址線ADDR[14:2]穩(wěn)定輸出0。AT91SAM7SE首先在地址線ADDR[1:0]輸出01,選中W5100間接總線模式地址寄存器IDM_AR0;然后在數(shù)據(jù)線DATA[7:0]輸出需要訪問的W5100存儲器地址高7位AH,接著/WR與/CS輸出下降沿將AH寫入IDM_AR0;之后AT91SAM7SE再將需要訪問的W5100存儲器地址低8位AL以同樣方式寫入間接總線模式地址寄存器IDM_AR1;最后,通過/CS與/WR(或與/RD)連續(xù)輸出下降沿,連續(xù)訪問間接總線模式數(shù)據(jù)寄存器IDM_DR。間接總線模式地址寄存器IDM_AR0與IDM_AR1值的自增以及間接總線模式數(shù)據(jù)寄存器IDM_DR值的變化同步于/WR或/RD的下降沿。AT91S-
    AM7SE在間接總線模式下連續(xù)訪問W5100的存儲器時序如圖2、圖3所示。

3.2.2 直接總線模式
    當AT91SAM7SE訪問W5100模式寄存器、端口寄存器時,W5100工作在直接總線模式下,其15 bit地址線ADDR[14:0]直接選中各個寄存器。然后通過/CS與/WR(或與/RD)輸出下降沿實現(xiàn)訪問。
3.2.3 間接總線模式與直接總線模式對比
      訪問單一存儲器時,使用間接總線模式需要3個總線時序,使用直接總線模式只需要一個總線時序。連續(xù)訪問存儲器時,使用地址自增功能,能夠使得訪問一個地址平均花費大約一個總線時序。雖然在間接總線模式下使用地址自增功能時,平均訪問一個地址仍然不會花費少于一個總線時序,但是在連續(xù)訪問時,AT91SAM7SE不需要在其通用I/O上準備每一個需要訪問的W5100的存儲器地址,在連續(xù)訪問開始后ADDR[1:0]的值是固定為11,因此平均花費在一個總線時序上的指令條數(shù)有所減少。所以當AT91SAM7SE配置為W5100工作模式、端口模式來讀取和更新端口信息時,使用直接總線模式以減少總線時序次數(shù);當AT91SAM7SE讀取、寫入TCP數(shù)據(jù)段數(shù)據(jù)時,使用間接總線模式以減少總線時序中的平均指令數(shù)。
3.3 AT91SAM7SE與終端間接口時序
    AT91SAM7SE將從W5100接收存儲器中取回的TCP數(shù)據(jù)段數(shù)據(jù)先緩存在片內(nèi),再轉(zhuǎn)發(fā)給終端??紤]到本設計終端具有數(shù)據(jù)緩沖隊列FIFO,所以只使用RESET、CS、BLOCK、WR、DATA[31:0]信號線。當終端具有存儲器空間時,還需要使用ADDRESS信號線。根據(jù)終端接口的不同,可以對AT91SAM7SE編程,使其生成匹配的接口時序。由于選擇了ARM內(nèi)核的芯片作為MCU完成存儲轉(zhuǎn)發(fā)功能,所以能夠保證編程簡便,易于經(jīng)過少量修改而匹配各種終端的接口時序,使得代碼的重用性強。本設計中,RESET輸出高電平時清空FIFO;CS實現(xiàn)對終端的片選。當FIFO空時,BLOCK信號無效,指示AT91SAM7SE可以轉(zhuǎn)發(fā)數(shù)據(jù);當FIFO趨近于滿時,終端給出指示信號BLOCK,阻塞AT91SAM7SE,使其停止轉(zhuǎn)發(fā)數(shù)據(jù)。本設計中,AT91SAM7SE在WR的每一次上升沿將TCP數(shù)據(jù)段中的數(shù)據(jù)轉(zhuǎn)發(fā)到DATA[31:0]。由于AT91SAM7SE編程靈活,通用I/O管腳豐富,故可以重用于對各種終端進行數(shù)據(jù)傳輸。
4 軟件流程
    在本設計中,AT91SAM7SE作為W5100的控制芯片,控制其工作在TCP/IP協(xié)議下,并作為服務器模式端SERVER。而客戶模式端CLIENT由PC機充當,PC運行Linux操作系統(tǒng),使用套接字Socket編程。由于PC通過本系統(tǒng)向終端傳輸大量數(shù)據(jù)流,這些數(shù)據(jù)不經(jīng)過路由,獨享信道,所以不會出現(xiàn)路由擁塞而導致分組被丟棄的情況。因此,本設計簡化了關于分組超時的檢測,使用AT91SAM7SE查詢W5100端口狀態(tài)寄存器Sn_SR及其他端口寄存器的方式來獲知通信所處的狀態(tài),并使用寫端口命令寄存器Sn_CR的方式來控制通信進程。圖4描述了PC通過本系統(tǒng)向終端傳輸數(shù)據(jù)的流程。

    PC上的Socket程序非常簡單,只需要調(diào)用最基本的文件操作函數(shù)與Socket函數(shù)就能實現(xiàn)端口連接與文件傳輸。AT91SAM7SE上程序流程細節(jié)如下。
    (1)上電,復位:AT91SAM7SE開始執(zhí)行程序。
    (2)芯片初始化:配置AT91SAM7SE時鐘模塊、PIO模塊等。
    (3)配置W5100:配置W5100的公共寄存器,設置IP地址、子網(wǎng)掩碼、MAC地址等。
    (4)配置TCP端口:配置端口寄存器,使端口工作于TCP模式,設置端口號等。
    (5)等待建立連接:寫端口命令寄存器,使端口處于等待PC發(fā)起連接的狀態(tài)。
    (6)監(jiān)聽是否建立連接:輪詢端口狀態(tài)寄存器,循環(huán)等待端口與PC建立連接。
    (7)監(jiān)聽是否接收到TCP數(shù)據(jù)段:輪詢端口接收數(shù)據(jù)長度寄存器,循環(huán)等待W5100從PC接收到TCP數(shù)據(jù)段。
    (8)檢查是否為最末TCP數(shù)據(jù)段:查詢端口狀態(tài)寄存器,檢測當前狀態(tài),判斷其是否為最末TCP數(shù)據(jù)段。
    (9)緩存TCP數(shù)據(jù)段中數(shù)據(jù):訪問接收數(shù)據(jù)長度寄存器、端口讀指針寄存器等,計算數(shù)據(jù)讀取位置等參數(shù),將接收到的TCP數(shù)據(jù)段數(shù)據(jù)以1 B為單位緩存在片上。
    (10)轉(zhuǎn)發(fā)數(shù)據(jù):將緩存在AT91SAM7SE片上的數(shù)據(jù)以4 B為單位向終端FIFO轉(zhuǎn)發(fā)。
    (11)斷開連接,關閉TCP端口:寫端口命令寄存器,使端口關閉,斷開與PC的連接。
    其中步驟(9)需要訪問各寄存器,還需要通過間接總線模式數(shù)據(jù)寄存器連續(xù)訪問接收存儲器。本設計中采用直接總線模式和間接總線模式相配合的方式,完成對TCP數(shù)據(jù)段數(shù)據(jù)的讀取,步驟如下:
    ①在直接總線模式下訪問各寄存器。
    ②計算參數(shù),獲得TCP數(shù)據(jù)段數(shù)據(jù)在接收存儲器中的地址。
    ③切換至間接總線模式,開啟地址自增功能。
    ④連續(xù)讀取接收寄存器。
    ⑤切換回直接總線模式。
    ⑥訪問各寄存器,更新配置,繼續(xù)接收分組。
5 測試
    測試中,通過PC向本系統(tǒng)傳輸文件,再使用FPGA模擬終端FIFO的接口時序,同時將本系統(tǒng)傳輸至終端的數(shù)據(jù)輸出到邏輯分析儀。對比邏輯分析儀采樣信號與原始文件數(shù)據(jù)可以得出結(jié)論,本系統(tǒng)能夠?qū)崿F(xiàn)數(shù)據(jù)的準確傳輸。邏輯分析儀采樣結(jié)果如圖5所示。表1記錄了傳輸不同大小文件所用的時間與平均傳輸速率。兼顧系統(tǒng)的靈活性與性能,MCU工作在55.296 MHz的情況下,平均傳輸速率能夠達到2.7 Mb/s。

 

 

    本設計使用W5100與AT91SAM7SE實現(xiàn)了一種基于TCP/IP通信協(xié)議的數(shù)據(jù)傳輸系統(tǒng)。其硬件設計簡單,軟件編程靈活方便,可以適應不同的終端接口時序。整個系統(tǒng)具有集成度高、重用性強、適應性廣的特點。
參考文獻
[1] 蔣峰.W5100在遠程溫度采集系統(tǒng)中的應用[J].化工自動化及儀表,2011,38(2):214-217.
[2] 鄒依依,郭燦新,黃成軍,等.W5100在DSP遠程以太網(wǎng)數(shù)據(jù)通信系統(tǒng)中的應用[J].工業(yè)控制計算機,2008,21(8):20-21,23.
[3] 王炳義,劉爽,張偉,等.基于硬件協(xié)議棧W5100的圖像采集傳輸系統(tǒng)[J].電子技術(shù)應用,2009,35(3):92-93,96.
[4] WIZnet Co.,Inc.W5100 datasheet version 1.2.4[Z].2011.
[5] Atmel.AT91SAM ARM-based Flash MCU SAM7SE version 6222F[Z].2011.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。