徐健,吳海青,包佳立,談廣旭
(南京林業(yè)大學(xué)信息科學(xué)技術(shù)學(xué)院,江蘇南京 210037)
交換機的發(fā)展從二層交換機到三層交換機再到多層多業(yè)務(wù)交換機,交換機逐漸成為當下重要的網(wǎng)絡(luò)設(shè)備之一[1-2]。以太網(wǎng)交換機的運用場景非常廣泛,可以運用于軌道交通、工廠自動化以及物聯(lián)網(wǎng)通信等[3-4]。隨著軟件定義網(wǎng)絡(luò)(即SDN)的出現(xiàn)[5-6],將網(wǎng)絡(luò)智能集中到控制器來提高靈活性,促進網(wǎng)絡(luò)自動化[7],交換機的硬件設(shè)計也更加復(fù)雜。
交換機設(shè)計中采用國產(chǎn)安路CPLD 來控制FPGA 芯片、主控CPU 和高性能的可編程交換芯片的上電時序。電源模塊關(guān)系到交換機能否正常工作,復(fù)雜的集成電路芯片為降低功耗和提高運行速度,對供電電源的電壓精度要求高。大多數(shù)芯片還采用低電壓多電平分散供電,且對各電源的上電順序和各電源間上電間隔時間也有明確的要求[8]。傳統(tǒng)的上電時序由時序控制延遲電路來實現(xiàn),容易受外界環(huán)境的影響(如溫度等),并且一旦硬件設(shè)計完成后不能進行時序的修改,缺少靈活性。采用CPLD 設(shè)計的上電時序控制更便于集成,在上電啟動速度、功耗和抗干擾方面都更具有優(yōu)勢[9]。
在CPLD 的邏輯軟件設(shè)計中,使用Verilog HDL語言的狀態(tài)機編程[10-11],實現(xiàn)多模塊多電源的時序控制。上電時序控制的邏輯設(shè)計采用安路EL3F15 芯片,并使用安路TD4.6.5 進行編譯綜合,Modelsim 10.5b 軟件進行仿真[12],最終進行板上驗證。
電源芯片采用DC-DC 電源控制器,如圖1 所示,頂部反饋電阻(RFB1)和底部反饋電阻(RFB2)通過分壓來調(diào)節(jié)輸出電壓(Vo),反饋電容(Cff)與RFB1并聯(lián),以提供額外的相位升壓并改善瞬態(tài)負載響應(yīng)。使能引腳(EN)用來打開和關(guān)閉IC。電源良好狀態(tài)輸出引腳(PG)為漏極開路。將上拉電阻器從該引腳連接到VCC/LDO 或外部偏置電壓。EN 引腳連接到CPLD 的output,由CPLD 來引導(dǎo)芯片工作;PG 引腳連接到CPLD 的input,CPLD 接收到電源正常工作后進行下一步操作。

圖1 電源芯片原理圖
功率級的輸入電壓(PVin)在4.3~17 V 之間,外部提供的輸入電壓為12 V,精確參考電壓為0.6 V(±0.5%),通過將外部電阻從TON/MODE 引腳接地的方法,提供了從600 kHz 到2 MHz 的八個可編程開關(guān)頻率(fsw)。根據(jù)選定的fsw,為給定的輸入電壓(PVin)和輸出電壓(Vo)生成相應(yīng)的控制FET 的導(dǎo)通時間,如式(1)所示:
其中,fsw是所需的開關(guān)頻率。在操作過程中,電源芯片監(jiān)測PVin和Vo,并且自動調(diào)整開啟時間,來保持預(yù)先選擇的fsw。隨著負載電流的增加,開關(guān)頻率可以增加以補償功率損耗。默認fsw為800 kHz。
輸出電壓(Vo)的大小可以通過外部分壓器設(shè)定。將FB 電壓與0.6 V 的內(nèi)部參考電壓進行比較。當輸出處于其期望值時,F(xiàn)B 引腳處進行分壓提供0.6 V。反饋電阻分壓的計算如式(2)所示:
如式(3)所示,可用于幫助選擇Cff和RFB1。Cff的值為100 pF 或更高,以最小化電路寄生電容的影響,其中Lo和Co組成降壓調(diào)節(jié)器的輸出LC 濾波器。
表1 列出了一些常見輸出建議的反饋系數(shù)(m)。Cff和RFB1可以在瞬態(tài)負載測試的基礎(chǔ)上進一步優(yōu)化。

