<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 設計應用 > 基于BF537的雙冗余以太網(wǎng)的設計

基于BF537的雙冗余以太網(wǎng)的設計

作者: 時(shí)間:2010-08-12 來(lái)源:網(wǎng)絡(luò ) 收藏

0 引言

本文引用地址:http://dyxdggzs.com/article/260827.htm

  隨著(zhù)信息技術(shù)的高速發(fā)展,網(wǎng)絡(luò )通信也顯得越發(fā)重要,也成為了各種控制系統接口互聯(lián)的主要媒介。在金融機構、政府部門(mén)、軍事應用等特殊應用場(chǎng)合對網(wǎng)絡(luò )系統的穩定性要求非常高,為了提高系統的可靠性和抗毀性,常常采用雙冗余的設計方式。雙冗余網(wǎng)絡(luò )的實(shí)現是以故障檢測為基礎,通過(guò)軟件檢查、交換機及網(wǎng)絡(luò )節點(diǎn)的網(wǎng)卡協(xié)同處理共同完成的。冗余網(wǎng)絡(luò )的構建方式通常是在每個(gè)網(wǎng)絡(luò )節點(diǎn)采用雙網(wǎng)卡,中間用兩個(gè)HUB或交換機相連。這樣當某個(gè)節點(diǎn)的一塊網(wǎng)卡、網(wǎng)線(xiàn)或者HUB出現故障時(shí),系統會(huì )馬上啟用另一塊冗余網(wǎng)卡使得系統仍能夠正常運行。本文基于BF537提出了兩種冗余網(wǎng)絡(luò )的構建方案和實(shí)現方法。

  1 BF537結構特點(diǎn)

  BF537是家族的升級產(chǎn)品,其在標準內核的基礎上擁有更加豐富的接口,并在內部集成了一個(gè)MAC控制器。BF537的內部結構如圖1所示。

  內核包含2個(gè)乘/累加器(MAC),2個(gè)40位的ALU,4個(gè)視頻專(zhuān)用8位ALU和1個(gè)40位移位器。運算單元處理來(lái)自寄存器組的8位、16位或者32位數據。每個(gè)MAC每周期可完成一個(gè)16位乘16位的乘法運算,并把結果累加到40位的累加器中,提供8位的精度擴展。ALU單元執行標準的算術(shù)和邏輯運算,由于2個(gè)ALU具備對16位或32位數據操作的能力,因此運算單元具備的靈活性可以滿(mǎn)足各種應用中信號處理的要求。每個(gè)32位的輸入寄存器可以作為2個(gè)16位的寄存器,因此每個(gè)ALU可以完成非常靈活的單16位算術(shù)運算。通過(guò)把寄存器當作2個(gè)16位的操作數使用,雙16位或單32位操作可以在1個(gè)周期中完成。更好地利用第二個(gè)ALU,四個(gè)16位操作可以簡(jiǎn)單地完成,加速了每個(gè)周期的吞吐量。強大的40位移位器功能豐富,可以對數據進(jìn)行移位、循環(huán)移位、歸一化、提取和存儲等操作。運算單元所使用的數據來(lái)自具有16個(gè)16位操作數或8個(gè)32位操作數的寄存器組。

  同時(shí)BF537把存儲器視為一個(gè)統一的4 GB的地址空間,使用32位地址并采用分級的存儲器結構。Level(L1)存儲器一般以全速運行,沒(méi)有或只有很少的延遲。Level 2(L2)/Level 3(L3)分布在片內或片外,對它的訪(fǎng)問(wèn)會(huì )耗費多個(gè)處理器周期。在L1級,指令存儲器只存放指令,2個(gè)數據存儲器存放數據,一個(gè)專(zhuān)用的臨時(shí)數據存儲器存放堆棧和局部變量信息。在L2/L3級可以存放指令和數據。

  2 雙冗余構建方案

  從硬件角度看,以太網(wǎng)接口電路主要由MAC控制器和物理層接口(PHY)兩大部分構成,本文從是否具備獨立的MAC控制器出發(fā)提出了兩種不同的構建雙冗余以太網(wǎng)的方案。

  2.1 基于獨立MAC控制器的設計方案

  上文中提到,BF537在內部集成了一個(gè)支持IEEE802.3 MAC控制層協(xié)議的MAC控制器,只需要在外部外接一個(gè)以太網(wǎng)接口芯片,便可以形成一個(gè)完整的以太網(wǎng)通道。因此本文選擇了SMSC公司的LAN8187,它提供了標準的MII總線(xiàn)接口,可以方便地與BF537相連接,連接方式如圖2所示。其中在MII總線(xiàn)上進(jìn)行數據的收發(fā),MDC和MDIO則用來(lái)完成對接口芯片LAN8187寄存器的讀寫(xiě)。本文在下面稱(chēng)由BF537的MAC控制器與物理層接口芯片LAN8187構成的以太網(wǎng)通道為主網(wǎng)絡(luò )通道。

  如果要求雙冗余網(wǎng)絡(luò )通道擁有獨立的MAC控制器,則需在BF537外部擴展一個(gè)以太網(wǎng)控制器,見(jiàn)圖2,選擇同樣來(lái)自于SMSC公司的LAN91C-111,通過(guò)BF537的外部總線(xiàn)與之相連。選擇LAN91C111的16位總線(xiàn)工作方式,其A0~A15與BF537的地址總線(xiàn)相連,DO~D15與BF537的數據總線(xiàn)相連,并由BF537的AMS信號控制LAN91C111的片選,外部PF管腳來(lái)響應來(lái)自L(fǎng)AN91C111的中斷請求。

  具有獨立MAC控制器的雙冗余以太網(wǎng)的設計方案如圖2所示。

  2.2 基于共用MAC控制器的設計方案

  從應用角度分析,即使系統擁有獨立的MAC控制器,在實(shí)際應用中也需要要求兩個(gè)MAC控制器擁有相同的物理地址,因為若MAC地址不同,冗余切換將引起協(xié)議層中ARP綁定表的變化,重新映射ARP表中物理地址和IP地址之間的關(guān)系將增加冗余切換的時(shí)間,影響到網(wǎng)絡(luò )通信實(shí)時(shí)性。

  因此本文提出了一套MAC控制器,兩個(gè)以太網(wǎng)接口芯片的方案。該設計方案通過(guò)一片CPLD將BF537的MII總線(xiàn)分別轉接到兩片LAN8187上,并由BF537來(lái)控制轉接的時(shí)機,如圖3所示。這樣形成了兩個(gè)以太網(wǎng)通信通道,大大簡(jiǎn)化了設計,提高了冗余切換的實(shí)時(shí)性。

  3 冗余切換軟件設計

  3.1 網(wǎng)絡(luò )狀態(tài)監測

  冗余切換的實(shí)現首先在于對網(wǎng)絡(luò )實(shí)時(shí)在線(xiàn)監測,本文中檢測的方法基于LAN8187的寄存器。LAN8187寄存器定義如表1所示。其中,Basic Control Register為基本控制寄存器,通過(guò)配置其各位,可以完成芯片軟復位、lO/100 MHz選擇、全雙工/半雙工選擇、LookBack模式選擇、自協(xié)商等功能。Basic Status Register為基本狀態(tài)寄存器,對其查詢(xún)可以得到自協(xié)商結果、網(wǎng)絡(luò )物理連接狀態(tài)等網(wǎng)絡(luò )基本狀態(tài)。PHY IdenTIfier 1/PHY Identitier 2兩個(gè)寄存器標識了芯片的Chip ID。

  因此,對網(wǎng)絡(luò )狀態(tài)的實(shí)時(shí)監測實(shí)際上就是實(shí)時(shí)讀取Basic Status Register,并對結果做出判斷。

  3.2 程序設計

  可以通過(guò)操作BF537的寄存器EMAC_STAADD完成其對LAN8187寄存器的讀寫(xiě)。

  對LAN8187寄存器讀寫(xiě)的函數定義為:

  u16 RdPHYReg(u16 PHYAddr,u16 RegAddr);

  void WrPHYReg(u16 PHYAddr,u16 RegAddr,u32 Data);

  其中PHYAddr為芯片的物理地址,RegAddr為寄存器地址。

  對Basic Status Register的監測采用輪詢(xún)的機制,即設定一個(gè)信號量Link_status,其周期為2ms,因此每隔2 ms,Ether_moniter線(xiàn)程被觸發(fā)一次。在Ether_moniter中通過(guò)調用RdPHYReg()函數,讀取Basic Status Register的值,并判斷Link位。Ether-moniter線(xiàn)程流程圖如圖4所示。

  對于設計方案1來(lái)講,當檢測到需要進(jìn)行網(wǎng)絡(luò )切換時(shí),需要停用當前網(wǎng)卡初始化備用網(wǎng)絡(luò )LAN91C111并設定相同的lP地址以及MAC地址。對于方案2,則只需要通知CPLD將通道切換至備用的LAN8187接口。

  4 冗余切換測試

  用Visual C++6.O開(kāi)發(fā)簡(jiǎn)單的上位機測試程序,每隔1 ms發(fā)送一個(gè)UDP數據報,并給每個(gè)數據報編寫(xiě)不同的序號。在BF537中編寫(xiě)程序不斷接收上位機發(fā)來(lái)的數據報。然后制造網(wǎng)絡(luò )通信故障,本文構建的冗余網(wǎng)絡(luò )將會(huì )自動(dòng)切換到備用通道繼續接收上位機的數據報。最后通過(guò)檢測接收到數據報的序號來(lái)確定冗余切換所消耗的時(shí)間。分別對兩種方案所構建的冗余網(wǎng)絡(luò )的切換進(jìn)行測試,結果如表2所示。

  從實(shí)驗結果可以看出方案2具有快速切換的優(yōu)點(diǎn),丟包率低;方案1平均丟包數遠大于方案2,并且切換時(shí)間長(cháng)。

  5 結語(yǔ)

  提出了兩種基于BF537構建雙冗余以太網(wǎng)的方案,分別論述了其原理、器件選擇、連接方法,并做出軟件設計。最后經(jīng)過(guò)測試,方案2的切換效果和時(shí)間非常理想,最終在實(shí)際項目中得到了應用。



關(guān)鍵詞: 以太網(wǎng) Blackfin Mac

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>