徐健,吳海青,包佳立,談廣旭
(南京林業(yè)大學(xué)信息科學(xué)技術(shù)學(xué)院,江蘇南京 210037)
交換機(jī)的發(fā)展從二層交換機(jī)到三層交換機(jī)再到多層多業(yè)務(wù)交換機(jī),交換機(jī)逐漸成為當(dāng)下重要的網(wǎng)絡(luò)設(shè)備之一[1-2]。以太網(wǎng)交換機(jī)的運(yùn)用場(chǎng)景非常廣泛,可以運(yùn)用于軌道交通、工廠自動(dòng)化以及物聯(lián)網(wǎng)通信等[3-4]。隨著軟件定義網(wǎng)絡(luò)(即SDN)的出現(xiàn)[5-6],將網(wǎng)絡(luò)智能集中到控制器來(lái)提高靈活性,促進(jìn)網(wǎng)絡(luò)自動(dòng)化[7],交換機(jī)的硬件設(shè)計(jì)也更加復(fù)雜。
交換機(jī)設(shè)計(jì)中采用國(guó)產(chǎn)安路CPLD 來(lái)控制FPGA 芯片、主控CPU 和高性能的可編程交換芯片的上電時(shí)序。電源模塊關(guān)系到交換機(jī)能否正常工作,復(fù)雜的集成電路芯片為降低功耗和提高運(yùn)行速度,對(duì)供電電源的電壓精度要求高。大多數(shù)芯片還采用低電壓多電平分散供電,且對(duì)各電源的上電順序和各電源間上電間隔時(shí)間也有明確的要求[8]。傳統(tǒng)的上電時(shí)序由時(shí)序控制延遲電路來(lái)實(shí)現(xiàn),容易受外界環(huán)境的影響(如溫度等),并且一旦硬件設(shè)計(jì)完成后不能進(jìn)行時(shí)序的修改,缺少靈活性。采用CPLD 設(shè)計(jì)的上電時(shí)序控制更便于集成,在上電啟動(dòng)速度、功耗和抗干擾方面都更具有優(yōu)勢(shì)[9]。
在CPLD 的邏輯軟件設(shè)計(jì)中,使用Verilog HDL語(yǔ)言的狀態(tài)機(jī)編程[10-11],實(shí)現(xiàn)多模塊多電源的時(shí)序控制。上電時(shí)序控制的邏輯設(shè)計(jì)采用安路EL3F15 芯片,并使用安路TD4.6.5 進(jìn)行編譯綜合,Modelsim 10.5b 軟件進(jìn)行仿真[12],最終進(jìn)行板上驗(yàn)證。
電源芯片采用DC-DC 電源控制器,如圖1 所示,頂部反饋電阻(RFB1)和底部反饋電阻(RFB2)通過(guò)分壓來(lái)調(diào)節(jié)輸出電壓(Vo),反饋電容(Cff)與RFB1并聯(lián),以提供額外的相位升壓并改善瞬態(tài)負(fù)載響應(yīng)。使能引腳(EN)用來(lái)打開(kāi)和關(guān)閉IC。電源良好狀態(tài)輸出引腳(PG)為漏極開(kāi)路。將上拉電阻器從該引腳連接到VCC/LDO 或外部偏置電壓。EN 引腳連接到CPLD 的output,由CPLD 來(lái)引導(dǎo)芯片工作;PG 引腳連接到CPLD 的input,CPLD 接收到電源正常工作后進(jìn)行下一步操作。
圖1 電源芯片原理圖
功率級(jí)的輸入電壓(PVin)在4.3~17 V 之間,外部提供的輸入電壓為12 V,精確參考電壓為0.6 V(±0.5%),通過(guò)將外部電阻從TON/MODE 引腳接地的方法,提供了從600 kHz 到2 MHz 的八個(gè)可編程開(kāi)關(guān)頻率(fsw)。根據(jù)選定的fsw,為給定的輸入電壓(PVin)和輸出電壓(Vo)生成相應(yīng)的控制FET 的導(dǎo)通時(shí)間,如式(1)所示:
其中,fsw是所需的開(kāi)關(guān)頻率。在操作過(guò)程中,電源芯片監(jiān)測(cè)PVin和Vo,并且自動(dòng)調(diào)整開(kāi)啟時(shí)間,來(lái)保持預(yù)先選擇的fsw。隨著負(fù)載電流的增加,開(kāi)關(guān)頻率可以增加以補(bǔ)償功率損耗。默認(rèn)fsw為800 kHz。
輸出電壓(Vo)的大小可以通過(guò)外部分壓器設(shè)定。將FB 電壓與0.6 V 的內(nèi)部參考電壓進(jìn)行比較。當(dāng)輸出處于其期望值時(shí),F(xiàn)B 引腳處進(jìn)行分壓提供0.6 V。反饋電阻分壓的計(jì)算如式(2)所示:
如式(3)所示,可用于幫助選擇Cff和RFB1。Cff的值為100 pF 或更高,以最小化電路寄生電容的影響,其中Lo和Co組成降壓調(diào)節(jié)器的輸出LC 濾波器。
表1 列出了一些常見(jiàn)輸出建議的反饋系數(shù)(m)。Cff和RFB1可以在瞬態(tài)負(fù)載測(cè)試的基礎(chǔ)上進(jìn)一步優(yōu)化。
表1 反饋系數(shù)選項(xiàng)
在整板的設(shè)計(jì)中,系統(tǒng)分為多個(gè)模塊,分別為主控CPU 模塊、交換芯片模塊和FPGA 模塊。不同模塊的供電電壓和上電時(shí)序不同,同一模塊中也有嚴(yán)格的上電時(shí)序要求,混亂的上電時(shí)序會(huì)使得器件損壞。電路板內(nèi)部存在著多電源的供電,如3.3 V、1.8 V、1.2 V、0.9 V 等,從開(kāi)機(jī)上電、內(nèi)核上電(CPU、FPGA、交換芯片)、IO 上電,整個(gè)上電的過(guò)程都有嚴(yán)格的時(shí)序控制,這個(gè)控制上電的先后順序就是上電時(shí)序。
整板的設(shè)計(jì)通過(guò)兩個(gè)PSU 電源直接連上主板,采用均流電路接法產(chǎn)生的輸入電壓12 V,DC-DC 電源芯片同時(shí)將12 V 轉(zhuǎn)5 V 和12 V 轉(zhuǎn)3.3 V 作為一級(jí)電。二級(jí)電通過(guò)DC-DC、LDO 電源芯片將12 V 轉(zhuǎn)為各模塊所需的電壓。為避免混亂的上電時(shí)序?qū)ζ骷斐刹豢赏旎氐膿p壞,要對(duì)各模塊上電時(shí)序進(jìn)行評(píng)估設(shè)計(jì)。
首先評(píng)估主控CPU 的上電時(shí)序。如圖2 所示,CPU 模塊采用ATX 時(shí) 序,通過(guò)PWR_BTN 按鍵來(lái)啟動(dòng)二級(jí)電,按鍵低電平信號(hào)不低于16 ms。二級(jí)電VDD12V 供電后產(chǎn)生PSON 低信號(hào)傳送給CPLD。CPU12V 的硬件設(shè)計(jì)將VDD12V 接到MOSFET 的漏極,柵極接CPLD 的IO 端來(lái)控制供電。等待FPGA、交換芯片的電源全部供電后,CPLD 傳送PWR_OK上電完成信號(hào)給CPU 模塊,供電時(shí)間需要大于100 ms,用于其他模塊電源的上電準(zhǔn)備。在所有電源供電前,各模塊處于復(fù)位狀態(tài),CPU 接收到PWR_OK 信號(hào)后通過(guò)CB_RESET 信號(hào)結(jié)束復(fù)位。
圖2 主控CPU的上電時(shí)序
FPGA 芯片采用Xilinx Zynq UltraScale+系列,分為PS 和PL 兩部分,每部分都有單獨(dú)的上電時(shí)序要求。根據(jù)Xilinx 官方文檔,PS 部分的低功耗域(LPD)供電要早于或者與全功耗域(FPD)同時(shí)上電。通過(guò)CPLD 實(shí)現(xiàn)對(duì)FPGA 的多重電源配置[13],如圖3 所示,將電壓相同并且可以同時(shí)上電的供電端使用一塊電源芯片,可以節(jié)約成本并且簡(jiǎn)化CPLD 的邏輯代碼設(shè)計(jì),例如VCCINT_IO,VCCBRAM 都是0.85 V 供電且可以同時(shí)供電。在FPGA 的啟動(dòng)過(guò)程中首先給邏輯內(nèi)核(VCCINT)供電[14],其次再給高速收發(fā)器部分(MGT)供電,最后給IO 端(VCCO)供電。
圖3 FPGA的上電時(shí)序
可編程交換芯片使用到PCIe、以太網(wǎng)高速接口收發(fā)數(shù)據(jù)包,并使用P4 語(yǔ)言對(duì)數(shù)據(jù)包處理系統(tǒng)進(jìn)行編程,旨在對(duì)數(shù)據(jù)包轉(zhuǎn)發(fā)設(shè)備的數(shù)據(jù)平面進(jìn)行編程[15]。交換芯片的上電時(shí)序如圖4 所示,交換芯片上電順序?yàn)镾WVDD 1.8 V、SWCORE 0.75 V、SWPCIE 0.75 V、SWETH0.9V、SWETH 1.5 V、SWVDDA 1.8 V。交換芯片啟動(dòng)前需要給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 可編程交換芯片的上電時(shí)序
CPLD 采用安路ELF3 系列EF3L15 芯片,EF3L15的輸入輸出緩沖器(I/O Buffer)劃分為六個(gè)組,支持單端和雙端的多種電平標(biāo)準(zhǔn)LVTTL,LVCMOS(3.3/2.5/1.8/1.2 V)[16]。上電快速啟動(dòng),可控制系統(tǒng)的上電、復(fù)位時(shí)序,很好地實(shí)現(xiàn)了多電源時(shí)序控制。
交換機(jī)的電源分為一級(jí)電和二級(jí)電,插上PSU電源后,由電源將220 V 轉(zhuǎn)為12 V。VSB3.3 V 和VSB5 V 用于交換機(jī)的待機(jī)狀態(tài),上述為交換機(jī)的一級(jí)電。二級(jí)電通過(guò)短按PWR_BTN 按鈕進(jìn)行上電,二級(jí)電的電源由第2 節(jié)模塊中的多電源組成,通過(guò)編寫(xiě)狀態(tài)機(jī)(FSM)完成上電時(shí)序的控制,電源工作流程如圖5 所示。
當(dāng)檢測(cè)到所有電源芯片正常工作后由CPU 的CB_RESET 信號(hào)去結(jié)束所有復(fù)位;若有電源芯片未正常工作將重新執(zhí)行狀態(tài)機(jī),到此完成交換機(jī)的上電。
使用Verilog 語(yǔ)言編程實(shí)現(xiàn)交換機(jī)中多電源的時(shí)序控制。DC-DC 和LDO 電源芯片通過(guò)EN 引腳來(lái)使能電源芯片的輸出,PG 引腳作為供電電路正常工作信號(hào)輸出。CPLD 發(fā)送EN 信號(hào)來(lái)驅(qū)動(dòng)電源芯片,接收PG 信號(hào)確保電源芯片正常工作,從而達(dá)到精確的上電控制。CPLD 接收到所有電源芯片的PG 信號(hào)后結(jié)束外部復(fù)位。狀態(tài)機(jī)模塊的狀態(tài)設(shè)計(jì)如圖6所示。
圖6 上電時(shí)序狀態(tài)圖
狀態(tài)機(jī)一共分為12 個(gè)狀態(tài),如表2 所示,Sby、SbyEnd 分別代表待機(jī)狀態(tài)和復(fù)位結(jié)束等待開(kāi)機(jī)狀態(tài),RST 是低電平有效的復(fù)位信號(hào),RST 在一級(jí)電上電前保持低電平,在硬件中設(shè)計(jì)看門(mén)狗延遲電路,一級(jí)電上電200 ms 后拉高RST 信號(hào)結(jié)束復(fù)位,此時(shí)狀態(tài)機(jī)Sby 接收到RST 復(fù)位結(jié)束信號(hào)后跳轉(zhuǎn)到SbyEnd;PWR_ON 通過(guò)電源按鍵得到一個(gè)有效的高電平信號(hào),狀態(tài)機(jī)接收到該信號(hào)后跳轉(zhuǎn)到PSOn,該狀態(tài)下產(chǎn)生用于開(kāi)機(jī)的CPU12V,CPU12V供電完成后通過(guò)PSU_OK 的有效高電平信號(hào)進(jìn)入ATX 狀態(tài)代表PSU 電源ATX 時(shí)序的結(jié)束。S1-S5五個(gè)狀態(tài)用于二級(jí)電的上電,在這五個(gè)狀態(tài)下,一旦接收到復(fù)位信號(hào)(!RST)或者關(guān)機(jī)信號(hào)(PWR_OFF),狀態(tài)都將跳轉(zhuǎn)到Sby,關(guān)機(jī)信號(hào)通過(guò)長(zhǎng)按PWR_BTN按鈕4 s 實(shí)現(xiàn)。當(dāng)所有電源芯片的PG 信號(hào)相與后為高,狀態(tài)機(jī)跳轉(zhuǎn)到ALLPWR 狀態(tài),此狀態(tài)代表所有電源芯片有效輸出且工作正常,并將ALLPG 信號(hào)去點(diǎn)亮一個(gè)LED 燈,可以通過(guò)LED 燈的點(diǎn)亮或熄滅判別電源是否正常工作。CB_RESET 作為狀態(tài)機(jī)的最后一個(gè)狀態(tài),輸出Peripheral_Reset_n 信號(hào),通過(guò)頂層調(diào)用該信號(hào)來(lái)結(jié)束其他模塊的復(fù)位。狀態(tài)機(jī)的設(shè)計(jì)使得電源芯片在對(duì)應(yīng)的狀態(tài)下完成上電,某個(gè)狀態(tài)上電完成后就會(huì)自動(dòng)跳轉(zhuǎn)到下一個(gè)狀態(tài),這種狀態(tài)機(jī)的設(shè)計(jì)靈活性高且修改方便,只需要在頂層中修改調(diào)用代碼即可實(shí)現(xiàn)上電時(shí)序的調(diào)整。
表2 上電時(shí)序狀態(tài)表
按照上述邏輯設(shè)計(jì)上電時(shí)序,在上板調(diào)試之前,采用了Modelsim10.5b 仿真軟件對(duì)延遲模塊、FSM 狀態(tài)機(jī)模塊進(jìn)行了仿真,確保邏輯正確來(lái)避免上電風(fēng)險(xiǎn)。
延遲模塊的仿真圖如圖7 所示,該模塊可以被狀態(tài)機(jī)模塊調(diào)用實(shí)現(xiàn)延遲功能。i_clk 采用32k 時(shí)鐘頻率進(jìn)行仿真;i_rst_n 為低電平有效的復(fù)位信號(hào);i_cnt_en 為計(jì)數(shù)器計(jì)數(shù)的使能信號(hào);i_data 為設(shè)置延遲的時(shí)間,單位為ms;o_delay_time 為延遲信號(hào)標(biāo)志,初始為低電平信號(hào),在滿(mǎn)足延遲時(shí)間后變?yōu)楦唠娖剑籧s_dly_cnt 和ns_dly_cnt 為倒數(shù)計(jì)數(shù)器,用于計(jì)時(shí)。測(cè)試仿 真將延 時(shí)設(shè)為5 ms,即i_data=12′d5,cs_dly_cnt 和ns_dly_cnt 從17’d160 在時(shí)鐘上升沿遞減到17’d0。根據(jù)仿真結(jié)果,在i_rst_n 和i_cnt_en 上升為高電平后,經(jīng)過(guò)5 ms 延遲o_delay_time 信號(hào)由低到高,實(shí)現(xiàn)了毫秒級(jí)延遲,仿真結(jié)果正確。
圖7 延遲模塊仿真圖
上電時(shí)序仿真如圖8 所示,在接收到PSON 低信號(hào)和ATXPG 高信號(hào)后進(jìn)入到S1-S5 狀態(tài)的上電。接收到ATXPG 后產(chǎn)生EN_S1 使能信號(hào)來(lái)引導(dǎo)電源芯片工作,等待S1 狀態(tài)下的電源芯片正常工作產(chǎn)生的PG 信號(hào)后,狀態(tài)跳轉(zhuǎn)到S2 狀態(tài)并產(chǎn)生EN_S2 使能信號(hào)。隨著狀態(tài)機(jī)的狀態(tài)從S1 到S5 的逐步跳轉(zhuǎn),S1_PWRGD~S5_PWRGD 依次被S1_EN~S5_EN 信號(hào)拉高,代表二級(jí)電的上電完成。最后所有電源供電后通過(guò)ALL_PWRGD 信號(hào)到主控CPU,CPU 發(fā)送CB_RESET 信號(hào)結(jié)束復(fù)位,同時(shí)Peripheral_Reset_n信號(hào)也被拉高。通過(guò)觀察仿真圖o_ctrl_state 信號(hào)對(duì)應(yīng)的狀態(tài)跳轉(zhuǎn),狀態(tài)機(jī)的狀態(tài)從0000-1011 依次跳轉(zhuǎn),驗(yàn)證了邏輯代碼設(shè)計(jì)的正確,確保了上板調(diào)試的安全性。
圖8 上電時(shí)序仿真圖
基于國(guó)產(chǎn)安路EL3F15 芯片,對(duì)交換機(jī)進(jìn)行了上電時(shí)序控制設(shè)計(jì),用Verilog 語(yǔ)言編程,對(duì)延遲模塊和上電時(shí)序的狀態(tài)機(jī)模塊進(jìn)行設(shè)計(jì),通過(guò)Modelsim進(jìn)行仿真,驗(yàn)證了所設(shè)計(jì)的代碼滿(mǎn)足各模塊的時(shí)序要求,同時(shí)也保證了上電的安全性。這種基于CPLD的上電時(shí)序控制相對(duì)傳統(tǒng)的硬件延遲電路,不僅外圍電路結(jié)構(gòu)簡(jiǎn)單、抗干擾能力強(qiáng),而且可以通過(guò)代碼調(diào)整上電時(shí)序,靈活性高。