表1 反饋系數(shù)選項
在整板的設(shè)計中,系統(tǒng)分為多個模塊,分別為主控CPU 模塊、交換芯片模塊和FPGA 模塊。不同模塊的供電電壓和上電時序不同,同一模塊中也有嚴格的上電時序要求,混亂的上電時序會使得器件損壞。電路板內(nèi)部存在著多電源的供電,如3.3 V、1.8 V、1.2 V、0.9 V 等,從開機上電、內(nèi)核上電(CPU、FPGA、交換芯片)、IO 上電,整個上電的過程都有嚴格的時序控制,這個控制上電的先后順序就是上電時序。
整板的設(shè)計通過兩個PSU 電源直接連上主板,采用均流電路接法產(chǎn)生的輸入電壓12 V,DC-DC 電源芯片同時將12 V 轉(zhuǎn)5 V 和12 V 轉(zhuǎn)3.3 V 作為一級電。二級電通過DC-DC、LDO 電源芯片將12 V 轉(zhuǎn)為各模塊所需的電壓。為避免混亂的上電時序?qū)ζ骷斐刹豢赏旎氐膿p壞,要對各模塊上電時序進行評估設(shè)計。
首先評估主控CPU 的上電時序。如圖2 所示,CPU 模塊采用ATX 時 序,通過PWR_BTN 按鍵來啟動二級電,按鍵低電平信號不低于16 ms。二級電VDD12V 供電后產(chǎn)生PSON 低信號傳送給CPLD。CPU12V 的硬件設(shè)計將VDD12V 接到MOSFET 的漏極,柵極接CPLD 的IO 端來控制供電。等待FPGA、交換芯片的電源全部供電后,CPLD 傳送PWR_OK上電完成信號給CPU 模塊,供電時間需要大于100 ms,用于其他模塊電源的上電準備。在所有電源供電前,各模塊處于復(fù)位狀態(tài),CPU 接收到PWR_OK 信號后通過CB_RESET 信號結(jié)束復(fù)位。

圖2 主控CPU的上電時序
FPGA 芯片采用Xilinx Zynq UltraScale+系列,分為PS 和PL 兩部分,每部分都有單獨的上電時序要求。根據(jù)Xilinx 官方文檔,PS 部分的低功耗域(LPD)供電要早于或者與全功耗域(FPD)同時上電。通過CPLD 實現(xiàn)對FPGA 的多重電源配置[13],如圖3 所示,將電壓相同并且可以同時上電的供電端使用一塊電源芯片,可以節(jié)約成本并且簡化CPLD 的邏輯代碼設(shè)計,例如VCCINT_IO,VCCBRAM 都是0.85 V 供電且可以同時供電。在FPGA 的啟動過程中首先給邏輯內(nèi)核(VCCINT)供電[14],其次再給高速收發(fā)器部分(MGT)供電,最后給IO 端(VCCO)供電。

