CPU接口芯片GT-48330在網(wǎng)管交換機(jī)中的應(yīng)用
GT-48330的CPU接口的電路設(shè)計(jì)說明:此設(shè)計(jì) 使用的CPU是Motorola公司的Coldfire 5206E。由于在16 b接口時(shí),MCF5205E的數(shù)據(jù)線數(shù)據(jù)是交換的,即D[31∶24]表示BYTE0;D[23∶16]表示BYTE1。同時(shí)在設(shè)計(jì)中將GT-48330的Endian管腳下拉,這樣GT-48330將工作在Little Endian模式下,其數(shù)據(jù)是 不進(jìn)行交換的,因此在外部需要將數(shù)據(jù)線進(jìn)行交換,即將GT-48330的AD[15:18]與CPU的D[23:16]相接,將GT-48330的AD[7:0]與CPU的D[31:24]相連接;GT-48330的地址線Add[11:0]與CPU的地址線A[11∶0]直接相接;片選信號(hào)CS與MCF5206E的CS1管腳相接;GT-48330的讀/寫信號(hào)RD和WR相連接后,再與MCF5206E的R/W信號(hào)相接。當(dāng)R/W為高電平時(shí),GT-48330的讀信號(hào)RD有效;當(dāng)R/W為低電平時(shí),GT-48330的寫信號(hào)WR有效;地址鎖存信號(hào)ALE與MCF5206E的TS信號(hào)相接,低電平有效;中斷管腳INT與MCF5206E的中斷管腳IRQ4相接,提供中斷信號(hào),低電平有效;GT-48330的DTACK與MCF5206E的TA相接,低電平有效,表示數(shù)據(jù)傳輸結(jié)束;RST信號(hào)直接與復(fù)位模塊的DSP1832(或MAX811)的輸出信號(hào)相連接,用于對(duì)GT-48330GT-48330的復(fù)位,低電平有效;CLK時(shí)鐘則由時(shí)鐘模塊提供,其頻率為54MHz。復(fù)位時(shí)GT-48330將對(duì)某些管腳進(jìn)行抽樣,以決定系統(tǒng)的工作狀態(tài)。在配置中拉高通過4.7 kΩ的電阻接3.3 V來實(shí)現(xiàn),拉低通過4.7kΩ的電阻接地來實(shí)現(xiàn)。
4 軟件實(shí)現(xiàn)
軟件分引導(dǎo)層(BOOT)和CTRL層。MCF5206E上電復(fù)位后從BOOT開始執(zhí)行,BOOT層程序功能包括上電初始化,引導(dǎo)或下裝CTRL層程序及上裝整片F(xiàn)lash的內(nèi)容。軟件總體框架如圖3所示。
首先對(duì)硬件進(jìn)行配置:包括片選、DRAM參數(shù)、初始化定時(shí)器、I/O等,然后進(jìn)行DRAM/CPU ISRAM自檢,若自檢失敗則從超級(jí)終端上輸出相應(yīng)的錯(cuò)誤信息,然后停機(jī)。若自檢通過則檢測(cè)CTRL層程序的完整性,若CTRL層程序完整則將其拷貝到DRAM的相應(yīng)位置并將控制權(quán)交給CTRL層程序;若CTRL層程序不完整則通過超級(jí)終端輸出相應(yīng)信息并允許下裝CTRL層程序或上裝整片F(xiàn)lash的內(nèi)容。
CTRL層程序提供一個(gè)超級(jí)終端界面,進(jìn)行各項(xiàng)功能模塊的設(shè)置及測(cè)試。界面設(shè)置的內(nèi)容如下:初始化設(shè)置及配置的讀取,GT48330寄存器的操作,交換芯片寄存器的操作,Switch各功能模塊操作:幀收發(fā)、VLAN設(shè)置、TRUNK操作、端口配置、MIB采集等。
在系統(tǒng)上電后,由電源模塊為整個(gè)系統(tǒng)提供電源支持,然后復(fù)位模塊將向整個(gè)系統(tǒng)提供復(fù)位信號(hào),時(shí)鐘模塊向系統(tǒng)提供參考時(shí)鐘。在MCF5206E和GT48330模塊復(fù)位之后,MCF5205E將從存儲(chǔ)模塊Flash中讀取程序進(jìn)行運(yùn)行,根據(jù)程序運(yùn)行的結(jié)果,MCF5205E模塊將通過GT-48330模塊對(duì)系統(tǒng)中的所有的交換芯片進(jìn)行初始化,完成對(duì)系統(tǒng)的配置。在以后的過程中MCF5206E將通過GT-48330模塊來進(jìn)行對(duì)系統(tǒng)的管理及包的接收和發(fā)送。而存儲(chǔ)模塊中的EDODRAM則用于存放在運(yùn)行過程中所需的程序及數(shù)據(jù)和包的臨時(shí)存放。
5 對(duì)于擁塞控制的分析
由于GT-48330的構(gòu)架對(duì)于接收的G.Link口采用共同的FIFO,然后通過Out Messager Detecter來判別FIFO中的數(shù)據(jù)應(yīng)該送到哪個(gè)通道中,這樣就有可能產(chǎn)生擁塞。如果某個(gè)通道滿了,他將不再接受OutMessager Detecter判定要發(fā)送給他的數(shù)據(jù)或消息,這樣將使得數(shù)據(jù)聚集在FIFO中,從而使得FIFO滿而產(chǎn)生擁塞。
對(duì)于新地址、包接收、中斷接收3個(gè)通道,可以通過一個(gè)可選的模式來防止擁塞,也就是他們?cè)诓荒芙邮諘r(shí),將通過丟棄新到的消息來防止其聚集在FIFO中導(dǎo)致?lián)砣?BR>
如果有許多的數(shù)據(jù)同時(shí)發(fā)給包Buffer的話,會(huì)使Buffer是滿的,同時(shí)如果此時(shí)<DPB>設(shè)為0(沒有丟棄包),這時(shí)G.Link口將產(chǎn)生流控消息,造成G.Link口的堵塞。如果這時(shí)CPU對(duì)某個(gè)設(shè)備發(fā)送了LW_WRITE消息時(shí),他將一直等待Buffer請(qǐng)求確認(rèn)(BFR)的到來,在沒有收到此消息時(shí),將不會(huì)進(jìn)行其他的數(shù)據(jù)處理。而由于G.Link口的擁塞將導(dǎo)致BFR無法送出,因此包Buffer中的數(shù)據(jù)也將一直得不到CPU的處理,這樣將導(dǎo)致CPU的死鎖。死鎖的解決方法:
(1)可以將交換芯片設(shè)置成單包模式(SignalPacket Mode),使其只有在一個(gè)包被處理完后,才送下一個(gè)包。
(2)使用包擁塞失效位(Disable PacketBlocking),采用對(duì)新地址、包接收、中斷消息的丟棄來防止。同時(shí)CPU也可以通過某些方法來判斷潛在的擁塞,從而使得該寄存器置位。例如,可以限制發(fā)往CPU的包的類型和數(shù)量來控制。
由上可知,采用相關(guān)通道的丟棄功能可以防止CPU的死鎖問題,同時(shí),他只對(duì)本身的通道有影響;如果僅采用流控功能則有可能導(dǎo)致死鎖問題的產(chǎn)生,對(duì)整個(gè)G.Link口產(chǎn)生影響。
評(píng)論