精選物聯網的畢業論文范文
基于單片機的嵌入式以太網控制終端設計 摘要:基于單片機技術的以太網終端廣泛應用在各個領域,本文基于建榮AX2005+PHY的解決方案,實現ARP請求,以及ping命令。同時,本文詳細介紹以太網接口的硬件設計和通信電路的抗干擾設計。覆蓋單片機技術,通信技術,計算機網絡技術等多個知識領域。
關鍵詞:以太網協議; 信道編碼; TCP/IP協議; 單片機;
一,概述:隨著單片機技術和嵌入式技術的廣泛應用,以及通信技術的發展和計算機網絡的普及,人們提出了對基于嵌入式系統的網絡通信技術的應用需求。嵌入式網絡通信系統將過去單一獨立的嵌入式系統組成一個網絡系統,使得嵌入式系統不再是一個獨立的個體,而是一個整體信息化網絡的一個部分。該技術廣泛應用在智能設備,信息化家電,智能管理設備,安防監控設備等領域。
嵌入式網絡系統具有以下特點:1,基于單片機系統。2,系統之間存在數據通訊。在嵌入式網絡系統的實現方案中,有基于RS232/RS485總線協議,CAN總線協議,以太網協議,USB總線協議等多種方式。其中基于以太網協議的實現方案中,具有成本低,安裝方便,通訊距離遠,兼容性好和平臺移植方便等多種優勢。該技術廣泛應用在以下領域。 1,實驗室管理監控系統
某生化實驗室需要建立一個實時監控系統,檢測實驗室人員出入,實驗結果數據,實驗室溫度濕度。該實驗室的儀器設備都有RS232接口輸出打印,可以輸出到單片機。門禁和各種傳感器也接入單片機系統。這時候單片機可以通過以太網把數據提交到實驗室的服務器上,服務器通過處理提交的數據,將控制命令通過以太網發給單片機,單片機再進行相應的操作。
2,智能家居系統
現代家居系統中,由于需要寬帶接入,基本上所有住戶都有局域網接入。在住戶內 部搭建局域網也很方便。鑒于以上情況,利用以太網實現智能家居網絡能夠實現。
住房內的家電和各種設施,可以接入內部以太網實現相互通信,或者與上位機實現通信。上位機可以被用戶遠程控制,對居室的家電和設施進行控制,達到對居室的溫度,光亮的調節,同時可以利用下位機(單片機)將室內監控系統的狀況傳到上位機,上位機通過分析可以向主人或者相關部門報告火警或者匪警。
3,信息化家電
傳統家電是一個獨立存在的系統,電器與電器之間沒有絲毫聯系。在信息化家電系統中,所有信息化家電組成一個局域網絡系統,家電屬于該系統中一個部分。信息化家電系統中,比如電飯鍋,可以通過網絡遠程控制。假如用戶需要下班回家就能吃上飯,可以在下班前通過遠程控制協議給電飯鍋發出指令,保證下班回家時飯剛好煮好。
二,實現方案理論設計
1,網絡協議簡介
四層以太網協議
網絡協議通常分不同層次進行開發,每一層分別負責不同的通信功能。一個協議族,比如TCP/IP,是一組不同層次上的多個協議的組合。TCP/IP通常被認為是一個四層協議系統,如圖可以看出這個四層協議的構架。
圖1-1 TCP/IP協議族的四個層每一層負責不同的功能:
鏈路層:有時也稱作數據鏈路層或網絡接口層,通常包括操作系統中的設備驅動程序和計算機中對應的網絡接口卡。它們一起處理與電纜(或其他任何傳輸媒介)的物理接口細節。
網絡層:有時也稱作互聯網層,處理分組在網絡中的活動,例如分組的選路。在TCP/I協議族中,網絡層協議包括I協議(網際協議),ICMP協議(Interne互聯網控制報文協議),以及IGM協議(Internet組管理協議)。
運輸層:主要為兩臺主機上的應用程序提供端到端的通信。在T C P / I P協議族中,有兩個互不相同的傳輸協議: TCP(傳輸控制協議)和UDP(用戶數據報協議)。
TCP為兩臺主機提供高可靠性的數據通信。它所做的工作包括把應用程序交給它的數據分成合適的小塊交給下面的網絡層,確認接收到的分組,設置發送最后確認分組的超時時鐘等。由于運輸層提供了高可靠性的端到端的通信,因此應用層可以忽略所有這些細節。 而另一方面, UDP則為應用層提供一種非常簡單的服務。它只是把稱作數據報的分組 從一臺主機發送到另一臺主機,但并不保證該數據報能到達另一端。任何必需的可靠 性必須由應用層來提供。
這兩種運輸層協議分別在不同的應用程序中有不同的用途,這一點將在后面看到。 應用層:負責處理特定的應用程序細節。幾乎各種不同的TCP/IP實現都會提供下面這些通用的應用程序:
Telnet 遠程登錄。
FTP 文件傳輸協議。
SMTP 簡單郵件傳送協議。
SNMP 簡單網絡管理協議。
假設我們以FTP服務的工作為例,4層協議的工作原理如圖
OSI七層協議
物理層 : OSI模型的最低層或第一層,該層包括物理連網媒介,如電纜連線連接器。物理層的協議產生并檢測電壓以便發送和接收攜帶數據的信號。在你的桌面P C 上插入網絡接口卡,你就建立了計算機連網的基礎。換言之,你提供了一個物理層。盡管物理層不提供糾錯服務,但它能夠設定數據傳輸速率并監測數據出錯率。網絡物理問題,如電線斷開,將影響物理層。
數據鏈路層:OSI模型的第二層,它控制網絡層與物理層之間的通信。它的主要功能是如何在不可靠的物理線路上進行數據的可靠傳遞。為了保證傳輸,從網絡層接收到的數據被分割成特定的可被物理層傳輸的幀。幀是用來移動數據的結構包,它不僅包括原始數據,還包括發送方和接收方的網絡地址以及糾錯和控制信息。其中的地址確定了幀將發送到何處,而糾錯和控制信息則確保幀無差錯到達。數據鏈路層的功能獨立于網絡和它的節點和所采用 2007 AppoTech Limited. All rights reserved DS2005 v100 2
的物理層類型,它也不關心是否正在運行 Word、Excel或使用Internet 。有一些連接設備,如交換機,由于它們要對幀解碼并使用幀信息將數據發送到正確的接收方,所以它們是工作在數據鏈路層的。
網絡層:OSI模型的第三層,其主要功能是將網絡地址翻譯成對應的物理地址,并決定如何將數據從發送方路由到接收方。
網絡層通過綜合考慮發送優先權、網絡擁塞程度、服務質量以及可選路由的花費來決定從一個網絡中節點A 到另一個網絡中節點B 的最佳路徑。由于網絡層處理路由,而路由器因為即連接網絡各段,并智能指導數據傳送,屬于網絡層。在網絡中,“路由”是基于編址方案、使用模式以及可達性來指引數據的發送。
傳輸層:OSI模型中最重要的一層。傳輸協議同時進行流量控制或是基于接收方可接收數據的快慢程度規定適當的發送速率。除此之外,傳輸層按照網絡能處理的最大尺寸將較長的數據包進行強制分割。例如,以太網無法接收大于1500字節的數據包。發送方節點的傳輸層將數據分割成較小的數據片,同時對每一數據片安排一序列號,以便數據到達接收方節點的傳輸層時,能以正確的順序重組。該過程即被稱為排序。
工作在傳輸層的一種服務是 TCP/IP協議套中的TCP(傳輸控制協議),另一項傳輸層服務是IPX/SPX協議集的SPX(序列包交換)。
會話層:負責在網絡中的兩節點之間建立和維持通信。 會話層的功能包括:建立通信鏈接,保持會話過程通信鏈接的暢通,同步兩個節點之間的對 話,決定通信是否被中斷以及通信中斷時決定從何處重新發送。
你可能常常聽到有人把會話層稱作網絡通信的“交通警察”。當通過撥號向你的ISP(因特網服務提供商)請求連接到因特網時,ISP服務器上的會話層向你與你的PC客戶機上的會話層進行協商連接。若你的電話線偶然從墻上插孔脫落時,你終端機上的會話層將檢測到連接中斷并重新發起連接。會話層通過決定節點通信的優先級和通信時間的長短來設置通信期限
表示層:應用程序和網絡之間的翻譯官,在表示層,數據將按照網絡能理解的方案進行格式化;這種格式化也因所使用網絡的類型不同而不同。
表示層管理數據的解密與加密,如系統口令的處理。例如:在 Internet上查詢你銀行賬戶,使用的即是一種安全連接。你的賬戶數據在發送前被加密,在網絡的另一端,表示層將對接收到的數據解密。除此之外,表示層協議還對圖片和文件格式信息進行解碼和編碼。 應用層:負責對軟件提供接口以使程序能使用網絡服務。術語“應用層”并不是指運行在網絡上的某個特別應用程序 ,應用層提供的服務包括文件傳輸、文件管理以及電子郵件的信息處理。
兩種協議對應關系
我們可以看到,以太網網協議屬于OSI協議中的部分,其中OSI協議最重要的就是多了物理層,它是以太網設備通信的信道部分。鏈路層負責提供通信的時須,而以太網信號在信道中的傳遞全靠物理層。
2,常用實現方案選型
嵌入式以太網終端實現方案有多種,但其共同點都是單片機+網絡芯片。主要是兩種方案:單片機+MAC和單片機+PHY。
MAC是Media Access Control 的縮寫,即媒體訪問控制子層協議。該協議位于OSI七層協議中數據鏈路層的下半部分,主要負責控制與連接物理層的物理介質。在發送數據的時候,MAC協議可以事先判斷是否可以發送數據,如果可以發送將給數據加上一些控制信息,最終將數據以及控制信息以規定的格式發送到物理層;在接收數據的時候,MAC協議首先判斷輸入的信息并是否發生傳輸錯誤,如果沒有錯誤,則去掉控制信息發送至LLC層。以太網MAC由IEEE-802.3以太網標準定義。
PHY是位于OSI七層協議中的物理層,PHY在發送數據的時候,收到MAC過來的.數據(對PHY來說,沒有幀的概念,對它來說,都是數據而不管什么地址,數據還是CRC),每4bit就增加1bit的檢錯碼,然后把并行數據轉化為串行流數據,再按照物理層的編碼規則把數據編碼,再變為模擬信號把數據送出去。收數據時的流程反之。
2007 AppoTech Limited. All rights reserved DS2005 v100 3
單片機+MAC典型方案為單片機+RTL8019的方案。
RTL8019AS 是高度集成以太網控制器,它能夠簡單的解答即插即用NE2000兼容適配器,這種適配器具有二重和功率下降特性。通過三電平控制特性,RTL8019AS 是已制的對網絡設備GREEN PC 理想的選擇。全二重功能能夠模擬傳播和接收在雙絞線到全二重以太網交換機。這個特性不僅強帶寬從10 到20MBPS,而且避免了由于以太網頻道爭奪特性導致的讀出多路存取協議的問題。微軟公司的即插即用功能能減輕用戶較差的營業收入而注意適配器資源,如IRQ,輸入輸出,和存儲器地址等等。然而,為了特殊的應用而得不到即插即用功能的兼容性,RTL8019AS 支持JUMPER 和JUMPERLESS 選項。
為了提供完全解決即插即用方案,RTL8019AS 在集成10BASET 收發器,BNC,和AUI 接口之間的自動檢測功能。此外,8 條IRQ 總線和16 條基本地址總線為大資源情況下提供了寬松的環境。
RTL8019AS 支持16k,32k,和64k 字節BROM 和閃存接口。它仍然提供頁面模式功能,這種功能能支持在僅16k 字節內存系統空間下的4M 字節的BROM.此外,BROM 的無用命令被用來釋放BROM 內存空間。RTL8019AS 用16k 字節SRAM 設計在單片芯片上,它的設計不僅提供了更多友好的功能,而且節省了SRAM 存儲資源。
單片機+PHY典型方案為單片機+RTL8201,RTL8201具有成本低,速度快(支持100M bps)等優點。
RTL8201BL是一個單端口的物理層收發器,它只有一個MII/SNI(媒體獨立接口/串行網絡接口)接口。它實現了全部的10/100M以太網物理層功能,包括物理層編碼子層(PCS),物理層介質連接設備(PMA),雙絞線物理媒介相關子層(TP-PMD),10Base-Tx編解碼和雙絞線媒介訪問單元(TPMAU)。 PECL接口支持連接一個外部的100Base-FX光纖收發器。這款芯片使用先進的CMOS工藝制作以滿足低壓低功耗的需求。 RTL8201BL可以在NIC,MAU,CNR,ACR,以太網HUB,或以太網交換機中使用。另外,它也可以用于任何有以太網MAC并且需要一個物理上的雙絞線連接或一個光纖PECL接口以連接一個外部的100base-FX 光纖收發器模塊的嵌入式系統。
MII接口
MII即媒體獨立接口,它是IEEE-802.3定義的以太網行業標準。它包括一個數據接口,以及一個MAC和PHY之間的管理接口。數據接口包 括分別用于發送器和接收器的兩條獨立信道。每條信道都有自己的數據、時鐘和控制信號。MII數據接口總共需要16個信號。管理接口是個雙信號接口:一個是 時鐘信號,另一個是數據信號。通過管理接口,上層能監視和控制PHY。MII Management interface只有兩條信號線。The configuration and status data is written/read to/from the PHY via the MDIO signal.
MII標準接口 用于連快Fast Ethernet MAC-block與PHY。“介質無關”表明在不對MAC硬件重新設計或替換的情況下,任何類型的PHY設備都可以正常工作。在其他速率下工作的與 MII等效的接口有:AUI(10M 以太網)、GMII(Gigabit 以太網)和XAUI(10-Gigabit 以太網)。
我們使用了珠海建榮集成(Appotech)的AX2005單片機+RTL8201的方案。
AX2005是一種國產的基于8051內核的OTP單片機,具有兩個DPTR地址指針,內部集成了部分擴展SRAM,程序存儲器與數據存儲器地址可以交叉訪問。該單片機大多數指令都在一個時鐘周期內完成,并且集成了DSP MAC(乘加器),可用于數字信號處理。
AX2005具有GPSI接口,可以工作在MII兼容模式下,實現以太網MAC功能,并且工作于DMA模式。單片機性能可以達到100MIPS,集成32KB SRAM,并帶有硬件CRC模塊,可方便的用于以太網數據封裝的處理。所以該單片機非常適合用于以太網終端的應用。
2007 AppoTech Limited. All rights reserved DS2005 v100 4
AX2005 High Performance 8-bit RISC Microcontroller
High Performance 8-bit RISC MCU DC-125MHz operation Compatible with 8051
40ns internal interrupt response at 125 MIPS All instructions are single-cycled except
branching instructions
Two data pointers for indirect addressing
Program Memory and Data Memory 32K Bytes OTP program memory
64K Bytes instruction SRAM used for
program and/or data memory 256 Bytes internal data SRAM
64K Bytes External Memory Interface (EMI),
support DMA to on-chip SRAM
Interrupt Features
26 vectored interrupts 3 levels interrupt priority
External wakeup/interrupt capabilities on
Port 1
2 levels interrupt priority selection for all the
hardware interrupt sources except Watchdog and LVD where they occupy the third level Flexible I/O
60 GPIO pins in 7 and a half ports.
All GPIO pins can be individually
programmable as input or output
All GPIO pins are internally pull-up selectable CMOS/TTL-level Schmitt triggered inputs All GPIO pins are 8mA sink/source current
output driving
Digital Peripheral Features
Two 16-bit timers compatible with 8051’s
timer0 timer1
Two multi-function 16-bit timers, support
Capture and PWM mode
Two 8-bit timers, support Capture mode.
Watchdog Timer with on-chip 1MHz RC
oscillator
Two high-speed full-duplex UART Two high-speed SPI, support DMA 1 GPSI interface, support DMA
Two 4-channel IIS interfaces, support DMA 1 programmable linear feedback shift
registers
1 CRC(循環冗余校驗) FIFO, can use for CRC16
and CRC32 calculating 1 ECC(錯誤校驗糾正) FIFO
1 16-bit/24-bit DSP engine, support DMA. 1 Bit-fetcher, can use for bit stream analyzing Full-speed USB 2.0 OTG(on the go) controller
with 4 endpoints (including endpoint 0) and 512 bytes FIFO totally.
Analog Peripheral Features 4~20MHz Crystal Oscillator 1MHz RC oscillator
Full-speed USB 2.0 OTG PHY
40~200MHz Flexible PLL-based clock
generator
2 channels 16bit Class-D DAC
1 channel 8 levels Low Voltage Detector Power-on reset
3.3V to 1.8V Low Drop-Out regulator
Programming and Debugging Support In-System Programming (ISP) support In-System Debugging (ISD) support
Power Supply
LDOVDD, VDDIO, PLLVDD is 3.0-3.6V VDDCORE is 1.6-2.0V
Packages
80-pin LQFP (10mm x 10mm) 64-pin LQFP (10mm x 10mm) 48-pin LQFP (7mm x 7mm) DIE for
2007 AppoTech Limited. All rights reserved DS2005 v100
3,系統設計與系統框圖
在基于AX2005單片機的以太網控制終端的方案中,以AX2005單片機為控制核心,單片機負責以下工作:
硬件系統部分的設計
1,在單片機內部開辟兩個儲存空間,分別用于發送和接受數據流。以太網封裝格式中,是按照6字節目的硬件地址,6字節源地址,2字節類型,46~1500字節的數據,4字節的CRC校驗碼組成。應此,每個空間大小應該設置為1518字節。單片機訪問這兩個空間,發送數據時,將相應協議的報頭和報文填入對應的位置,再將空間內的整個數據發送出去;接受數據時,單片機訪問相應協議的報頭位置,判斷收到數據報的類型,再處理相應的報文。
圖2-1
2,單片機利用MII接口與PHY連接,MAC協議由單片機提供。單片機內部產生MAC地址。以太網通信最終實質是以太網設備訪問對方的48位MAC地址。建榮的AX2005單片機沒有專門的符合IEEE802.3標準的MII接口,而是GPSI(通用串行接口)工作在MII模式下。由于AX2005的MII/GPSI接口支持DMA工作模式,并內部集成有32KB SRAM,可以直接被MII接口控制器讀寫。因此,在該方案中使用DMA模式,MCU只往緩沖區中讀寫數據,MII控制器會自動通過DMA將緩沖區的數據發到以太網,或者將以太網的數據收到緩沖區中,供CPU處理。
3,單片機利用UART接口,通過RS23轉換器,在單片機收到以太網數據包時,通過串口,將收到的數據打印到顯示屏上。或者通過串口將數據發到單片機,再轉發到以太網。
6
圖2-2 IEEE-802.3規范的以太網接口相關介紹
ETHERNET的接口實質是MAC通過MII總線控制PHY的過程。
MAC是Media Access Control 的縮寫,即媒體訪問控制子層協議。該協議位于OSI七層協議中數據鏈路層的下半部分,主要負責控制與連接物理層的物理介質。在發送數據的時候,MAC協議可以事先判斷是否可以發送數據,如果可以發送將給數據加上一些控制信息,最終將數據以及控制信息以規定的格式發送到物理層;在接收數據的時候,MAC協議首先判斷輸入的信息并是否發生傳輸錯誤,如果沒有錯誤,則去掉控制信息發送至LLC層。以太網MAC由IEEE-802.3以太網標準定義。
MII(Media Independent Interface)即媒體獨立接口, “媒體獨立”表明在不對MAC硬件重新設計或替換的情況下,任何類型的PHY設備都可以正常工作。包括分別用于發送器和接收器的兩條獨立信道。每條信道都有自己的數據、時鐘和控制信號。MII數據接口總共需要16個信號,包括TX_ER,TXD<3:0>,TX_EN,TX_CLK,COL,RXD<3:0>,RX_EX,RX_CLK,CRS,RX_DV等。
MII以4位半字節方式傳送數據雙向傳輸,時鐘速率25MHz。其工作速率可達100Mb/s。MII管理接口是個雙信號接口,一個是時鐘信號,另一個是數據信號。通過管理接口,上層能監視和控制PHY。其管理是使用SMI(Serial Management Interface)總線通過讀寫PHY的寄存器來完成的。PHY里面的部分寄存器是IEEE定義的,這樣PHY把自己的目前的狀態反映到寄存器里面,MAC通過SMI總線不斷的讀取PHY的狀態寄存器以得知目前PHY的狀態,例如連接速度,雙工的能力等。當然也可以通過SMI設置PHY的寄存器達到控制的目的,例如流控的打開關閉,自協商模式還是強制模式等。不論是物理連接的MII總線和SMI總線還是PHY的狀態寄存器和控制寄存器都是有IEEE的規范的,因此不同公司的MAC和PHY一樣可以協調工作。當然為了配合不同公司的PHY的自己特有的一些功能,驅動需要做相應的修改。
IEEE802.3標準定義的以太網工作方式如下:IEEE802.3中定義的介質獨立接口(MII)主要用來連接介質訪問控制子層(MAC)和物理層(PHY),目的是使不同的物理層能夠使用統一的接口連到MAC層,即物理層對MAC層是透明的。該接口可用于直接連接MAC與PHY芯片,也可連接分別裝有MAC和PHY的兩塊印制板,此外,還可以通過一段電纜連接裝有MAC和PHY的設備。這一接口支持10Mbps和100Mbps兩種速率,而且兩種速率實現的功能相同,其區別只是工作頻率不一樣。介質獨立接口由18根信號線組成,其中發送方向7根(TXD<3:0>、TX EN、TX CLK、TX ER),接收方向7根(RXD<3:0>、RX DV、RX CLK、RX ER),此外,還有載波偵聽(CRS)、沖突檢測(COL)和串行管理通道(MDC、MDIO)信號。發送時鐘(TX CLK)和接收時鐘(RX CLK)一般由PHY提供(本文還將提出一種由另一端MAC或外界提供標準時鐘的設計方案),根據數據率10Mpbs/100Mbps選擇2.5MHz或25MHz時鐘,且不論有無有效數據收發,時鐘一直被正常提供。在發送方向,當介質訪問控制子層有數據要發送時,在某個發送時鐘上升沿應將發送使能信號(TX EN)置為高電平,同時發送待發數據(TXD<3:0>)的前同步碼,直到數據發送完畢,發送使能信號被置為低電平為止。而在接收方向,一旦MAC控制器檢測出接收數據有效信號(由PHY發出)為高電平,系統將在接下來的每個接收時鐘上升沿采集接收數據(RXD<3:0>),直到接收數據有效
信號位被置為低電平為止。在半雙工模式下,PHY將根據物理鏈路狀況輸出載波偵聽(CRS)和沖突檢測(COL)信號,這兩種信號都不必與時鐘同步。
4,網絡協議設計詳解
在該以太網控制終端設計中由于只需要實現ping功能,參考《TCP/IP詳解 卷1:協議》,該方案中需要實現ARP地址解析協議,IP協議,ICMP協議,并實現UDP和TCP協議。
1)以太網首部:
以太網首部長度14字節,是由6字節的目的地址,6字節源地址,2字節類型構成。6字節以太網首部地址又叫MAC地址,MAC地址具有唯一性,每個以太網設備都有自己的MAC地址。以太網設備相互通信時,硬件尋址對方的MAC地址。由于以太網中每個設備的MAC地址都是唯一的,所以只要確定一個目標地址就能確定一個唯一的設備。在廣播模式下,目標地址為全部為0XFF。以太網數據包類型標志為2字節,其中IP包為0x0800,ARP包為0x0806。以太網數據包最后有一個4字節的CRC校驗包,確保數據在以太網傳輸中的正確性。一個以太網數據包最小長度64字節,最大長度為1518字節。因此任何一個以太網數據包,不管是什么類型,必須滿足以太網數據包最小長度。
2)ARP地址解析協議:
數據鏈路如以太網或令牌環網都有自己的尋址機制(常常為48 bit地址),這是使用數據鏈路的任何網絡層都必須遵從的。一個網絡如以太網可以同時被不同的網絡層使用。當一臺主機把以太網數據幀發送到位于同一局域網上的另一臺主機時,是根據48 bit的以太網地址來確定目的接口的。設備驅動程序從不檢查I P數據報中的目的I P地址。地址解析為這兩種不同的地址形式提供映射: 32 bit的I P地址和數據鏈路層使用的任何類型的地址。
ARP的數據包格式如下,長度為42字節。以太網首部14個字節,源地址為本機的固定地址,是個唯一的值,供硬件尋址用;目標地址在ARP請求中為廣播模式,即全部為0xff,當從設備收到ARP請求后,回復ARP應答,在ARP應答中以太網目的地址為主機的以太網硬件地址,以太網源地址為本機以太網硬件地址;幀類型2字節長度,在ARP包中為0x0806。ARP報文為28個字節,硬件類型為2字節,硬件類型字段表示硬件地址的類型,它的值為1即表示以太網地址。協議類型為2字節,協議類型字段表示要映射的協議地址類型,它的值為0x0800即表示IP地址。它的值與包含IP數據報的以太網數據幀中的類型字段的值相同,這是有意設計的。接下來的兩個1字節的字段,硬件地址長度和協議地址長度分別指出硬件地址和協議地址的長度,以字節為單位。對于以太網上IP地址的ARP請求或應答來說,它們的值分別為6和4。操作字段指出四種操作類型,它們是ARP請求(值為1)、ARP應答(值為2)、RA RP請求(值為3)和RARP應答(值為4)。這個字段必需的,因為A R P請求和A R P應答的幀類型字段值是相同的。 接下來的四個字段是發送端的硬件地址(在本例中是以太網地址)、發送端的協議地址(IP地址)、目的端的硬件地址和目的端的協議地址。注意,這里有一些重復信息:在以太網的數據幀報頭中和A R P請求數據幀中都有發送端的硬件地址。
對于一個ARP請求來說,除目的端硬件地址外的所有其他的字段都有填充值。當系統收到
一份目的端為本機的ARP請求報文后,它就把硬件地址填進去,然后用兩個目的端地址分別替換兩個發送端地址,并把操作字段置為2,最后把它發送回去。
由于在以太網協議中,以太網報文長度在46~1500字節,然后再跟4字節的CRC校驗,一個完整的以太網數據包最小長度為64字節。所以一個ARP包長度必須滿足以太網數據包最小長度,必須要有18字節的填充,再跟4字節的CRC校驗。
3)IP網際協議:IP是TCP/IP協議族中最為核心的協議。所有的TCP、UDP、ICMP及IGMP數據都以IP數據報格式傳輸
IP提供不可靠、無連接的數據報傳送服務。不可靠(unreliable)的意思是它不能保證IP數據報能成功地到達目的地。IP僅提供最好的傳輸服務。無連接(connectionless)這個術語的意思是IP并不維護任何關于后續數據報的狀態信息。每個數據報的處理是相互獨立的。這也說明, IP數據報可以不按發送順序接收。
IP數據報的格式如圖2-4所示。普通的IP首部長為20個字節,除非含有選項字段。
協議版本號是4,因此IP有時也稱作IPv4,以后還有一種新的IPv6協議,在此不作介紹。 首部長度指的是首部占32bit字的數目,包括任何選項。由于它是一個4比特字段,因此首部最長為60個字節。普通IP數據報(沒有任何選擇項)字段的值是5。
服務類型(TOS)字段包括一個3 bit的優先權子字段(現在已被忽略),4bit的TOS子字段和1bit未用位但必須置0。4 bit的TOS分別代表:最小時延、最大吞吐量、最高可靠性和最小費用。4bit中只能置其中1bit。如果所有4bit均為0,那么就意味著是一般服務。服務類型參見(表2-1)。
總長度字段是指整個IP數據報的長度,以字節為單位。利用首部長度字段和總長度字段,就可以知道IP數據報中數據內容的起始位置和長度。由于該字段長16比特,所以IP數據報最長可達65535字節。當數據報被分片時,該字段的值也隨著變化。盡管可以傳送一個長達65535字節的IP數據報,但是大多數的鏈路層都會對它進行分片。而且,主機也要求不能接收超過576字節的數據報。由于TCP把用戶數據分成若干片,因此一般來說這個限制不會影響TCP。總長度字段是IP首部中必要的內容,因為一些數據鏈路(如以太網)需要填充一些數據以達到最小長度。盡管以太網的最小幀長為46字節(見圖2-2),但是IP數據可能會更短。如果沒有總長度字段,那么IP層就不知道46字節中有多少是IP數據報的內容。
標識字段唯一地標識主機發送的每一份數據報。通常每發送一份報文它的值就會加1。標識字段應該由讓IP發送數據報的上層來選擇。假設有兩個連續的IP數據報,其中一個是由TCP生成的,而另一個是由UDP生成的,那么它們可能具有相同的標識字段。盡管這也可以照常工作(由重組算法來處理),但是在大多數從伯克利派生出來的系統中,每發送一個IP數據報,IP層都要把一個內核變量的值加1,不管交給IP的數據來自哪一層。內核變量的初始值根據系統引導時的時間來設置。
片偏移字段指的是該片偏移原始數據報開始處的位置。另外,當數據報被分片后,每個片的總長度值要改為該片的長度值。
TTL(time-to-live)生存時間字段設置了數據報可以經過的最多路由器數。它指定了數據報的生存時間。TTL的初始值由源主機設置(通常為32或64),一旦經過一個處理它的路由器,它的值就減去1。當該字段的值為0時,數據報就被丟棄,并發送ICMP報文通知源主機。第8章我們討論Traceroute程序時將再回來討論該字段。
協議字段為IP在首部中存入一個長度為8bit的數值。1表示為ICMP協議, 2表示為IGMP協議,6表示為TCP協議,17表示為UDP協議。
首部檢驗和字段是根據IP首部計算的檢驗和碼。它不對首部后面的數據進行計算。ICMP、IGMP、UDP和TCP在它們各自的首部中均含有同時覆蓋首部和數據檢驗和碼。為了計算一份數據報的IP檢驗和,首先把檢驗和字段置為0。然后,對首部中每個16bit進行二進制反碼求和(整個首部看成是由一串16bit的字組成),結果存在檢驗和字段中。當收到一份IP數據報后,同樣對首部中每個16bit進行二進制反碼的求和。由于接收方在計算過程中包含了發送方存在首部中的檢驗和,因此,如果首部在傳輸過程中沒有發生任何差錯,那么接收方計算的結果應該為全1。如果結果不是全1(即檢驗和錯誤),那么I P就丟棄收到的數據報。但是不生成差錯報文,由上層去發現丟失的數據報并進行重傳。
4)ICMP Internet控制報文協議與ping命令:ICMP經常被認為是IP層的一個組成部分。____
它傳遞差錯報文以及其他需要注意的信息。ICMP報文通常被IP層或更高層協議(TCP或UDP)使用。一些ICMP報文把差錯報文返回給用戶進程。
ICMP報文各種類型如圖2-7所示,不同類型由報文中的類型字段和代碼字段來共同決定。圖中的最后兩列表明ICMP報文是一份查詢報文還是一份差錯報文。因為對ICMP差錯報文有時需要作特殊處理,因此我們需要對它們進行區分。例如,在對ICMP差錯報文進行響應時,永遠不會生成另一份ICMP差錯報文(如果沒有這個限制規則,可能會遇到一個差錯產生另一個差錯的情況,而差錯再產生差錯,這樣會無休止地循環下去)。當發送一份ICMP差錯報文時,報文始終包含IP的首部和產生ICMP差錯報文的IP數據報的前8個字節。這樣,接收ICMP差錯報文的模塊就會把它與某個特定的協議(根據IP數據報首部中的協議字段來判斷)和用戶進程(根據包含在IP數據報前8個字節中的TCP或UDP報文首部中的TCP或UDP端口號來判斷)聯系起來。
下面各種情況都不會導致產生ICMP差錯報文:
1) ICMP差錯報文(但是,ICMP查詢報文可能會產生ICMP差錯報文)。
2) 目的地址是廣播地址(見圖3-9)或多播地址(D類地址,見圖1-5)的IP數據報。
3) 作為鏈路層廣播的數據報。
4) 不是IP分片的第一片(將在11.5節介紹分片)。
5) 源地址不是單個主機的數據報。這就是說,源地址不能為零地址、環回地址、廣播地址或多播地址。
這些規則是為了防止過去允許ICMP差錯報文對廣播分組響應所帶來的廣播風暴。
ICMP地址掩碼請求用于無盤系統在引導過程中獲取自己的子網掩碼(3.5節)。系統廣播它的ICMP請求報文(這一過程與無盤系統在引導過程中用RARP獲取IP地址是類似的)。無盤系統獲取子網掩碼的另一個方法是BOOTP協議,我們將在第16章中介紹。ICMP地址掩碼請求和應答報文的格式如圖2-8所示。
ICMP報文中的標識符和序列號字段由發送端任意選擇設定,這些值在應答中將被返回。這樣,發送端就可以把應答與請求進行匹配。
Ping程序由目的是為了測試另一臺主機是否可達。該程序發送一份ICMP回顯請求報文給主機,并等待返回ICMP回顯應答。一般來說,如果不能Ping到某臺主機,那么就不能Telnet或者FTP到那臺主機。反過來,如果不能Telnet到某臺主機,那么通常可以用Ping程序來確定問題出在哪里。Ping程序還能測出到這臺主機的往返時間,以表明該主機離我們有“多遠”。
我們稱發送回顯請求的ping程序為客戶,而稱被ping的主機為服務器。大多數的TCP/IP實現都在內核中直接支持Ping服務器—這種服務器不是一個用戶進程。ICMP回顯請求和回顯應答報文如圖2-9所示。
在局域網上運行ping程序的結果輸出一般有如下格式:
當返回ICMP回顯應答時,要打印出序列號和TTL,并計算往返時間。從上面的輸出中可以看出,回顯應答是以發送的次序返回的( 0,1,2等)。
ping程序通過在ICMP報文數據中存放發送請求的時間值來計算往返時間。當應答返回時,用當前時間減去存放在ICMP報文中的時間值,即是往返時間。輸出的第一行包括目的主機的I P地址,盡管指定的是它的名字。這說明名字已經經過解析器被轉換成I P地址了。現在,我們發現,如果敲入ping命令,幾秒鐘過后會在第1行打印出IP地址, DNS就是利用這段時間來確定主機名所對應的IP地址。
通常,第1個往返時間值要比其他的大。這是由于目的端的硬件地址不在ARP高速緩存中第1個RTT中多出的3ms很可能就是因為發送ARP請求和接收ARP應答所花費的時間。
以上是ping功能的實現原理,UDP和TCP協議實現參考《TCP/IP詳解 卷1:協議》,本文只給出UDP和TCP的封裝格式。
5)UDP協議
UDP是一個簡單的面向數據報的運輸層協議:進程的每個輸出操作都正好產生一個UDP數據報,并組裝成一份待發送的I P數據報。這與面向流字符的協議不同,如T C P,應用程序產生的全體數據與真正發送的單個IP數據報可能沒有什么聯系。UDP數據報封裝成一份IP數據報的格式如圖2-11。
UDP不提供可靠性:它把應用程序傳給IP層的數據發送出去,但是并不保證它們能到達目的地。應用程序必須關心IP數據報的長度。
端口號表示發送進程和接收進程。TCP和UDP用目的端口號來分用來自IP層的數據的過程。由于IP層已經把IP數據報分配給TCP或UDP,因此TCP端口號由TCP來查看,而UDP端口號由UDP來查看。TCP端口號與UDP端口號是相互獨立的。
UDP長度字段指的是UDP首部和UDP數據的字節長度。該字段的最小值為8字節(發送一份0字節的UDP數據報是OK)。這個UDP長度是有冗余的。IP數據報長度指的是數據報全長,因此U D P數據報長度是全長減去I P首部的長度(該值在首部長度字段中指定)。
UDP檢驗和覆蓋UDP首部和UDP數據。回想IP首部的檢驗和,它只覆蓋IP的首部—并不覆蓋IP數據報中的任何數據。UDP和TCP在首部中都有覆蓋它們首部和數據的檢驗和。UDP的檢驗和是可選的,而TCP的檢驗和是必需的。
6)TCP協議
TCP的服務:盡管TCP和UDP都使用相同的網絡層(IP),TCP卻向應用層提供與UDP完全不同的服務。TCP提供一種面向連接的、可靠的字節流服務。
TCP數據被封裝在一個IP數據報中,如圖2-13所示。
每個TCP段都包含源端和目的端的端口號,用于尋找發端和收端應用進程。這兩個值加上IP首部中的源端IP地址和目的端IP地址唯一確定一個TCP連接。
序號用來標識從TCP發端向TCP收端發送的數據字節流,它表示在這個報文段中的的第一個數據字節。如果將字節流看作在兩個應用程序間的單向流動,則TCP用序號對每個字節進行計數。序號是32bit無符號數,序號到達232-1后又從0開始。
既然每個傳輸的字節都被計數,確認序號包含發送確認的一端所期望收到的下一個序號。因此,確認序號應當是上次已成功收到數據字節序號加1。只有ACK標志為1時確認序號字段才有效。
首部長度給出首部中32bit字的數目。需要這個值是因為任選字段的長度是可變的。這個字段占4bit,因此TCP最多有60字節的首部。然而,沒有任選字段,正常的長度是20字節。在TCP首部中有6個標志比特。它們中的多個可同時被設置為1。我們在這兒簡單介紹它們的用法。
URG 緊急指針( u rgent pointer)有效。
ACK 確認序號有效。
PSH 接收方應該盡快將這個報文段交給應用層。
RST 重建連接。
SYN 同步序號用來發起一個連接。
FIN 發端完成發送任務。
TCP的流量控制由連接的每一端通過聲明的窗口大小來提供。窗口大小為字節數,起始于確認序號字段指明的值,這個值是接收端正期望接收的字節。窗口大小是一個16bit字段,因而窗口大小最大為65535字節。
檢驗和覆蓋了整個的TCP報文段:TCP首部和TCP數據。這是一個強制性的字段,一定是由發端計算和存儲,并由收端進行驗證。TCP檢驗和的計算和UDP檢驗和的計算相似。
5,程序運行流程
本文僅要求實現對ping的響應,在嵌入式系統中,一般只要求以太網終端具備對ping的應答能力,不需要ping請求。另外,嵌入式以太網終端大多數工作在從模式,因而可以省略ARP請求的功能。
對于將來功能的擴展升級,可以在TCP和UDP中間任選一種協議作為數據傳輸。對于控制信號,文件傳輸,采用TCP協議。對于流媒體信號,可以采用UDP保證實時性。
由于TCP或者UDP與ICMP同屬于IP數據報。在修改ICMP服務程序后,可以作TCP或者UDP服務程序用。
6,以太網PHY層設計的注意事項
以太網PHY層屬于通信系統中的信道,因此要考慮到傳輸信道中的抗干擾問題。
PHY通過RJ45接口接入銅線,這種傳輸介質可以實現長距離通信。PHY的功能是將MII接口的并行數據轉換成串行數據,在信道中收發。參考《通信原理》,信道中應該加入擾碼,保證信道中的信號具有一定的頻率,防止在信道中被慮掉。PHY可以配置成半雙工、全雙工兩種模式,和10M、100M兩種連接速度。
100BaseTX采用4B/5B編碼。PHY在發送數據的時候,收到MAC過來的數據(對PHY來說,沒有幀的概念,對它來說,都是數據而不管什么地址,數據還是CRC),每4bit就增加 AppoTech Limited. All rights reserved DS2005 v100 16
1bit的檢錯碼,然后把并行數據轉化為串行流數據,再按照物理層的編碼規則把數據編碼,再變為模擬信號把數據送出去。收數據時的流程反之。
PHY還有個重要的功能就是實現CSMA/CD的部分功能。它可以檢測到網絡上是否有數據在傳送,如果有數據在傳送中就等待,一旦檢測到網絡空閑,再等待一個隨機時間后將送數據出去。如果兩個碰巧同時送出了數據,那 樣必將造成沖突,這時候,沖突檢測機構可以檢測到沖突,然后各等待一個隨機的時間重新發送數據。這個隨機時間很有講究的,并不是一個常數,在不同的時刻計算出來的隨機時間都是不同的,而且有多重算法來應付出現概率很低的同兩臺主機之間的第二次沖突。
通信速率通過雙方協商,協商的結果是兩個設備中能同時支持的最大速度和最好的雙工模式。這個技術被稱為Auto Negotiation或者NWAY。
隔離變壓器把PHY送出來的差分信號用差模耦合的線圈耦合濾波以增強信號,并且通過電磁場的轉換耦合到連接網線的另外一端。RJ-45中1、2是傳送數據的,3、6是接收數據的。新的PHY支持AUTO MDI-X功能(也需要隔離變壓器支持)。它可以實現RJ-45接口的1、2上的傳送信號線和3、6上的接收信號線的功能自動互相交換。
RTL8201 PHY核心電路需要2.5V電壓供電。不過,數字IO和DAC電路需要3.3V電源支持。RTL8201BL有一個內嵌的減壓器將3.3V轉換為2.5V。就像許多商用變壓設備,該電路的
2.5V輸出引腳(PWFBOUT),需要使用一個22μF的鉭電容作為該設備的頻率校正部分,另外還需要一個小的電容(0.1μF)用于高頻去噪。PWFBIN引腳通過一個鐵氧體磁珠從PWFBOUT引腳引入2.5V電源,如下圖所示。這里著重強調的是,不能夠使用任何其它電源設備為PWFBOUT和PWFBIN引腳提供外部的2.5V電源支持。
模擬和接地層應該盡可能的大且完整。如果接地層足夠大,則將模擬和數字接地分開將是更好的構造。不過,如果總的接地層并不十分大,那么將接地層分開的做法就不太合適。在這種情況下,所有的接地引腳可以一起連接到一個單一的大且完整的接地層。
三,選定方案的實現
1,硬件設計:
單片機與PHY的MII接口配置
要將RTL8201BL設置為MII操作模式,就必須拉高MII/SNIB引腳并對ANE、SPEED和DUPLEX引腳進行適當設置。
MII是一個介于PHY和MAC之間的符合IEEE 802.3u標準的18信號接口。該接口在兩種頻率下操作:25Mhz和2.5Mhz,支持100Mbps/10Mbps兩種帶寬下的收發功能。發送數據時,MAC首先聲明TXEN信號,然后將字節數據變為4位的半字節并通過TXD[0..3]將其傳遞給PHY。在內部TXEN被聲明期間,PHY用TXC — PHY支持的傳輸時鐘信號 — 同步對TXD[0..3]的采樣。接收信息包時,PHY將聲明RXEN信號,傳遞由RXC時鐘控制的接收半字節數據RXD[0..3],它從接收的數據中恢復。CRS和COL信號用于沖突檢測和處理。
在100Base-TX模式,當5B下的解碼信號不是空閑(not IDLE)時,CRS信號將聲明;而當5B被認為空閑時,其將被解除聲明。在10Base-T模式,當10M前導同步信號被確定時,CRS信號將聲明;而當空閑(IDLE)模式被確定時,其將被解除聲明。
在100Mbps模式,當5B解碼是/J/K/時,RXDV信號將被聲明;如果5B是/T/R/或者空閑則其將被解除聲明。在10Mbps模式,RXDV與CRS信號相同。
如果任何5B解碼錯誤發生,比如無效的J/K,T/R,無效的符號等,RXER(Receive Error,接收錯誤)信號將被聲明。該引腳會被拉高一個或多個時鐘周期以指示適配子層(Reconciliation Sublayer,適配層是MAC層和物理層之間的通路,譯注)在幀的某個位置發現一個錯誤。
RTL8201BL不使用TXER信號并且不會影響傳輸功能。
AX2005支持GPSI模塊, 可以工作在主模式和從模式下,包括以下特征
獨立的TX,RX結構,每個都有各自的4字節FIFO 支持4種時序模式,分別是GPSI模式,類SPI模式,類UART模式和類USART模式。 硬件頭校驗功能
AppoTech Limited. All rights reserved DS2005 v100 17
提供發射時鐘的分頻器
獨立的RX,TX DMA控制,二者可以同時工作。 12個引腳,兼容MII模式 RX Data In (GRD) – P2.5 RX Data1 In (GRD) – P3.3 RX Data2 In (GRD) – P3.4 RX Data3 In (GRD) – P3.5 RX Clock In (GRC) – P2.4 RX Enable In (GRE) – P2.7 TX Data Out (GTD) – P2.3 TX Data1 Out (GTD) – P1.4 TX Data2 Out (GTD) – P1.5 TX Data3 Out (GTD) – P1.6 TX Clock Out (GTC) – P2.2 TX Enable Out (GTE) – P2.6
LED接口/PHY地址配置
上電重新配置用于MII管理寄存器接口的PHY地址[0:4]期間,這五個引腳被鎖存。然后,在初始復位之后的正常操作時,它們作為狀態指示LED的驅動引腳使用。其驅動極性,或者為高或者為低,由上電復位期間每個PHY地址[4:0]的鎖定狀態決定。如果鎖定狀態為高,則其為低;如果鎖定狀態為低,則其為高。
此方案中,RTL8201被配置成強制10Mbps全雙工模式,使用MII接口,地址為1,不使用MII管理接口去修改配置。
【物聯網的畢業論文】相關文章:
什么是物聯網?02-10
物聯網就業前景02-14
物聯網工程就業前景12-31
物聯網工程專業就業方向12-31
物聯網工程就業前景分析07-07
物聯網工程就業前景如何?07-23
物聯網社會實踐報告02-03
物聯網應用調研報告范本04-08
關于物聯網課程報告總結05-09