基于AVR高性能單片機的以太網接口設計
2 系統軟件實現
2.1 RTL8019AS地址空間與寄存器
RTL8019AS內部的16 KB的RAM用于收發緩沖,地址為Ox4000~0x7FFF,收發緩沖以頁為單位,每頁256 B,共64頁,如果某頁沒有完全填滿數據,則下包數據也不能繼續使用該頁,只能使用新的頁。一般將前12頁作為發送緩沖區,分為兩個6頁的緩沖區(因為一個最大數據包占6頁),兩個發送緩沖區交替使用,可提高發送效率,后52頁作為接收緩沖區。該RAM是雙端口的,具有兩套總線,一套是RTL8019AS讀寫該RAM,即本地DMA;另一套是單片機讀寫該RAM,即遠程DMA,要接收和發送數據包就必須對這塊RAM進行DMA讀寫。
RTL8019AS具有32位I/O地址,地址偏移量為00H~1FH,本系統中對應于300H~31FH,其中,00H~0FH為16個寄存器地址,寄存器分為4頁,與NE2000兼容的只有前3頁,第4頁是RTL8019AS自己定義的,對于其他兼容NE2000的芯片無效,所以為了保證驅動程序對所有NE2000兼容的網卡都有效,不要去操作第4頁的寄存器。10H~17H為8個遠程DMA地址,都可以用來做遠程DMA地址,使用其中一個即可,微控制器通過讀寫數據端口10H~17H實現對緩沖區的訪問。18H~1FH共8個地址為復位端口,它們功能一樣,使用其中一個即可,用于RTL8019AS的熱復位。
2.2 嵌入式TCp/IP實現
TCP/IP協議族是一組不同層次上的多個協議的組合,分為鏈路層、網絡層、傳輸層和應用層。對于8位單片機來說,由于其處理速度和存儲能力的問題,要實現完整的TCP/IP協議棧是比較困難的,因此要根據其特點及自己的需求,對協議進行裁剪,保留其核心部分。該系統只實現了ARP,IP,ICMP,UDP,TCP協議,采用C語言編寫。
在鏈路層上,首先要解決RTL8019AS的驅動問題,驅動程序包括三部分:以太網接口芯片初始化程序、發送數據程序和接收數據程序,它們屏蔽了底層硬件處理細節,同時向上層軟件提供與硬件無關的接口。驅動程序將已封裝好的待發送數據按指定格式寫入芯片并啟動發送命令,8019會自動把數據包轉換成物理幀格式在信道上傳輸;反之,8019收到物理信號后將其還原成數據,按指定格式存放在芯片RAM中以便主機程序取用,下面給出部分初始化程序,主要是對一些寄存器進行設置,其中,reg00~regof為宏定義,代表RTL8019AS內地址偏移量為00H~0FH的寄存器地址。
低通濾波器相關文章:低通濾波器原理
雙絞線傳輸器相關文章:雙絞線傳輸器原理
評論