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

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

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

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

圖3 FPGA的上電時序
可編程交換芯片使用到PCIe、以太網高速接口收發數據包,并使用P4 語言對數據包處理系統進行編程,旨在對數據包轉發設備的數據平面進行編程[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、內核供電;PCIe 接口的使用 由SWPCIE 0.75 V 供 電;SWETH 0.75 V 和SWETH 0.9 V 供以太網接口的使用;最后SWVDD 1.8 V 為PCIe、以太網、PLL 和片上傳感器提供1.8 V的模擬電源。

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

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

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

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

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