采用BF537構(gòu)建雙冗余以太網(wǎng)方案的設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
隨著信息技術(shù)的高速發(fā)展,網(wǎng)絡(luò)通信顯得越發(fā)重要,以太網(wǎng)成為了各種控制系統(tǒng)接口互聯(lián)的主要媒介。在金融機(jī)構(gòu)、軍事應(yīng)用等特殊應(yīng)用場(chǎng)合對(duì)網(wǎng)絡(luò)系統(tǒng)的穩(wěn)定性要求非常高,為了提高系統(tǒng)的可靠性和抗毀性,采用雙冗余的設(shè)計(jì)方式。雙冗余網(wǎng)絡(luò)實(shí)現(xiàn)是以故障檢測(cè)為基礎(chǔ),通過軟件檢查、交換機(jī)及網(wǎng)絡(luò)節(jié)點(diǎn)的網(wǎng)卡協(xié)同處理。冗余網(wǎng)絡(luò)的構(gòu)建方式通常是在每個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)采用雙網(wǎng)卡,中間用2個(gè)HUB或交換機(jī)相連。這樣當(dāng)某個(gè)節(jié)點(diǎn)的一塊網(wǎng)卡、網(wǎng)線或者HUB出現(xiàn)故障時(shí),系統(tǒng)會(huì)啟用另一塊冗余網(wǎng)卡使得系統(tǒng)仍能夠正常運(yùn)行。本文提出了兩種基于BF537的冗余網(wǎng)絡(luò)構(gòu)建方案。
1 BF537的結(jié)構(gòu)特點(diǎn)
BF537是Blackfin家族的升級(jí)產(chǎn)品,其在標(biāo)準(zhǔn)Blackfin內(nèi)核的基礎(chǔ)上擁有豐富接口,并在內(nèi)部集成有以太網(wǎng)MAC控制器。Blackfin內(nèi)核包含2個(gè)乘/累加器(MAC),2個(gè)40位的ALU,4個(gè)視頻專用8位ALU和1個(gè)40位移位器。運(yùn)算單元處理來自寄存器組的8、16或32位數(shù)據(jù)。每個(gè)MAC每周期可完成一個(gè)16位×16位的乘法運(yùn)算,并把結(jié)果累加到40位的累加器中,提供8位的精度擴(kuò)展。ALU單元執(zhí)行標(biāo)準(zhǔn)的算術(shù)和邏輯運(yùn)算,由于2個(gè)ALU具備對(duì)16或32位數(shù)據(jù)操作的能力,因此運(yùn)算單元具備的靈活性可以滿足各種應(yīng)用中信號(hào)處理的要求。每個(gè)32位的輸入寄存器可以作為2個(gè)16位的寄存器,因此每個(gè)ALU可以完成非常靈活的單16位算術(shù)運(yùn)算。通過把寄存器當(dāng)作2個(gè)16位的操作數(shù)使用,雙16位或單32位操作可以在一個(gè)周期中完成。更好地利用第2個(gè)ALU,4個(gè)16位操作可以簡(jiǎn)單地完成,加速了每個(gè)周期的吞吐量。強(qiáng)大的40位移位器功能豐富,可以對(duì)數(shù)據(jù)進(jìn)行移位、循環(huán)移位、歸一化、提取和存儲(chǔ)等操作。運(yùn)算單元所使用的數(shù)據(jù)來自具有16個(gè)16位操作數(shù)或8個(gè)32位操作數(shù)的寄存器組。
同時(shí)BF537把存儲(chǔ)器視為統(tǒng)一的4 GB的地址空間,使用32位地址并采用分級(jí)的存儲(chǔ)器結(jié)構(gòu)。Level 1(L1)存儲(chǔ)器一般以全速運(yùn)行,沒有或只有很少延遲。Level 2(L2)/Level 3(L3)分布在片內(nèi)或片外,對(duì)其訪問會(huì)耗費(fèi)多個(gè)處理器周期。在L1級(jí),指令存儲(chǔ)器只存放指令,2個(gè)數(shù)據(jù)存儲(chǔ)器存放數(shù)據(jù),1個(gè)專用的臨時(shí)數(shù)據(jù)存儲(chǔ)器存放堆棧和局部變量信息。在L2/L3級(jí)可以存放指令和數(shù)據(jù)。
2 雙冗余以太網(wǎng)構(gòu)建方案
以太網(wǎng)接口電路主要由MAC控制器和物理層接口(PHY)兩大部分構(gòu)成,這里從是否具備獨(dú)立的MAC控制器出發(fā)提出了2種不同的構(gòu)建雙冗余以太網(wǎng)的方案。
2.1 基于獨(dú)立MAC控制器的設(shè)計(jì)方案(方案1)
BF537內(nèi)部集成了一個(gè)支持IEEE802.3 MAC控制層協(xié)議的MAC控制器,只需要在外部外接一個(gè)以太網(wǎng)接口器件,便可以形成一個(gè)完整的以太網(wǎng)通道。因此選擇了SMSC公司的LAN8187,它提供了標(biāo)準(zhǔn)的MII總線接口,方便地與BF537相連接,連接方式如圖1所示。在MII總線上進(jìn)行數(shù)據(jù)的收發(fā),MDC和MDIO則用來完成對(duì)接口芯片LAN8187寄存器的讀寫。以下稱由BF537的MAC控制器與物理層接口芯片LAN8187構(gòu)成的以太網(wǎng)通道為主網(wǎng)絡(luò)通道。
如果要求雙冗余網(wǎng)絡(luò)通道擁有獨(dú)立的MAC控制器,則需要在BF537外部擴(kuò)展一個(gè)以太網(wǎng)控制器,如圖1所示,選擇同樣來自于SMSC公司的LAN91C111,通過BF537的外部總線與之相連。選擇LAN91C111的16位總線工作方式使其A0~A15與BF537的地址總線相連,D0~D15與BF537的數(shù)據(jù)總線相連,并由BF537的AMS信號(hào)控制LAN9lClll的片選,外部PF引腳來響應(yīng)來自LAN91C111的中斷請(qǐng)求。
2.2 基于共用MAC控制器的設(shè)計(jì)方案(方案2)
從應(yīng)用角度分析,即使系統(tǒng)擁有獨(dú)立的MAC控制器,在實(shí)際應(yīng)用中也要求2個(gè)MAC控制器擁有相同的物理地址,因?yàn)槿鬗AC地址不同,冗余切換將引起協(xié)議層中ARP綁定表的變化,重新映射ARP表中物理地址和IP地址之間的關(guān)系將增加冗余切換的時(shí)間,影響到網(wǎng)絡(luò)通信的實(shí)時(shí)性。
因此提出一套MAC控制器,2個(gè)以太網(wǎng)接口芯片的設(shè)計(jì)方案。該設(shè)計(jì)方案通過1片CPLD將BF537的MII總線分別轉(zhuǎn)接到2片IAN8187上,并由BF537來控制轉(zhuǎn)接的時(shí)機(jī)。這樣形成了2個(gè)以太網(wǎng)通信通道,大大簡(jiǎn)化了設(shè)計(jì),提高了冗余切換的實(shí)時(shí)性。該設(shè)計(jì)方案如圖2所示。
3 冗余切換軟件設(shè)計(jì)
3.1 網(wǎng)絡(luò)狀態(tài)監(jiān)測(cè)
冗余切換的實(shí)現(xiàn)首先在于對(duì)網(wǎng)絡(luò)進(jìn)行實(shí)時(shí)在線監(jiān)測(cè),其檢測(cè)的方法是基于LAN8187的寄存器,表1為IAN8187寄存器的定義。
表l中,Basic Control Register為基本控制寄存器,通過配置其各位,完成芯片軟復(fù)位、10 M/100 M選擇、全雙工/半雙工選擇、LookBack模式選擇、自協(xié)商等功能。Basic StatusRegister為基本狀態(tài)寄存器,對(duì)其查詢可以得到自協(xié)商結(jié)果、網(wǎng)絡(luò)物理連接狀態(tài)等網(wǎng)絡(luò)基本狀態(tài)。PHY Identifierl/PHYIdentifier 2寄存器標(biāo)識(shí)了芯片的Chip ID。因此,對(duì)網(wǎng)絡(luò)狀態(tài)的實(shí)時(shí)監(jiān)測(cè)實(shí)際上就是實(shí)時(shí)讀取Basic Status Register,并對(duì)結(jié)果作出判斷。
3.2 程序設(shè)計(jì)
可以通過操作BF537的寄存器EMAC_STAADD完成其對(duì)LAN8187寄存器的讀寫。對(duì)LAN8187寄存器讀寫的函數(shù)定義為:
u16 RdPHYReg(u16 PHYAddr,u16 RegAddr);
void WrPHYReg(u16 PHYAddr,u16 RegAddr,u32 Data);
其中PHYAddr為芯片的物理地址,RegAddr為寄存器地址。
對(duì)Basic Status Register的監(jiān)測(cè)采用輪詢的機(jī)制,即設(shè)定一個(gè)信號(hào)量Link_status,其周期為2 ms,因此每隔2 msEther moniter線程被觸發(fā)一次。在Ether_moniter中通過調(diào)用RdPHYReg()函數(shù),讀取Basic Status Register的值,并判斷Link位。Ether_moniter線程流程如圖3所示。
對(duì)于設(shè)計(jì)方案1來講,當(dāng)檢測(cè)到需要進(jìn)行網(wǎng)絡(luò)切換時(shí),需要停用當(dāng)前網(wǎng)卡初始化備用網(wǎng)絡(luò)LAN91C111并設(shè)定相同的IP地址以及MAC地址。對(duì)于方案2,則只需要通知CPLD將通道切換至備用的LAN8187接口。
4 冗余切換測(cè)試
用Visual C++6.0開發(fā)的簡(jiǎn)單的上位機(jī)測(cè)試程序,每隔1ms發(fā)送一個(gè)UDP數(shù)據(jù)報(bào),并給每個(gè)數(shù)據(jù)報(bào)編寫不同的序號(hào)。在BF537中編寫程序不斷接收上位機(jī)發(fā)來的數(shù)據(jù)報(bào),然后制造網(wǎng)絡(luò)通信故障,本文構(gòu)建的冗余網(wǎng)絡(luò)將會(huì)自動(dòng)切換到備用通道繼續(xù)接收上位機(jī)的數(shù)據(jù)報(bào),最后通過檢測(cè)接收到數(shù)據(jù)報(bào)的序號(hào)來確定冗余切換所消耗的時(shí)間。分別對(duì)兩種方案所構(gòu)建的冗余網(wǎng)絡(luò)的切換進(jìn)行測(cè)試,結(jié)果如表2所示。
從實(shí)驗(yàn)結(jié)果可以看出方案2具有快速切換的優(yōu)點(diǎn),丟包率低;方案l平均丟包數(shù)遠(yuǎn)遠(yuǎn)大于方案2,并且切換時(shí)間長(zhǎng)。
5 結(jié)束語(yǔ)
本文提出了兩種基于BF537構(gòu)建雙冗余以太網(wǎng)的方案,分別論述了其原理、器件選擇、連接方法,并做出軟件設(shè)計(jì)。最后經(jīng)過測(cè)試,方案2的切換效果和時(shí)間非常理想,最終在實(shí)際項(xiàng)目中得到了應(yīng)用。