1. 為什么選擇SRIO
隨著PCIe接口、以太網(wǎng)接口的飛速發(fā)展,以及SOC芯片的層出不窮,芯片間的數(shù)據(jù)交互帶寬大大提升并且正在向片內(nèi)交互轉(zhuǎn)變;SRIO接口的應(yīng)用市場在縮小,但是由于DSP和PowerPC中集成了SRIO接口,因此在使用DSP/Power PC + FPGA的使用場景中仍然占有一席之地。
同時,由于SRIO接口一些獨(dú)特的特性,使得SRIO接口在一些應(yīng)用中仍然不可替代:
A. 不同的數(shù)據(jù)包類型,支持使用SRIO傳輸不同的數(shù)據(jù)類型;
B. 支持?jǐn)?shù)據(jù)包優(yōu)先級;
C. 支持響應(yīng)機(jī)制;
D. 支持重傳機(jī)制;
E. 支持帶目的地址的路由;
F. 方便研發(fā)工程師定義靈活的硬件結(jié)構(gòu)和變化的負(fù)荷分擔(dān);
2. XilinxSRIO IP特性
Xilinx SRIO IO具有如下特性:
A. 支持RapidIO互連Rev2.2協(xié)議;
B. 支持1x、2x、4x,并且可以從x4、x2向下train down;
C. 每條lane支持的線速率為1.25Gbs、2.5Gbs、3.125Gbs、5.0Gbs和6.25Gbs;
D. 支持同時發(fā)生的Initiator和Target接口操作;
E. 支持Doorbell傳輸和Message傳輸;
F. 專有的Maintenance傳輸端口;
G. 使用標(biāo)準(zhǔn)的AXI4-Lite和AXI4-Stream接口實(shí)現(xiàn)簡單的握手機(jī)制和數(shù)據(jù)流控制;
H. 所有發(fā)送數(shù)據(jù)包支持source ID可配置;
I. 針對復(fù)雜的互連系統(tǒng),支持16bit device ID配置;
J. TXbuffer和RX buffer深度獨(dú)立可配置,可配置深度分別為8包、16包和32包;
K. 支持TX flow control和RX flow control;
L. 支持multi-cast傳輸;
3. Xilinx SRIO IP架構(gòu)
Xilinx SRIO IP包含LOG(邏輯和傳輸層)、BUF(傳輸層)、PHY(物理層)、Clock&Reset四個組成部分,其中:
A. 邏輯和傳輸層定義了操作協(xié)議,包含數(shù)據(jù)組包和解包,提供用戶邏輯接口、傳輸接口和配置接口;
B. 傳輸層定義了包交換、路由和尋址機(jī)制,包含發(fā)送和接收數(shù)據(jù)緩存、數(shù)據(jù)包傳輸和流控、優(yōu)先級控制和數(shù)據(jù)包排序、跨時鐘域處理和重傳管理;
C. 物理層定義了電氣特性、鏈路控制和糾錯重傳等,包含鏈路訓(xùn)練、初始化和協(xié)議實(shí)現(xiàn)、CRC和響應(yīng)機(jī)制、提供和Transceiver的接口;
D. Clock&Reset部分實(shí)現(xiàn)SRIO時鐘、復(fù)位、寄存器管理(Clock、Reset、Register Manager):該部分實(shí)現(xiàn)SRIO接口時鐘方案、復(fù)位策略及寄存器配置和管理功能;
Xilinx SRIO IP核的結(jié)構(gòu)如下圖所示:
其中,邏輯層提供給用戶的接口包括Initiator Request接口、Initiator Response接口、TargetRequest接口、Target Response接口、Maintenance Request接口、Maintenance Response接口和配置寄存器接口。如下圖所示:
由于在SRIO IP版本升級的過程中,在Gen2 IP中引入了AXI接口,因此Xilinx SRIO IP LOG層提供給用戶的接口也發(fā)生了變化。
以Initiator接口為例,Xilinx SRIO IP Gen1 V5.6以前的版本提供給用戶的接口信號如下圖所示,Target和Maintenance接口提供給用戶的接口也和Initiator接口基本類似。
以Initiator接口為例,Xilinx SRIO IP Gen2 V1.0以后的版本提供給用戶的接口信號如下圖所示,變更為AXI接口,Target和Maintenance接口提供給用戶的接口也和Initiator接口基本類似。
以Initiator接口為例,Xilinx SRIO IP Gen1 V5.6以前的版本提供給用戶的接口時序如下圖所示:
以Initiator接口為例,Xilinx SRIO IP Gen2 V1.0以后的版本提供給用戶的接口時序如下圖所示,這里發(fā)生了一個顯著的變化是在每一包數(shù)據(jù)發(fā)送時tready會先變低一個周期,因此此處的時序要控制好,不然很容易造成SRIO IP核堵塞。
4. SRIO數(shù)據(jù)包格式
在SRIO數(shù)據(jù)包格式中,主要分為包頭、數(shù)據(jù)payload、包尾三部分。包頭的ackID、crf、prio、ftype、ttype、source ID、destination ID、address等信息需要用戶根據(jù)數(shù)據(jù)包的類型、優(yōu)先級、源地址、目的地址、讀寫操作地址等信息填入;data部分是我們需要操作當(dāng)前數(shù)據(jù)包的payload;包尾的CRC等信息為IP核自動插入。
5. XilinxSRIO IP使用和調(diào)試中的注意事項(xiàng)
Xilinx SRIO IP在使用和調(diào)試的時候,我們強(qiáng)調(diào)如下注意事項(xiàng):
A. LOG接口的時序控制必須精準(zhǔn),否則可能會造成SRIO IP核堵塞;以IREQ接口為例說明:
B. LOG接口使用組合邏輯來控制時序,在實(shí)際上板測試過程中要考慮tready信號 隨時可能變無效的情況,通常我用一個不使能任何輸出寄存器的FIFO來做組合邏輯時序控制,在Gen2 IP使用時我的一個例子如下圖所示;
C. Gen1 IP和Gen2 IP的差別在于:Gen1的控制信號為低有效,Gen2的控制信號為高有效;Gen1使用sof、eof、valid來控制有效數(shù)據(jù)進(jìn)入IP核,Gen2使用tvalid和tlast來控制有效數(shù)據(jù)進(jìn)入IP核;Gen1的包頭信息是獨(dú)立的接口,sof對應(yīng)的就是第一個payload數(shù)據(jù),Gen2的包頭信息是作為數(shù)據(jù)寫入tdata接口;
D. 非法的數(shù)據(jù)包會造成SRIO IP核堵塞,比如數(shù)據(jù)長度和包頭里的size不匹配,比如沒有tlast信號等;
E. 如果一個數(shù)據(jù)包payload不足2N,經(jīng)過SRIO IP核后會自動補(bǔ)充到2N,例如我們發(fā)送一個payload為48byte的包,到達(dá)接收端的將會是一個64byte的數(shù)據(jù)包;
F. 如果device ID錯誤,數(shù)據(jù)包將會被過濾;
G. 在FPGA和對端器件調(diào)試SRIO的時候,DSP和Power PC的SRIO通常也支持不同的幾種環(huán)回模式,遇到鏈路不通的問題可以借助這些環(huán)回模式來進(jìn)行定位;
H. 如果系統(tǒng)中接的有SRIO Switch芯片,一般IIC接口和SRIO接口的Maintenance包都可以用于配置Switch芯片;
審核編輯:湯梓紅
-
Xilinx
+關(guān)注
關(guān)注
71文章
2167瀏覽量
121428 -
IP
+關(guān)注
關(guān)注
5文章
1708瀏覽量
149554 -
sRIO
+關(guān)注
關(guān)注
1文章
31瀏覽量
21013
發(fā)布評論請先 登錄
相關(guān)推薦
評論