圖3 FPGA的上電時序
可編程交換芯片使用到PCIe、以太網(wǎng)高速接口收發(fā)數(shù)據(jù)包,并使用P4 語言對數(shù)據(jù)包處理系統(tǒng)進行編程,旨在對數(shù)據(jù)包轉(zhuǎn)發(fā)設(shè)備的數(shù)據(jù)平面進行編程[15]。交換芯片的上電時序如圖4 所示,交換芯片上電順序為SWVDD 1.8 V、SWCORE 0.75 V、SWPCIE 0.75 V、SWETH0.9V、SWETH 1.5 V、SWVDDA 1.8 V。交換芯片啟動前需要給VDD、內(nèi)核供電;PCIe 接口的使用 由SWPCIE 0.75 V 供 電;SWETH 0.75 V 和SWETH 0.9 V 供以太網(wǎng)接口的使用;最后SWVDD 1.8 V 為PCIe、以太網(wǎng)、PLL 和片上傳感器提供1.8 V的模擬電源。

圖4 可編程交換芯片的上電時序
CPLD 采用安路ELF3 系列EF3L15 芯片,EF3L15的輸入輸出緩沖器(I/O Buffer)劃分為六個組,支持單端和雙端的多種電平標準LVTTL,LVCMOS(3.3/2.5/1.8/1.2 V)[16]。上電快速啟動,可控制系統(tǒng)的上電、復(fù)位時序,很好地實現(xiàn)了多電源時序控制。
交換機的電源分為一級電和二級電,插上PSU電源后,由電源將220 V 轉(zhuǎn)為12 V。VSB3.3 V 和VSB5 V 用于交換機的待機狀態(tài),上述為交換機的一級電。二級電通過短按PWR_BTN 按鈕進行上電,二級電的電源由第2 節(jié)模塊中的多電源組成,通過編寫狀態(tài)機(FSM)完成上電時序的控制,電源工作流程如圖5 所示。
當檢測到所有電源芯片正常工作后由CPU 的CB_RESET 信號去結(jié)束所有復(fù)位;若有電源芯片未正常工作將重新執(zhí)行狀態(tài)機,到此完成交換機的上電。
使用Verilog 語言編程實現(xiàn)交換機中多電源的時序控制。DC-DC 和LDO 電源芯片通過EN 引腳來使能電源芯片的輸出,PG 引腳作為供電電路正常工作信號輸出。CPLD 發(fā)送EN 信號來驅(qū)動電源芯片,接收PG 信號確保電源芯片正常工作,從而達到精確的上電控制。CPLD 接收到所有電源芯片的PG 信號后結(jié)束外部復(fù)位。狀態(tài)機模塊的狀態(tài)設(shè)計如圖6所示。

圖6 上電時序狀態(tài)圖
狀態(tài)機一共分為12 個狀態(tài),如表2 所示,Sby、SbyEnd 分別代表待機狀態(tài)和復(fù)位結(jié)束等待開機狀態(tài),RST 是低電平有效的復(fù)位信號,RST 在一級電上電前保持低電平,在硬件中設(shè)計看門狗延遲電路,一級電上電200 ms 后拉高RST 信號結(jié)束復(fù)位,此時狀態(tài)機Sby 接收到RST 復(fù)位結(jié)束信號后跳轉(zhuǎn)到SbyEnd;PWR_ON 通過電源按鍵得到一個有效的高電平信號,狀態(tài)機接收到該信號后跳轉(zhuǎn)到PSOn,該狀態(tài)下產(chǎn)生用于開機的CPU12V,CPU12V供電完成后通過PSU_OK 的有效高電平信號進入ATX 狀態(tài)代表PSU 電源ATX 時序的結(jié)束。S1-S5五個狀態(tài)用于二級電的上電,在這五個狀態(tài)下,一旦接收到復(fù)位信號(!RST)或者關(guān)機信號(PWR_OFF),狀態(tài)都將跳轉(zhuǎn)到Sby,關(guān)機信號通過長按PWR_BTN按鈕4 s 實現(xiàn)。當所有電源芯片的PG 信號相與后為高,狀態(tài)機跳轉(zhuǎn)到ALLPWR 狀態(tài),此狀態(tài)代表所有電源芯片有效輸出且工作正常,并將ALLPG 信號去點亮一個LED 燈,可以通過LED 燈的點亮或熄滅判別電源是否正常工作。CB_RESET 作為狀態(tài)機的最后一個狀態(tài),輸出Peripheral_Reset_n 信號,通過頂層調(diào)用該信號來結(jié)束其他模塊的復(fù)位。狀態(tài)機的設(shè)計使得電源芯片在對應(yīng)的狀態(tài)下完成上電,某個狀態(tài)上電完成后就會自動跳轉(zhuǎn)到下一個狀態(tài),這種狀態(tài)機的設(shè)計靈活性高且修改方便,只需要在頂層中修改調(diào)用代碼即可實現(xiàn)上電時序的調(diào)整。

