卞中昊,田 野,司 藝,朱 超
(1.公安部第三研究所,上海 200031;2.中國信息通信科技集團有限公司,湖北 武漢 430074;3.上海信管網絡科技有限公司,上海 200032;4.上海飛寬通信技術有限公司,上海 200240)
網絡已經成為現代生活中,社會活動和經濟發展的重要組成部分。從海量網絡數據的接入、解析、處理到智能分析的大數據處理都是網絡空間管理核心的基礎工作。十九大報告中提出了“建設網絡強國”的概念。然而,沒有對網絡數據的大數據處理,“網絡主權”和“網絡強國”就無從談起。因此,構建高效的網絡空間數據接入、數據解析、數據處理和智能應用系統,對于掌握網絡空間態勢、維護網絡安全和網絡主權、打擊網絡犯罪、維護線上線下安全都具有重要的意義[1-3]。
隨著高速光通信系統、5G 技術、窄帶物聯網(Narrow Band Internet of Things,NB-IoT)、互 聯網協議第6 版(Internet Protocol version 6,IPv6)等技術的同步發展和普及,網絡傳輸帶寬 成指數式增長。按照2017 年以太網路線圖,未來幾年的以太網速率將從10~40 Gb/s 擴展到100 Gb/s、400 Gb/s 甚至1 Tb/s,因此傳統的網絡空間監管手段面臨巨大挑戰[2-4]。
目前網絡監控系統在數據接入上,多采用分級、分區域化管理和通用處理器方案,來實現網絡數據的匯聚、分流、檢測和還原工作;在數據解析上,采用內容解析,通過大量人力投入,針對每一個應用系統尋找破解方案,并保存能夠識別的內容,拋棄不能識別的內容;在智能算法上,基于能夠收集到的內容數據建立算法模型,所以具有“只見樹木不見森林”的局限性。
現場可編程門陣列(Field Programmable Gate Array,FPGA)的可再編程技術可以滿足不斷變化的市場需求。網絡加速卡可以通過FPGA 編程,實現不能的功能,應用到不同的領域:在傳統加速領 域,可以預處理數據,提供高效的壓縮、解壓縮算法和視頻編碼、解碼等[3];在網絡安全領域,可以進行加密、解密;在其他領域也可以進行大數據分析、文本搜索和分析、機器學習、算法驗證。為了加速網絡數據處理,亞馬遜和微軟等公司已經把FPGA 的加速方案應用到他們的數據中心。據Semico Research 于2019 年5 月的預測,從2018 年到2023 年的5 年間,數據中心加速器市場規模預計將從28.4 億美元增長211.9 億美元,年均增長率為49.47&[1]。
基于上述需求,本文設計一款基于FPGA 的多端口網絡協議解析加速卡FBC-810x。4 個QSFP28接口的模塊可提供4×40 G、4×100 G 的以太接口,其功能結構如圖1 所示。該模塊與主板的接口采用PCIe 3.0×16 或2 個PCIe 3.0×8,共計128 Gb/s 的線速接口速率。接口速率出入比不小于0.32。

