互聯網絡硬件、軟件的迅猛發展,使得網絡用戶呈指數增長。在使用通用計算機進行網絡互聯的同時,各種家電設備、PDA、儀器儀表、工業生產中的數據的采集與控制等設備正在逐漸地走向網絡化,以便共享互聯網絡中龐大的信息資源。以太網經過20年的發展,成為當今互聯網絡中底層鏈接不可缺少的部分。在某些應用領域,嵌入式設備在價格、體積及實時性等方面,有著標準計算機無法比擬的優點。嵌入式設備的網絡化開發有著廣闊的前景。在開發過程中,首先要解決的問題之一就是與以太網的接口問題:如何利用通用計算機的網絡接口器件應用于嵌入式網絡的開發。RTL8019AS以太網接口芯片正好能滿足這一需要,它具有極佳的性價比。以下就幾個方面來詳細討論其具體應用。 一、RTL8019AS以太網控制器簡介 由臺灣Realtek公司生產的RTL8019AS 以太網控制器,由于其優良的性能、低廉的價格,使其在市場上10Mbps網卡中占有相當的比例。 1.主要性能 (1)適應于Ethernet II 、IEEE802.3 、10Base5、10Base2、10BaseT; (2)支持8位、16位數據總線; (3)全雙工,收發可同時達到10Mbps的速率,具有睡眠模式,以降低功耗; (4)內置16KB的SRAM,用于收發緩沖,降低對主處理器的速度要求; (5)可連接同軸電纜和雙絞線,并可自動檢測所連接的介質; (6)100 腳的TQFP封裝,縮小PCB尺寸。 2.內部結構 按數據鏈路的不同,可以將RTL8019AS內部劃分為遠程DMA(remote DMA)通道和本地DMA(local DMA)通道兩個部分。本地DMA完成控制器與網線的數據交換,主處理器收發數據只需對遠程DMA操作。當主處理器要向網上發送數據時,先將一幀數據通過遠程DMA通道送到RTL8019AS中的發送緩存區,然后發出傳送命令。RTL8019AS在完成了上一幀的發送后,再完成此幀的發送。RTL8019AS接收到的數據通過MAC比較、CRC校驗后,由FIFO存到接收緩沖區,收滿一幀后,以中斷或寄存器標志的方式通知主處理器。原理框圖如圖1所示。 圖1 RTL8019AS原理框圖 在圖1中,接收邏輯在接收時鐘的控制下,將串行數據拼成字節送到FIFO和CRC;發送邏輯將FIFO送來的字節在發送時鐘的控制下逐步按位移出,并送到CRC;CRC邏輯在接收時對輸入的數據進行CRC校驗,將結果與幀尾的CRC比較,如不同,該幀數據將被拒收,在發送時CRC對幀數據產生CRC,并附加在數據尾傳送;地址識別邏輯對接收幀的目的地址與預先設置的本地物理地址進行比較,如不同且不滿足廣播地址的設置要求,該幀數據將被拒收;FIFO邏輯對收發的數據作16個字節的緩沖,以減少對本地DMA請求的頻率。 3.數據幀的組成 標準的IEEE 802.3數據包由以下幾個部分組成:前導位(preamle)、幀起始位(SFD)、目的地址(destination)、源地址(source)、數據長度(length)、數據(data)、幀校驗字(FCS)。如圖2所示,數據場的個數可從46B(Byte)~1500B(Byte),如一組要傳送的數據為46Byte,就用零補足;超過1500Byte時,需要拆成多個幀傳送。前導位、幀起始位和幀校驗字僅供控制器本身用,主處理器收到的數據幀的組成依次包括:接收狀態(1Byte )、下一幀的頁地址指針(1Byte)、目的地址(6Byte)、源地址(6Byte)、數據長度/幀類型(2Byte)、數據場。數據長度/幀類型的值小于或等于1500Byte時,表示數據場的長度;反之,表示數據幀的類型。如值依次為 0x08,0x00,表示數據場為IP包;值依次為0x08,0x06 ,表示數據場為ARP包。 圖2 IEEE802.3幀的組成 4.RTL8019AS的DMA操作RTL8019AS 是針對PC機的ISA總線設計的。如運用于嵌入式設備中,則在硬件和軟件的設計上應有一些特殊性。嵌入式設備的主處理器可通過其映射到16個I/O地址上的寄存器來完成對RTL8019AS的操作。其寄存器地址如表1所列。 需要指明的一點是,RTL8019AS的DMA與平時所說的DMA有點不同。RTL8019AS的local DMA操作是由控制器本身完成的,而其remote DMA 并不是在無主處理器的參與下,數據能自動移到主處理器的內存中,它的操作機制是這樣的:主處理器先賦值于romote DMA 的起始地址寄存器RSAR0、RSAR1和字節計數器RBCR0、RBCR1,然后在RTL8019AS的DMA I/O地址上讀寫指定地址上的數據。 RTL8019AS內置的16KB 的SRAM可劃分為接收緩沖和發送緩沖兩個部分。緩沖以頁為單位,每頁256個字節,16KB的SRAM的頁范圍規定在0x40~0x80,由PSTART 和PSTOP寄存器來設定接收緩沖頁的范圍;由RSAR0、1和RBCR0、1寄存器來設定發送緩沖頁的范圍。CURR指向接收到的幀的起始頁,Boundary指向還未讀的幀的起始頁。當CURR到達了接收緩沖頁的底部,即與PSTOP相等時,CURR又會自動指向到PSTART處。與DMA有關的寄存器如圖3所示。 圖3 與DMA有關的寄存器 二、基于RTL8019AS的嵌入式設備網絡互連設計方案 1.RTL8019AS的硬件電路設計 目前局域網常見的是采用雙絞線為通信介質。圖4為MOTOROLA的龍珠(Dragonball)處理器MC68VZ328(以下簡稱VZ328)和RTL8019AS的接口電路。RTL8019AS的工作電壓為5V,而VZ328的工作電壓為3.3V,所以RTL8019AS的輸出需要電平的轉換。在圖4中,此電壓的轉換由U2 74F163245 完成。讀數據時,D[0:15]數據經U2 送到VZ328;寫數據時,D[0:15]送到RTL8019AS。 RTL8019AS在復位的上升沿鎖定IOCS16腳的電平,其值決定數據總線的寬度:高電平時為16位總線方式,低電平時為8位總線方式。如掛接到8位主設備上,將以27kΩ的電阻下拉置地,D[8:15]空懸。為提高收發速度,圖4采用16位數據總線方式。由于RTL8019AS沒有外接初始化的EPROM,故其復位時命令寄存器(CR)的I/O地址的值為缺省值0X300,所以,為滿足RTL8019AS的ISA時序,A5~A19的連接必須使其地址鎖定在0X300,否則,就無法訪問到RTL8019AS的寄存器。INT0中斷腳經電平轉換U4接到VZ328的IRQ6。VZ328以片選腳尋址RTL8019AS,接其端。在程序中,以I/O方式訪問RTL8019AS,所以僅需要A[0:4]地址線,、接高電平關閉其MEMORY方式。 圖4 RTL8019AS與68VZ328接口電路 2.RTL8019AS的軟件編程 對RTL8019AS的軟件操作,有查詢和中斷兩種方式。在查詢方式下,主程序通過CURR和Boundary兩個寄存器的值來判斷是否收到一幀數據。當Boundary與CURR不等時,說明接收緩沖區接收到了新的幀,主程序讀取數據后,以讀取幀的第二個字節(下一幀的頁地址)更新Boundary,主程序循環跟蹤CURR和Boundary達到數據的接收目的。主程序在發送一幀數據時,先要查TSR寄存器判斷上一幀是否發送完畢。在實時多任務的環境,一般采用中斷方式來處理RTL8019AS的收發。圖5是一典型的中斷處理程序(ISR)的流程。當主程序響應RTL8019AS的中斷時,在ISR的入口,根據讀取的中斷狀態寄存器(ISR)的值來確定程序的走向。 圖 5 ISR流程圖 |