表2 上電時序狀態(tài)表
按照上述邏輯設(shè)計上電時序,在上板調(diào)試之前,采用了Modelsim10.5b 仿真軟件對延遲模塊、FSM 狀態(tài)機模塊進行了仿真,確保邏輯正確來避免上電風(fēng)險。
延遲模塊的仿真圖如圖7 所示,該模塊可以被狀態(tài)機模塊調(diào)用實現(xiàn)延遲功能。i_clk 采用32k 時鐘頻率進行仿真;i_rst_n 為低電平有效的復(fù)位信號;i_cnt_en 為計數(shù)器計數(shù)的使能信號;i_data 為設(shè)置延遲的時間,單位為ms;o_delay_time 為延遲信號標志,初始為低電平信號,在滿足延遲時間后變?yōu)楦唠娖剑籧s_dly_cnt 和ns_dly_cnt 為倒數(shù)計數(shù)器,用于計時。測試仿 真將延 時設(shè)為5 ms,即i_data=12′d5,cs_dly_cnt 和ns_dly_cnt 從17’d160 在時鐘上升沿遞減到17’d0。根據(jù)仿真結(jié)果,在i_rst_n 和i_cnt_en 上升為高電平后,經(jīng)過5 ms 延遲o_delay_time 信號由低到高,實現(xiàn)了毫秒級延遲,仿真結(jié)果正確。

圖7 延遲模塊仿真圖
上電時序仿真如圖8 所示,在接收到PSON 低信號和ATXPG 高信號后進入到S1-S5 狀態(tài)的上電。接收到ATXPG 后產(chǎn)生EN_S1 使能信號來引導(dǎo)電源芯片工作,等待S1 狀態(tài)下的電源芯片正常工作產(chǎn)生的PG 信號后,狀態(tài)跳轉(zhuǎn)到S2 狀態(tài)并產(chǎn)生EN_S2 使能信號。隨著狀態(tài)機的狀態(tài)從S1 到S5 的逐步跳轉(zhuǎn),S1_PWRGD~S5_PWRGD 依次被S1_EN~S5_EN 信號拉高,代表二級電的上電完成。最后所有電源供電后通過ALL_PWRGD 信號到主控CPU,CPU 發(fā)送CB_RESET 信號結(jié)束復(fù)位,同時Peripheral_Reset_n信號也被拉高。通過觀察仿真圖o_ctrl_state 信號對應(yīng)的狀態(tài)跳轉(zhuǎn),狀態(tài)機的狀態(tài)從0000-1011 依次跳轉(zhuǎn),驗證了邏輯代碼設(shè)計的正確,確保了上板調(diào)試的安全性。

圖8 上電時序仿真圖
基于國產(chǎn)安路EL3F15 芯片,對交換機進行了上電時序控制設(shè)計,用Verilog 語言編程,對延遲模塊和上電時序的狀態(tài)機模塊進行設(shè)計,通過Modelsim進行仿真,驗證了所設(shè)計的代碼滿足各模塊的時序要求,同時也保證了上電的安全性。這種基于CPLD的上電時序控制相對傳統(tǒng)的硬件延遲電路,不僅外圍電路結(jié)構(gòu)簡單、抗干擾能力強,而且可以通過代碼調(diào)整上電時序,靈活性高。