文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2013)09-0054-03
在諸多應(yīng)用中[1]都需要對終端提供大量數(shù)據(jù)流[2]。使用數(shù)據(jù)傳輸系統(tǒng)進(jìn)行傳輸能夠根據(jù)終端需求動態(tài)提供數(shù)據(jù),,并且數(shù)據(jù)傳輸系統(tǒng)能夠針對不同終端的接口時序進(jìn)行靈活調(diào)整[3]。本設(shè)計提出一種基于TCP/IP通信協(xié)議,、使用以太網(wǎng)控制器芯片W5100與ARM內(nèi)核芯片實(shí)現(xiàn)的數(shù)據(jù)傳輸系統(tǒng),。本系統(tǒng)能夠?qū)C上的文件數(shù)據(jù)連續(xù)地傳輸給終端,并且針對終端接口的多樣性特點(diǎn),,能夠通過簡單的編程進(jìn)行調(diào)整,,以完成相同的數(shù)據(jù)傳輸功能。本文針對終端具有數(shù)據(jù)緩沖隊列FIFO的情況闡述本系統(tǒng)的硬件設(shè)計,、接口時序以及軟件流程,。對于不同終端,本系統(tǒng)只需經(jīng)過少量的軟件修改就可達(dá)到數(shù)據(jù)傳輸?shù)哪康亍?br/>
1 以太網(wǎng)控制器芯片W5100
以太網(wǎng)控制芯片W5100是WIZnet公司推出的一款單片網(wǎng)絡(luò)接口芯片[4],。W5100內(nèi)部集成了傳輸層,、網(wǎng)絡(luò)層TCP/IP協(xié)議棧與數(shù)據(jù)鏈路層及介質(zhì)訪問子層MAC協(xié)議。這使得通過W5100進(jìn)行以太網(wǎng)通信時,,各層協(xié)議對設(shè)計者而言都是透明的,。設(shè)計者不需要借助操作系統(tǒng),,只需要通過W5100的地址線、數(shù)據(jù)線對其內(nèi)部寄存器進(jìn)行簡單的讀寫訪問,,就能靈活方便地控制W5100進(jìn)行以太網(wǎng)通信,。W5100還集成了物理層PHY并支持信號極性自適應(yīng),這使得在硬件設(shè)計中,,只需要在W5100外部使用一個帶有網(wǎng)絡(luò)變壓器的RJ45座HR911103C,,就可以實(shí)現(xiàn)其與PC通信。故本設(shè)計中選擇W5100實(shí)現(xiàn)以太網(wǎng)通信,,既保證了接口簡單,,又使得開發(fā)周期短。
本設(shè)計中,,對W5100供給3.3 V與1.8 V兩種電源電壓,。為了保證信號完整性,降低干擾,,兩種電源電壓分別劃分為數(shù)字網(wǎng)絡(luò)與模擬網(wǎng)絡(luò),,網(wǎng)絡(luò)之間使用電感隔離;其地平面也分為數(shù)字地與模擬地,,網(wǎng)絡(luò)之間使用鐵心磁珠隔離,。W5100使用直接總線連接模式,其15 bit地址線與8 bit數(shù)據(jù)線與ARM芯片的通用I/O連接,;W5100的控制線/CS,、/WR、/RD,、/RESET也直接與ARM芯片的通用I/O連接,。由此實(shí)現(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 硬件設(shè)計與接口時序
3.1 硬件設(shè)計
W5100與AT91SAM7SE在硬件設(shè)計中采用直接總線連接模式,可以同時兼容間接總線連接模式,。這樣設(shè)計是為了能夠在連續(xù)訪問發(fā)送存儲器,、接收存儲器時工作于間接總線模式,使用W5100的地址自增功能,;并且在非連續(xù)訪問時工作于直接總線模式,,減少讀寫時序,以提高傳輸速率,。
AT91SAM7SE與W5100之間的接口,、AT91SAM7SE與終端之間的接口以及硬件設(shè)計的總體框圖如圖1所示。
3.2 AT91SAM7SE與W5100間接口時序
當(dāng)AT91SAM7SE在/RESET線上輸出低電平2 ?滋s及以上時,,W5100被復(fù)位,,其公共寄存器、各端口寄存器都恢復(fù)初始值,。本設(shè)計中/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 間接總線模式
當(dāng)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 直接總線模式
當(dāng)AT91SAM7SE訪問W5100模式寄存器,、端口寄存器時,W5100工作在直接總線模式下,,其15 bit地址線ADDR[14:0]直接選中各個寄存器,。然后通過/CS與/WR(或與/RD)輸出下降沿實(shí)現(xiàn)訪問。
3.2.3 間接總線模式與直接總線模式對比
訪問單一存儲器時,,使用間接總線模式需要3個總線時序,,使用直接總線模式只需要一個總線時序。連續(xù)訪問存儲器時,,使用地址自增功能,,能夠使得訪問一個地址平均花費(fèi)大約一個總線時序。雖然在間接總線模式下使用地址自增功能時,,平均訪問一個地址仍然不會花費(fèi)少于一個總線時序,,但是在連續(xù)訪問時,AT91SAM7SE不需要在其通用I/O上準(zhǔn)備每一個需要訪問的W5100的存儲器地址,,在連續(xù)訪問開始后ADDR[1:0]的值是固定為11,,因此平均花費(fèi)在一個總線時序上的指令條數(shù)有所減少。所以當(dāng)AT91SAM7SE配置為W5100工作模式,、端口模式來讀取和更新端口信息時,,使用直接總線模式以減少總線時序次數(shù);當(dāng)AT91SAM7SE讀取,、寫入TCP數(shù)據(jù)段數(shù)據(jù)時,,使用間接總線模式以減少總線時序中的平均指令數(shù)。
3.3 AT91SAM7SE與終端間接口時序
AT91SAM7SE將從W5100接收存儲器中取回的TCP數(shù)據(jù)段數(shù)據(jù)先緩存在片內(nèi),,再轉(zhuǎn)發(fā)給終端,。考慮到本設(shè)計終端具有數(shù)據(jù)緩沖隊列FIFO,,所以只使用RESET,、CS、BLOCK,、WR,、DATA[31:0]信號線。當(dāng)終端具有存儲器空間時,,還需要使用ADDRESS信號線,。根據(jù)終端接口的不同,可以對AT91SAM7SE編程,,使其生成匹配的接口時序,。由于選擇了ARM內(nèi)核的芯片作為MCU完成存儲轉(zhuǎn)發(fā)功能,所以能夠保證編程簡便,,易于經(jīng)過少量修改而匹配各種終端的接口時序,,使得代碼的重用性強(qiáng),。本設(shè)計中,RESET輸出高電平時清空FIFO,;CS實(shí)現(xiàn)對終端的片選,。當(dāng)FIFO空時,BLOCK信號無效,,指示AT91SAM7SE可以轉(zhuǎn)發(fā)數(shù)據(jù),;當(dāng)FIFO趨近于滿時,終端給出指示信號BLOCK,,阻塞AT91SAM7SE,,使其停止轉(zhuǎn)發(fā)數(shù)據(jù)。本設(shè)計中,,AT91SAM7SE在WR的每一次上升沿將TCP數(shù)據(jù)段中的數(shù)據(jù)轉(zhuǎn)發(fā)到DATA[31:0],。由于AT91SAM7SE編程靈活,通用I/O管腳豐富,,故可以重用于對各種終端進(jìn)行數(shù)據(jù)傳輸,。
4 軟件流程
在本設(shè)計中,AT91SAM7SE作為W5100的控制芯片,,控制其工作在TCP/IP協(xié)議下,,并作為服務(wù)器模式端SERVER。而客戶模式端CLIENT由PC機(jī)充當(dāng),,PC運(yùn)行Linux操作系統(tǒng),,使用套接字Socket編程。由于PC通過本系統(tǒng)向終端傳輸大量數(shù)據(jù)流,,這些數(shù)據(jù)不經(jīng)過路由,,獨(dú)享信道,所以不會出現(xiàn)路由擁塞而導(dǎo)致分組被丟棄的情況,。因此,,本設(shè)計簡化了關(guān)于分組超時的檢測,使用AT91SAM7SE查詢W5100端口狀態(tài)寄存器Sn_SR及其他端口寄存器的方式來獲知通信所處的狀態(tài),,并使用寫端口命令寄存器Sn_CR的方式來控制通信進(jìn)程,。圖4描述了PC通過本系統(tǒng)向終端傳輸數(shù)據(jù)的流程。
PC上的Socket程序非常簡單,,只需要調(diào)用最基本的文件操作函數(shù)與Socket函數(shù)就能實(shí)現(xiàn)端口連接與文件傳輸,。AT91SAM7SE上程序流程細(xì)節(jié)如下。
(1)上電,,復(fù)位:AT91SAM7SE開始執(zhí)行程序。
(2)芯片初始化:配置AT91SAM7SE時鐘模塊,、PIO模塊等,。
(3)配置W5100:配置W5100的公共寄存器,,設(shè)置IP地址、子網(wǎng)掩碼,、MAC地址等,。
(4)配置TCP端口:配置端口寄存器,使端口工作于TCP模式,,設(shè)置端口號等,。
(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)寄存器,,檢測當(dāng)前狀態(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)斷開連接,,關(guān)閉TCP端口:寫端口命令寄存器,,使端口關(guān)閉,斷開與PC的連接,。
其中步驟(9)需要訪問各寄存器,,還需要通過間接總線模式數(shù)據(jù)寄存器連續(xù)訪問接收存儲器。本設(shè)計中采用直接總線模式和間接總線模式相配合的方式,,完成對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ù)的準(zhǔn)確傳輸,。邏輯分析儀采樣結(jié)果如圖5所示。表1記錄了傳輸不同大小文件所用的時間與平均傳輸速率,。兼顧系統(tǒng)的靈活性與性能,,MCU工作在55.296 MHz的情況下,平均傳輸速率能夠達(dá)到2.7 Mb/s,。
本設(shè)計使用W5100與AT91SAM7SE實(shí)現(xiàn)了一種基于TCP/IP通信協(xié)議的數(shù)據(jù)傳輸系統(tǒng),。其硬件設(shè)計簡單,軟件編程靈活方便,可以適應(yīng)不同的終端接口時序,。整個系統(tǒng)具有集成度高,、重用性強(qiáng)、適應(yīng)性廣的特點(diǎn),。
參考文獻(xiàn)
[1] 蔣峰.W5100在遠(yuǎn)程溫度采集系統(tǒng)中的應(yīng)用[J].化工自動化及儀表,,2011,38(2):214-217.
[2] 鄒依依,,郭燦新,,黃成軍,等.W5100在DSP遠(yuǎn)程以太網(wǎng)數(shù)據(jù)通信系統(tǒng)中的應(yīng)用[J].工業(yè)控制計算機(jī),,2008,,21(8):20-21,23.
[3] 王炳義,,劉爽,,張偉,等.基于硬件協(xié)議棧W5100的圖像采集傳輸系統(tǒng)[J].電子技術(shù)應(yīng)用,,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.