圖1 網絡加速卡方案功能
此外,該板卡還包含了電源變換模塊、時鐘模塊、DDR4 和低延遲DRAM 存儲模塊。板卡使用獨立的參考時鐘,能夠發揮出芯片的最佳性能。電源方面,充分考慮旁路、去耦電容,以濾除各種干擾信號的影響,優化設計,保證系統穩定工作。設計過程中對于高速信號完整性、過孔扇出、過層所造成的阻抗突變、繞線造成的信號串擾、長走線造成的信號衰減等問題均需要進行合理的信號完整性設計。為了實現高速信號在動態隨機存儲器(Dynamic Random Access Memory,PCB)板上的傳輸,本研究在設計過程中對傳輸線損耗、阻抗、差分等長線等信號完整性問題進行了理論和仿真分析。
本設計采用的器件是Xilinx 公司的Zynq UltraScale+MPSOC EG 系列器件。雖然部分Virtex UltraScale、Kintex UltraScale+和Virtex UltraScale+的高速串行收發器速率可達30.5 Gb/s,但上述器件存在片內Serdes 數量不夠多,缺乏100 G 以太MAC 支持等缺點,且片內沒有多核處理器。因此綜合考慮功耗、功能、性能以及成本,本研究選用的FPGA 具體型號為XCZU19EG。
XCZU19EG 的內部分成可編程系統(Program-mable System,PS)和可編程邏輯(Programmable Logic,PL)兩部分資源。PS 和PL 部分的資源可以通過12 組32 b、64 b 或128 b 的高級總線協議(Advanced eXtensible Interface,AXI)互聯總線連接,可實現PS 的某些功能映射在PL 部分的外部管腳上。
PS 部分具有4 個主頻1.5 GHz 的ARM Cortex-A53 處理器和2 個主頻600 MHz 的ARM Cortex-R5 實時處理器,此外還有主頻667 MHz 的Mali-400 圖像處理器。上述3 種處理器分別配有L1 緩存32 kB,L2 緩存64 kB~1 MB 和128~256 kB的片上存儲。PS 部分的外圍接口包括x64 的DDR4 接口、2×Quard SPI NAND 存儲器接口,高速互聯接口可以是PCIe Gen2 ×4、4 個三模千兆以太控制器、2× USB3.0、SATA3.1、DisplayPort中的組合。通用互聯接口可以是2× USB2.0、2× SD/SDIO、2× CAN2.0B、2× I2C、2× SPI、4× 32 位通用輸入輸出接口(General-Purpose Input/Output,GPIO)中的組合。此外,PS 部分還保護加密、電源管理和系統狀態監視功能。
PL部分具有1 143 K的系統邏輯單元塊、1 045 K 的觸發器和523 K的查找表。在存儲器方面具有9.8 MB 的分布式RAM、34.6 MB 的塊RAM 和36.0 MB 的超級RAM。時鐘管理單元的數量為11 個。另外,PL 部分內部集成了PCIe Gen3 ×16 或Gen4 ×8 IP核、帶RS-FEC 編碼的100 G 以太MAC/PCS IP 核。C1760 封裝的ZU19EG 芯片在PL 部分的高速接口包含32 個16.3 Gb/s 的GTH 接口和16 個32.75 Gb/s 的GTY 接口,這些數量的高速SerDes 接口足以滿足本系統的接口數量要求。
根據設計要求,本方案將XCZU19EG 芯片的4個GTY Bank 用于4 個100 G QSFP28 接口;將4 個GTH Bank 用于2 套PCIe 3.0×8 接口。XCZU19EG 芯片提供了高性能接口(High Performance,HP)、高密度接口(High Density,HD)等接口,可滿足不同功能的需求。將HP 68-71 Bank 連接RLDRAM3的數據、地址和控制總線;將PS DDR504 Bank 連至DDR4 SODIMM 的地址線、數據線以及控制線;將HD 88-89 bank 作為GPIO口用于驅動LED 以及與光模塊進行I2C 通信。PS 部分的PS 500 MIO用于2 片1 Gb QSPI 接口的NOR FLASH 互連;PS 501、502 和503 MIO 分別用于TF 卡、I2C、通用異 步收發傳輸器(Universal Asynchronous Receiver/Transmitter,UART)和以太千兆位媒質無關接口(Reduced Gigabit Media Independent Interface,RGMII)通信接口及芯片的配置、啟動選擇控制。FPGA 除了以上的外設外,還需要供電和時鐘電路。
為了靈活地為多個芯片提供時鐘,設計中為時鐘模塊單獨設計了單板。其硬件框圖如圖2 所示。

