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