1 引言
據統計數字表明,目前全球85%的網絡采用以太網技術。尤其是上世紀九十年代初,隨著計算機性能的不斷提高以及通信量的急劇增加,傳統局域網逐漸超出了自身負荷,交換式以太網技術應運而生,大大提高了局域網性能。眾所周知,傳統以太網交換機工作在ISO/OSI網絡協議參考模型的第二層―數據鏈路層上,而存儲―轉發(Store-Forward)是目前最常用的交換方式之一,即首先將接收到的數據包(Packet)存儲到數據緩沖區中,然后進行CRC(循環冗余校驗),對錯誤的數據包進行處理之后再取出目的地址,最后通過搜索地址學習表將數據包轉發到對應的目的端口。能夠做到“一次學習,多次交換”。此外,基于第三層―網絡層的交換機還具有簡單的路由選擇功能,且速度優于路由器。隨著ASIC(專用集成電路)的迅猛發展,無論二層交換還是三層路由都可以由交換機中的交換控制芯片來完成。因此,交換控制芯片已經成為決定交換機性能的最主要因素。對于局域網中的主干核心交換機來說,采用具有三層路由及先進網絡管理功能的交換控制芯片十分必要;而對于用戶接入或樓宇接入交換機,經濟實用的二層交換控制芯片完全能夠滿足需要。隨著SOHO(Small Office Home Office)和公司、機構局域網的發展,對于用戶接入交換機的需求也越來越大。用戶接入交換機一般應用于規模不太大的局域網,為公司、機構、家庭等小型局域網提供高效、廉價的共享上網方案。與主干核心交換機相比,用戶接入交換機的體積小、能耗低、性能指標較低且外部接口較少,相對而言更容易設計和開發。本文主要介紹了基于ADM6999以太網交換控制芯片和8051微控制器的小型可管理用戶接入交換機的設計與實現方法。
2 交換機的硬件設計與實現
ADM6999是一款高性價比、高集成度(集控制器、物理塊和存儲塊于一體)的以太網交換控制芯片。它包括8個基本端口和1個可配置成RMII/MII/GPSI的擴展端口,所有端口都支持10/100Mbps的全/半雙工模式。ADM6999提供了802.1p(Q.O.S.),802.1q(VLAN),端口MAC地址鎖定,監控端口狀態等功能,主要應用于低端的SOHO市場,是開發用戶接入交換機的合適選擇。為節約開發成本,采用價格比較便宜的8051或MCS-51系列單片機對ADM6999進行控制和管理,此外,需要外接的硬件還包括EEPROM、Transformer(變壓器)及Transceiver(收發器)等。基于本設計方案的交換機內部硬件組成如圖1所示。
圖1 交換機內部硬件組成
(1) ADM6999與EEPROM及8051的接口
圖2 ADM6999與AT93C46及AT89C52的接口
ADM6999工作時所需的全部參數必須存儲在外接的EEPROM中,考慮到存儲容量、封裝形式等因素,AT93C46串行16位EEPROM是合適選擇。它的存儲容量為1KB,共有 8個引腳。將其中的CS(選片)、SK(時鐘)、DI(輸入)、DO(輸出)4個引腳分別連接ADM6999的對應引腳,ADM6999即可對其進行操作。8051單片機在本設計中是作為以太網交換機內部的CPU和程序存儲器,需要存儲并運行ADM6999的全部管理程序,因此至關重要。AT89C52是8051系列的8位單片機,片內具有3個時鐘/計數器、8個中斷源、8KB FLASH(存儲程序)、256B RAM(運行程序)。AT89C52共有32條I/O線,選擇其中的5條分別作為RC(復位)、CS、SK、DI、DO直接與ADM6999的對應引腳連接即可。ADM6999與AT93C46及AT89C52的接口如圖2所示。
(2) ADM6999與RJ-45及AT89C52與RS232C的接口
ADM6999與RJ-45之間需要連接兩片PH406466作為變壓器,每片為ADM6999連接4個RJ-45接口,以滿足以太網交換機具有8個網絡設備接口的需要;此外,AT89C52與RS232C之間需要連接一片LTC1348,為AT89C52連接1個RS232C接口,以便與PC機進行串口通訊。
(3) ADM6999與LED燈的接口
ADM6999為每個端口提供3個LED狀態顯示燈,分別表示連接、速度和雙工。本設計中利用3個74LVT164(串―并轉換芯片),分別將ADM6999輸出的LEDDATA(燈數據)和LEDCLK(燈時鐘)兩條串行數據線轉換成8條并行數據線之后,直接通過限流電阻連接至LED燈。
3 交換機的軟件設計與實現
因為本設計方案中ADM6999通過外接AT89C52與PC機進行RS232C串口通訊,以實現利用PC機對交換機進行配置和管理的目的,所以必須實現的軟件主要包括AT89C52中的交換機初始化配置程序和PC機中的用戶管理程序兩部分。其中AT89C52中運行的程序使用目前MCS-51系列單片機的首選開發工具KEIL C51編寫;而用戶管理程序既可以利用KEIL C51編寫,嵌入到AT89C52中,通過WINDOWS操作系統自帶的超級終端(HyperTerminal)與PC機實現RS232C串口通訊,也可利用Microsoft Visual Basic 6.0等可視化開發工具編寫具有圖形界面的應用程序,運行在PC機上,與AT89C52進行RS232C串口通訊。這兩種方法各有所長:前者不需要在PC機中單獨安裝程序;而后者的操作更加直觀、方便。軟件的設計與實現主要包括EEPROM操作、設置端口狀態及監測端口狀態等內容。
(1) EEPROM操作
本設計中的EEPROM主要存儲ADM6999啟動時的設置參數,包括端口配置信息、VLAN映射表等,是以太網交換機內部的重要硬件組成部分,對EEPROM的操作也是整個軟件實現的基礎。由于選用的AT93C46為16位串行EEPROM,而AT89C52為8位單片機,因此通過89C52進行EEPROM讀/寫時,必須先處理低地址的8位,再處理高地址的8位。此外,AT93C46初始化時,CS、SK必須為低電平,而DI、DO必須為高電平,即:
CS=0;SK=0;DI=1;DO=1。
而對AT93C46進行讀/寫時,CS、DO必須為高電平,即:
CS=1;DO=1。
(2) 設置端口狀態
ADM6999的8個基本端口的所有設置信息都存儲在EEPROM中,端口P0~P7對應的EEPROM地址分別為0x01h~0x08h,每16位表示1個端口的所有狀態。其中位0表示是否具有802.3x流量控制,值1為有,0為無;位1表示是否具有自動協商功能,值1為有,0為無;位2表示速度,值1為100Mbps,0為10Mbps;位3表示雙工條件,值1為全雙工,0為半雙工;位4對端口發送的數據包添加標記,值1為有標記,0為無標記;位5表示端口是否激活,值1為屏蔽,0為激活。前6位包括了每個端口的基本設置信息,后9位的主要功能是設置VLAN(Virtual Local Area Network,虛擬局域網)、TOS(服務類型)等信息。其中VLAN是一種通過將局域網內的設備邏輯地而不是物理地劃分成多個網段,從而實現虛擬工作組的新興技術。一方面,VLAN建立在局域網交換機的基礎之上;另一方面,VLAN是局域網交換機的靈魂。VLAN具有控制廣播風暴、確保網絡安全、簡化網絡管理等優點,是否具有VLAN目前已經成為衡量局域網交換機性能的一項重要技術指標。VLAN的劃分方式包括基于端口的VLAN、基于MAC地址的VLAN、基于網絡層的VLAN等。ADM6999根據802.1Q協議標準,支持基于端口的VLAN,用戶可以為每個端口定義4位VLAN ID,最多可劃分16個VLAN組。
(3) 監測端口狀態
通過讀取ADM6999內部寄存器(地址為0x00h~0x3ch)來監測所有端口的狀態,基本狀態包括連接、速度、雙工和流控。此外還可以實時監測接收、發送及沖突、錯誤的數據包計數和接收、發送的數據字節計數,如果數據包計數或數據字節計數達到最大值,ADM6999就自動將內部寄存器的相應地址位置1,做上溢(Overflow)標記。
4 結語
因為ADM6999只支持第二層網絡協議,且基本狀態的設置只能通過RS232C串口通訊實現,所以下一步的工作主要是為交換機設置IP地址,進而實現PING及TELNET等功能,以滿足實時監控與遠程管理的需要。