王浩宇, 李雨航, 李龍杰, 張皓林
(中國兵器裝備集團自動化研究所有限公司, 四川綿陽 621000)
國內SRIO 技術的發(fā)展時間較晚, 并且應用范圍有限, 近幾年隨著信息化建設和寬帶無線通信等應用的快速發(fā)展,SRIO 技術在國內逐步得到應用。 國內各大相關單位在SRIO 應用方面較為急迫,但是由于起步時間晚,SRIO 設計技術方面的積累較少, 主要表現(xiàn)在高速SerDes、無阻塞交換結構、SRIO 協(xié)議處理、以及整個SRIO交換系統(tǒng)集成等方面。 并且由于SRIO 技術在協(xié)議硬件實現(xiàn)、高速數(shù)據(jù)無阻塞交換、動態(tài)事件管理等技術的實現(xiàn)復雜性,使得SRIO 交換部件自主研發(fā)門檻較高,國內關于SRIO 的研究大部分是基于國外進口SRIO 交換芯片的應用研究。 如中興和華為等。 目前,國外只有IDT 一家公司提供SRIO 交換芯片,其主打產品是CPS1848。 但隨著中美貿易戰(zhàn)的深入,作為高端電子行業(yè)的代表之一,目前與IDT 的合作已經出現(xiàn)技術支持、采購等方面的困難。 國內天津市濱海新區(qū)信息技術創(chuàng)新中心已經于2018 年開發(fā)成功了國內首款具有自主知識產權的NRS1800 SRIO Gen2 交換芯片,可用于替換CPS1848。
本設計的SRIO 互連系統(tǒng)以國產SRIO 交換芯片NRS1800為核心,搭載兩片PowerPC 及兩片F(xiàn)PGA。其中,PowerPC 處理器采用的是FREESCALE 公司的P2020NXE2KFC,P2020 擁有4 路SerDes 通信鏈路可配置成SRIO 通信模式, 本設計中將P2020 的SerDes 接口配置成1 路4X SRIO 端口,參考時鐘采用125MHz,速率配置為3.125Gbaud。FPGA 采用的是XLINX 公司的K7, 設計中將K7 的CTX模塊配置為一路4X SRIO 接口,并由K7 的SRIO IP 核來控制CTX 模塊完成SRIO 接口的收發(fā)[3]。 其端口頻率配置為6.25Gbit/s。 SRIO 交換芯片采用的是國產SRIO 交換芯片NRS1800,滿足SRIO2.1 規(guī)范,支持48 路通道和最多18 個端口。 本設計中將NRS1800 配置成12 路4X SRIO 接口,4路4X SRIO 接口,實現(xiàn)了FPGA 和PowerPC 之間以及PowerPC 之間的相互通信[4]。 其SRIO 互連總體關系見圖1。
圖1 SRIO 互連總體關系圖
NRS1800 是一款我國自主研發(fā)的SRIO 交換芯片,含有18 個端口和48 個通道, 具有低延時, 高可靠性等優(yōu)點。 同時,NRS1800 支持高達240Gbps 的吞吐量。 也可以與帶有SRIO Gen1 與Gen2 的端點設備對接,比如微處理器、DSP、FPGA、ASIC 和橋片等。 NRS1800 端口支持1x、2x、4x 的端口寬度, 每條lane 速率支持1.25、2.5、3.125、5和6.25Gbaud。
NRS1800 與CPS1848 管腳兼容,但在設計時部分管腳處理任然存在差異,如電源時序REXT_P 及REXT_N 等信號。 具體差異如表1 所示。
表1 NRS1800 與CPS1848 管腳差異
2.3.1 供電設計
NRS1800 有6 個電源域電壓,分別為數(shù)字電源VDD=1.2V,模擬電源(PLL)VDDA=1.2V,Serdes 電源(不包含發(fā)送側)VDDS=1.2V,Serdes 發(fā)送側電源VDDT=1.2V,模擬高壓電源VDD3=3.3V,數(shù)字IO 電源VDD3A=3.3V。NRS1800上電順序為3.3V 先上電,1.2V 后上電,間隔10ms。
本設計中采用一片LTM4633 和LTM4620 進行NRS1800 的電源供電。 其中,LTM4633 的兩路輸出用于P2020 和其他芯片供電,一路用于NRS1800 的3.3V 電源供電, 并用磁珠將VDD3 和VDD3A 的電源輸出隔開,LTM4633 的3.3V 輸出控制引腳RUN 和電源供電由ATX電源上的12V 電源輸入控制, 即ATX 電源啟動時,LTM4633 的3.3V 輸出到NRS1800 進行供電。 采用LTM4620 的兩路輸出對NRS1800 的1.2V 電源輸入進行供電,LTM4620 的電源供電由ATX 電源上的12V 電源輸入控制,NRS1800 穩(wěn)定運行需要3.3V 和1.2V 上電間隔10ms, 本設計中通過LTM4633 的PG 信號輸入到LTM4620 的1.2V 控制引腳RUN 中來控制NRS1800 的上電時序,并在LTM4620 的RUN 輸入端設計RC 電路來調整上電間隔時間[5]。
通過上述設計,保證了在系統(tǒng)加電啟動后,NRS1800的3.3V 先上電,1.2V 后上電,上電間隔為10ms。
2.3.2 端口配置設計
NRS1800 的時鐘輸入為一個156.25MHz 的差分時鐘,并通過該時鐘為芯片的PLL 提供參考時鐘。本設計采用一片晶體振蕩器產生156.25MHz 的LVDS 時鐘信號為NRS1800 提供參考時鐘。
NRS1800 有四個象限,每個象限擁有三個SRIO 端口,通過象限配置引腳QCFG[7:0]來對每個象限端口的寬度進行配置, 復位后也可以通過軟件來重新分配端口的寬度。 本設計中,通過引腳QCFG[7:0]將各個象限的SRIO端口配置成4X 模式。 通過將速度配置引腳SPD [2:0]配置成111, 使SRIO 端口的每條lane 的數(shù)據(jù)傳輸速率為6.25Gbaud/s。
NRS1800 的配置方式非常靈活,支持5 種寄存器配置方式,可通過外接JTAG 調試適配器,外接I2C 調試適配器,外部EEPROM 配置,CPU 通過I2C 接口配置以及CPU 通過SRIO 維護包配置。外接JTAG 和外接I2C 用于調試時使用,且外接JTAG 調試功能在x86 上位機配套了可視化調試軟件。 通過外部EEPROM 配置則是設備在上電復位完成后從外部EEPROM 中加載配置到寄存器,完成交換芯片的初始化工作。本設計選用的是CPU 通過I2C 接口結合SRIO 維護包共同維護NRS1800 的配置。 I2C 接口完成交換芯片初始化工作以及交換芯片工作狀態(tài)未知時調試交換芯片,增強系統(tǒng)可靠性以及可維護性。SRIO 維護包用于完成交換芯片工作過程中對交換芯片以及其他SRIO 網(wǎng)絡上節(jié)點狀態(tài)的查看以及配置修改, 提高運行過程中配置修改與查看效率。
NRS1800 芯片可以作為從設備和臨時主設備。 當工作在臨時主模式下, 僅支持7bit 的從設備地址的外部通信,并且需將交換芯片的配置按照規(guī)定格式固化到EEPROM 中,交換芯片在上電復位完成后從外部EEPROM 讀取配置,讀取數(shù)據(jù)中包括一個CRC 值,NRS1800 用該CRC值與自身產生的CRC 值作對比,來決定寄存器加載的合法性,CRC 成功后完成寄存器初始化。當芯片工作在從模式時,設備支持7/10bit 的從地址訪問,但該NRS1800 I2C 接口7bit 尋址方式不支持多個NRS1800 同時連接到I2C 總線,因此,為增強I2C 總線的節(jié)點可擴展性,統(tǒng)一使用10bit尋址方式。 本設計中, 底板中P2020 作為CPU 通過I2C總線訪問NRS1800 交換芯片寄存器,實現(xiàn)對交換芯片的配置和狀態(tài)查詢。
維護操作屬于SRIO 協(xié)議中第八類I/O 邏輯操作,接入系統(tǒng)的主機可通過不同事務類型的SRIO 維護操作,結合各個端點設備的設備ID 以及跳數(shù)字段,可精確的訪問網(wǎng)絡中端點以及交換器件完成對SRIO 能力寄存器、狀態(tài)寄存器(CAR 和CSR)以及數(shù)據(jù)結構的訪問與控制,從而完成對SRIO 交換系統(tǒng)中所有節(jié)點(包括SRIO 端點和交換器件)的訪問與控制,具有非常高的靈活性。 本設計中將P2020 中SRIO 節(jié)點的窗口1 配置為維護通道,實現(xiàn)對整個交換網(wǎng)絡的管理。
根據(jù)SRIO 協(xié)議以及本設計硬件架構, 測試了PowerPC 與Power PC,Power PC 與FPGA 之間的NREAD、NWRITE、SWRITE、維護操作、維護操作等I/O 操作功能以及DOORELL、MESSAGE 等消息操作功能,均能夠正確并長時間穩(wěn)定工作。
筆者編寫了Power PC 與FPGA 之間的測試例程,采用NREAD、NWRITE 的方式進行性能測試。使用SysClkRateSet函數(shù)將Power PC 的系統(tǒng)時鐘頻率設置為1000 (即每秒1000 個tick),fpga 初始化后, 映射一塊起始地址0x120000,大小0x1000(4kB)的內存空間到SRIO 總線空間,Power-PC 將該總線空間映射到本地起始地址為0xc2000000 的內存空間。將Power PC 起始地址為0xc2000000,大小4kB的內存數(shù)據(jù)發(fā)送65536 次,共256MB 到FPGA,測試總共發(fā)送時間并計算發(fā)送速率,接收速率測試同理,測試結果見表2。
表2 SRIO 速率測試結果
據(jù)SRIO 協(xié)議分析,SRIO 數(shù)據(jù)包載荷最大為256 字節(jié),此時有效傳輸率為72%,考慮程序運行過程本身具有CPU 開銷且PowerPC 本身SRIO 總線僅支持32bit 的訪問,因此該速率認為距離理論值有一定差異。
在現(xiàn)代信號處理系統(tǒng)中,SRIO 作為一種基于包交換的互連技術,因其傳輸速度快,可靠性強、靈活度高的優(yōu)點,被廣泛應用在系統(tǒng)的多個模塊互連中。本文設計以我國自主研發(fā)的SRIO 交換芯片NRS1800 為核心, 設計了有一種SRIO 互連系統(tǒng),實現(xiàn)了在FPGA 和PowerPC 之間以及PowerPC 之間的高速通信, 并對系統(tǒng)中各個模塊的數(shù)據(jù)傳輸進行了測試, 為國產化的高速信號處理平臺的設計提供了參考。