圖2 時鐘模塊硬件
時鐘模塊由時鐘芯片、壓控振蕩器和電源組成,外部接口主要有外部時鐘接口、電源接口、I2C 接口和時鐘輸出接口。因此,模塊主要分為四部分時鐘信號:FPGA PS 時鐘、FPGA PL 時鐘、多千兆位收發機(Multi-Gigabit Transceiver,MGT)時鐘和雙倍速率(Double Data Rate,DDR)時鐘。時鐘發生器采用兩片Silicon Labs 公司的Si5340 超低抖動任意頻率多種輸出驅動可配置的時鐘芯片。每個芯片均采用獨立的低抖動48 MHz 有源振蕩器作為高頻時鐘信號的基準。4 個獨立穩定的時鐘輸出頻率及驅動配置可通過相關的配置軟件快速靈活地設計出,通過I2C 總線可將配置參數輸入芯片。
(1)FPGA PS 部分時鐘:為整個FPGA 芯片的PS 部分提供一個主頻時鐘信號,用于芯片上電復位后的電源管理單元的工作、系統配置程序的加載、系統工作時鐘的鎖相環輸入參考、ARM 系統看門狗定時器和CPU 調試等PS 中的功能單元。通常采用固定頻率的有源振蕩器。本設計采用了一款50 MHz 的均方抖動誤差小于2 ps,頻率穩定性在 ±10-5范圍內,LVCMOS 輸出驅動的有源振蕩器。
(2)FPGA PL 部分時鐘:為整個FPGA 芯片的PL 部分提供一個主頻時鐘信號,用于芯片運行邏輯程序、PL 部分的外部存儲器、控制GPIO 信號、I2C等外圍總線提供一個主頻參考信號。通常采用固定頻率的有源振蕩器。該設計采用了一款300 MHz 的均方抖動誤差小于1 ps、頻率穩定性在±10-5范圍內、LVDS 輸出驅動的有源振蕩器。
(3)MGT 時鐘:專為FPGA 高速收發器提供的時鐘參考信號。此處的時鐘信號分別為QSFP28 以及PCIe 兩部分功能提供參考時鐘信號。對于ZYNQ UltraScale+FPGA而言,接口速率從16.375 Gb/s 到28.21 Gb/s 的SerDes Quad 單元可以從其上方或下方的一個Quad 單元獲得參考時鐘,此時可以靈活地分配共享參考時鐘給這些Quad 中的SerDes 使用。該設計使用外部時鐘發生器為每個GTY Bank提供了獨立的參考時鐘。
(4)DDR 時鐘:通過時鐘芯片Si5340 先提供給FPGA PS 部分DDR 控制器單元,再由FPGA 統一為DDR 芯片提供時鐘,并進行數據、地址等信號的交互,從而可以更好地減少時序問題。
板卡有兩個供電通道:其一使用外部12 V 電源適配器,通過4PIN 接口插入供電;其二,使用PCIe 接口中的12 V 電源進行供電。供電設計采用了一個雙電源均流控制器,集成了金氧半場效晶體管(Metal-Oxide-Semiconductor Field-Effect Transistor,MOSFET)二極管,具有共享負載能力。此芯片不需要共享總線或電源上的微調引腳,即可實現外部12 V 電源或PCIe 接口中的12 V 電源的二選一供電,也可實現同時供電,這在PCIe 接口供電功率不足時是十分必要的。在啟動和故障情況下,雙電源均流控制器內的理想二極管會阻止反向電流和直通電流,可最大程度地減小反向電流瞬變對供電系統的損傷。在同時供電時,它會自動調整兩個正向電壓差以共享電源之間的負載電流。
電源芯片均采用的是MPS(Monolithic Power Systems)、ADI(Analog Devices Inc)、Micro Chip三家公司的電源芯片。整個電源設計為FPGA 各功能單元提供了足夠的電源功率,并且根據FPGA 上電順序要求,設計了合理的上電順序。
參照Xilinx 關于UltraScale+在各種片內資源使用率情況下的電源功耗估計結果,選擇了上述供電芯片或模塊。在FPGA 應用實例中,一般內核電源VCCINT 所需功率最大,其次是高速光模塊以及DDR 電源。萬兆收發器SerDes 的電源供電對于恢復接收信號的時鐘抖動至關重要,因此只要涉及萬兆收發器,即使系統中已有相同電壓值的電源,也必須分別獨立供電。
根據Xilinx FPGA 用戶手冊建議,推薦的上電順序為VCCINT、VMGTAVCC、VMGTAVTT 或VMGTAVCC、VCCINT、VMGTAVTT,沒有建議對VMGTVCCAUX進行排序,所以VMGTAVCC 和VCCINT 均可同時加載。利用前一個電源的檢測(Power Good,PG)信號作為下個電源的EN 使能信號,可方便地控制上電順序。上電順序在電源樹中體現在電源芯片先后出現的次序上。
當高速信號沿著傳輸線傳輸時,由于傳輸線損耗,高頻分量的幅度會減小而低頻分量的幅度不變。由于這種頻率選擇性衰減,傳輸線的帶寬降低,導致傳輸信號的帶寬降低,信號上升沿變緩[5-7]。這種頻率相關性損耗造成的信號上升沿退化會引起碼間干擾(Inter Symbol Interference,ISI)、抖動等信號完整性問題。另外,傳輸過程中的信號反射也將造成傳輸信號能量的損失,信號上下沿出現過沖、振鈴等問題[6-9]。
使用Ansys HFSS 3D 布線建模仿真軟件對高速信號線進行仿真,通過仿真可以得到高速傳輸線的S參數和時域反射(Time Domain Reflectometry,TDR)參數,可在PCB 制板前判斷其是否達到設計的預期效果。
由于光模塊連接器的頂層空間有限,需要使用過孔換層。普通PCB 的過孔大致有通孔、盲孔、埋孔3 種類型,其中通孔的制作工藝相對簡單,而且夾具板的高速走線密度不大,無需使用盲孔、埋孔技術。當使用通孔將表層信號換層到內層時,通孔的下半部分會留出一個殘樁,殘樁會導致信號在殘樁末尾處發生反射使得傳輸線的插入損耗曲線出現諧振,殘樁越長諧振頻率點越低。諧振點的存在使相鄰頻段的插入損耗增加,從而加劇頻率點處信號的衰減。對于諧振點問題,設計中可以使用背鉆(Back-drilling)技術,即通過機械鉆孔的方式將過孔未使用部分的鍍層除去。這種設計會增加布線設計難度,且會增加成本,因此設計中將頂層傳輸線直接換層到底層,使得傳輸路徑中不出現過孔殘樁。
通孔產生的寄生電容大小為:

式中,εγ為相對介電常數,T為通孔的長度,D1是焊盤(pad)的直徑,D2為反焊盤(antipad)直徑。
由式(1)可知,降低通孔寄生電容的方法有改變介質的介電常數、PCB 厚度、通孔焊盤直徑和通孔反焊盤直徑。通常來說,在設計之初疊層結構和介質材料已經確定,只能通過焊盤直徑和反焊盤直徑調整寄生電容。
產生的寄生電感為:

式中,h是過孔的長度,d是過孔的直徑。
由式(2)可知,過孔的寄生電感值與通孔長度和通孔直徑有關,而通孔長度在PCB 厚度確認后無法改變,所以只能調整通孔直徑。通常來說,過孔處的阻抗偏小,可以通過減小通孔直徑增加寄生電感,將阻抗調整至特性阻抗。但由于工藝有限,通孔直徑無法做到很小,且與板厚有關,PCB 越厚可制造性越小。因此,調節通孔阻抗的一般方法是直接調整通孔的寄生電容。
光模塊夾具板的換層過孔不同于微帶線雙層板過孔,它是將頂層接地共面波導換層至底層的通孔,通孔穿過兩層平面后到達底層。由于其結構與一般過孔不同,且無法估算具體阻抗值,所以使用CST對過孔阻抗做了仿真。仿真過程中將cadence 設計的換層設計轉換成ODB++格式后導入CST 微波工作室,其三維結構的俯視圖和切面圖如圖3 和圖4所示。

圖3 過孔俯視圖

圖4 過孔刨面
由圖3 和圖4 可以看出,設計中去除了穿過兩層導體時過孔壁上無電氣連接的非功能焊盤。非功能焊盤與平面反焊盤間的寄生電容使得容性負載變大,從而減小過孔部分的阻抗。
由于焊盤連接著傳輸線,焊盤直徑無法調整。因此只能通過改變第二層和第三層導體的過孔反焊盤直徑改變過孔阻抗。將離散端口1 設置在頂層接地共面波導處,離散端口2 設置在底層共面波導處,反焊盤半徑可變。仿真過程中使用了參數掃描方法,將反焊盤半徑從0.2 mm 掃描到0.5 mm,每組增加0.06 mm,共計6 組仿真數據。在仿真設置中打開TDR 分析,得出如圖5 所示過孔阻抗參數掃描結果。

圖5 過孔阻抗參數掃描結果
在圖中放置了Marker,用于觀察過孔換層時的阻抗情況。當過孔反焊盤半徑為0.2 mm 時,過孔處阻抗下降至43.7 Ω。阻抗下降的原因是反焊盤較小使寄生電容增大,比約49.5 Ω 的傳輸線阻抗低了6 Ω,所以在此處信號將發生較大的負反射,將過孔反焊盤的半徑增加會使其換層處阻抗變大。當反焊盤半徑增加至0.5 mm 時,過孔處阻抗值變為51.5 Ω,超過了傳輸線特性阻抗,在過孔處信號發生正反射。所以選擇反焊盤半徑為0.38 mm 的過孔作為高速信號換層過孔,此時過孔處阻抗約為 49.6 Ω,傳輸線上的阻抗突變點基本消除,反射損耗最小。
為了探究阻抗優化對傳輸線插入損耗的影響,使用CST 仿真出過孔換層傳輸線的插入損耗。仿真過程中掃描了反焊盤半徑的幾個參數,掃描結果如圖6 所示。

圖6 過孔插入損耗掃描結果
由上圖掃描出的結果可知,在5 GHz 頻段內,過孔阻抗對插入損耗幾乎沒有影響,但超過5 GHz時,頻率升高則阻抗對插入損耗的惡化作用越明顯。從27 GHz 處的Maker 可以看出,反焊盤半徑為0.2 mm 的插入損耗比半徑為0.38 mm 時大了0.37 dB,幾乎是半徑為0.38 mm 時損耗值的1 倍多。由仿真結果可知,當Layout 過程中出現高速信號過孔換層時,應對過孔進行阻抗優化,優化過后對傳輸線的插入損耗有很大的改善。
差分互連可以極大地改善信號傳輸質量,所以幾乎所有的高速總線都會使用差分對。差分互連是指信號驅動端同時產生雙路信號,它們沿著不同的傳輸線傳輸且極性相反,并在接收端進行差分檢測提取發送的信息。差分線上的信號噪聲在接收端的差分檢測處相互抵消,只要收到的干擾噪聲大小相同則不會對差分信號傳輸造成影響。差分信號按照工作模式可劃分為共模與差模信號。共模信號所感知的阻抗為共模阻抗,差模信號感知的阻抗是差分阻抗。
通常來說,差分對設計要使兩條傳輸線等長,從而保證接收端信號邊沿處于同一時間點。當Layout 過程中差分對出現不等長現象時,可通過蛇形線的方式調整長度,在信號發生檢測模塊中就使用了這樣的調控方式。但蛇形線會導致這一段的差分阻抗小于差分特性阻抗100 Ω,所以需要優化蛇形線處的阻抗。
與上述仿真流程相同,將信號發生檢測模塊導入CST,裁剪出需要仿真的蛇形線。蛇形線三維結構的側視圖和俯視圖如圖7 和圖8 所示。

圖7 蛇形線的側視圖

圖8 蛇形線的俯視圖
由俯視圖可以看出,蛇形線會導致兩條傳輸線耦合變弱,從而使得差分阻抗增大。仿真過程中使用改變蛇形線寬度的方式調控差分阻抗。與過孔阻抗優化方式相似,對蛇形線線寬進行了參數掃描后得出TDR 分析曲線。蛇形線阻抗參數掃描結果 如圖9 所示。

圖9 蛇形線阻抗參數掃描結果
可見,蛇形線的初始寬度與傳輸線相同,為 0.42 mm,此時蛇形線處差分阻抗比傳輸線原本的差分阻抗大3 Ω。將蛇形線寬度逐次遞增至0.58 mm,每次增加0.04 mm,共有5 組掃描結果。
由掃描結果可以看出,在蛇形線寬為0.54 mm時,其差分阻抗與傳輸線基本相同,而寬度增大至0.58 mm 時會使其阻抗小于傳輸線。參數優化過程中,模型會沿用其他參數的網格劃分方式,所以結果比對會相對準確,從而為傳輸線阻抗設計提供準確參考。通過仿真結果可以看出,本文設計可以滿足SFF-8432 協議規范的傳輸損耗要求。
本文設計了一款基于FPGA 的PCIe Gen3 接口硬件板卡FBC-810x,用于服務器以及數據中心的網絡協議解析加速。提供了完整的加速卡時鐘硬件設計方案以及加速卡電源設計方案。該設計采用了背鉆技術,同時對傳輸線進行了仿真,優化調整了由BGA 扇出的傳輸路徑、過孔參數以及背鉆參數,驗證了本文設計的高頻板性能達標。