0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RapidIO核概述

FPGA之家 ? 來(lái)源:FPGA之家 ? 2023-01-09 09:25 ? 次閱讀

一、RapidIO核概述

RapidIO核的設(shè)計(jì)標(biāo)準(zhǔn)來(lái)源于RapidIO Interconnect Specification rev2.2,它支持1x,2x和4x三種模式,每通道的速度支持1.25Gbaud,2.5Gbaud,3.125Gbaud,5.0Gbaud和6.25Gbaud五種。

RapidIO核分為邏輯層(Logical Layer),緩沖(Buffer)和物理層(Physical Layer)三個(gè)部分。其中邏輯層(Logical Layer)支持發(fā)起方(Initiator)和目標(biāo)方(Target)同時(shí)操作;支持門鈴事務(wù)(DOORBELL)和消息事務(wù)(MESSAGE),為維護(hù)事務(wù)(MAINTENANCE)設(shè)計(jì)了專用的端口;采用AXI4-Lite接口和AXI4-Stream接口,支持簡(jiǎn)單的握手機(jī)制去控制數(shù)據(jù)流;支持可編程的Source ID,支持16-bit的device IDs(可選)。緩沖層(Buffer)支持8,16和32包的獨(dú)立可配置的TX和RX Buffer深度;支持獨(dú)立的時(shí)鐘,支持可選的發(fā)送數(shù)據(jù)流控制。物理層(Physical Layer)支持可配置的空閑序列1和空閑序列2;支持關(guān)鍵請(qǐng)求流(Critical Request Flow);支持多播事件。

注意:上面的幾個(gè)專業(yè)術(shù)語(yǔ)的解釋都能在前幾篇博客中找到解釋,不明白的可以回過(guò)頭去看看。

RapidIO互連架構(gòu),與目前大多數(shù)流行的集成通信處理器、主機(jī)處理器和網(wǎng)絡(luò)數(shù)字信號(hào)處理器兼容,是一種高性能、包交換的互連技術(shù)。它能夠滿足高性能嵌入式工業(yè)在系統(tǒng)內(nèi)部互連中對(duì)可靠性、增加帶寬,和更快的總線速度的需求。

RapidIO標(biāo)準(zhǔn)定義為三層:邏輯層、傳輸層和物理層。邏輯層定義了總體協(xié)議和包格式。它包括了RapidIO設(shè)備發(fā)起和完成事務(wù)的必要信息。傳輸層提供了RapidIO包傳輸過(guò)程中的路由信息。物理層描述設(shè)備級(jí)接口細(xì)節(jié),例如包傳輸機(jī)制、流控、電氣特性和低級(jí)錯(cuò)誤管理。這種劃分不需要對(duì)傳輸層或物理層規(guī)范進(jìn)行修改,就可以靈活的給邏輯層規(guī)范添加新的事務(wù)類型。

整個(gè)RapidIO核的架構(gòu)如下圖所示:

e0a31398-8fba-11ed-bfe3-dac502259ad0.png

二、RapidIO核接口說(shuō)明

RapidIO核把三個(gè)子核封裝在一起,它提供了一個(gè)高層次,低維護(hù)的接口。本節(jié)介紹了RapidIO各個(gè)子核和接口的基本功能視圖。RapidIO核的頂層框圖如下圖所示

e0b09522-8fba-11ed-bfe3-dac502259ad0.jpg

2.1 邏輯層接口

邏輯層(LOG)被劃分成幾個(gè)模塊來(lái)控制并解析發(fā)送和接收數(shù)據(jù)包。邏輯層(LOG)有三個(gè)接口:用戶接口(User Interface),傳輸接口(Transport Interface)和配置接口(Configuration Fabric Interface)。

下圖是邏輯接口的示意圖

e0bc2bd0-8fba-11ed-bfe3-dac502259ad0.png

用戶接口包括能發(fā)起和接收包的端口。當(dāng)生成IP核的時(shí)候可以配置端口的數(shù)目和事務(wù)類型,同時(shí)也能通過(guò)AXI4-Lite接口發(fā)起維護(hù)事務(wù)對(duì)本地或者遠(yuǎn)程的寄存器進(jìn)行訪問(wèn)與配置。

傳輸接口包含發(fā)送和接收兩個(gè)端口,它是用來(lái)連接中間的Buffer,對(duì)于RapidIO的頂層模塊來(lái)說(shuō),這兩個(gè)接口不可見(jiàn)。

配置接口也包含兩個(gè)端口。其中配置主機(jī)端口(Configuration Master Port)用來(lái)讀寫(xiě)本地配置空間。邏輯配置寄存器端口(LOG Configuration Register Port),它可以用來(lái)讀寫(xiě)一部分邏輯層或傳輸層配置寄存器。

對(duì)于RapidIO IP核來(lái)說(shuō),用戶最需要關(guān)注的就是用戶接口,下面著重介紹用戶接口的相關(guān)內(nèi)容。

用戶接口包含I/O端口集和三個(gè)可選的端口,三個(gè)可選的端口分別為消息端口(Messaging Port),維護(hù)端口(Maintenance Port)和用戶自定義端口(User-Defined Port)。這些接口都在模塊的頂層,每種事務(wù)類型都在指定的端口上傳輸。其中,任何支持的I/O事務(wù)例如NWRITEs,NWRITE_Rs,SWRITEs,NREADs和RESPONSEs(不包括維護(hù)事務(wù)的responses)全部都在I/O端口上發(fā)送或者接收。消息(Message)事務(wù)能在I/O端口傳輸或者在消息端口傳輸,這取決于是否在IP核的配置選擇分離I/O端口與Message端口。門鈴(Doorbell)事務(wù)只能在I/O端口傳輸,而不能在Message端口上傳輸。維護(hù)事務(wù)包只能在維護(hù)端口上傳輸。如果事務(wù)是由用戶自定義的一種不支持的類型,那么這類事務(wù)就可以在用戶自定義端口上傳輸,如果用戶自定義的端口在IP核的配置中未使能,那么用戶自定義的包會(huì)被丟棄。

I/O端口(I/O Port)

I/O端口能被配置為兩種類型:Condensed I/O或Initiator/Target。這兩種類型可以在IP核的配置中進(jìn)行選擇。I/O端口的數(shù)據(jù)流協(xié)議是AXI4-Stream協(xié)議,它支持兩種類型的包格式,分別是HELLO格式與SRIO Stream格式。

Condensed I/O端口類型減少了用于發(fā)送和接收I/O包的端口數(shù)目。它只用一個(gè)AXI4-Stream通道來(lái)發(fā)送所有類型的包,同樣,也只用一個(gè)AXI4-Stream通道去接收所有類型的包。Condensed I/O端口示意圖如下

e0ccd8c2-8fba-11ed-bfe3-dac502259ad0.png

Initiator/Target端口類型把請(qǐng)求事務(wù)與響應(yīng)事務(wù)分別處理,所以一共有4個(gè)AXI4-Stream通道用于I/O事務(wù)的傳輸。Initiator/Target端口的示意圖如下圖所示,其中灰色的箭頭表示請(qǐng)求事務(wù),黑色的箭頭表示響應(yīng)事務(wù)。

e0d8b908-8fba-11ed-bfe3-dac502259ad0.png

本地設(shè)備(Local Device)生成的請(qǐng)求(Requests)通過(guò)ireq通道發(fā)送,遠(yuǎn)程設(shè)備(Remote Device)產(chǎn)生的響應(yīng)包通過(guò)iresp通道接收來(lái)完成整個(gè)事務(wù)的交互過(guò)程。

遠(yuǎn)程設(shè)備(Remote Device)生成的請(qǐng)求(Requests)通過(guò)treq通道接收,本地設(shè)備(Local Device)產(chǎn)生的響應(yīng)包通過(guò)tresp通道發(fā)送來(lái)完成整個(gè)事務(wù)的交互過(guò)程。

在頂層模塊中,變量名與通道的對(duì)應(yīng)關(guān)系如下:

s_axis_ireq* 對(duì)應(yīng)于ireq通道

m_axis_iresp* 對(duì)應(yīng)于iresp通道

m_axis_treq* 對(duì)應(yīng)于treq通道

s_axis_tresp* 對(duì)應(yīng)于tresp通道

消息端口(Messaging Port)

消息端口是一個(gè)可選的接口,消息事務(wù)既能在I/O端口上發(fā)送,也能在獨(dú)立的消息端口上發(fā)送。獨(dú)立的消息端口類型為Initiator/Target類型。下圖是消息端口的示意圖

e0fdc16c-8fba-11ed-bfe3-dac502259ad0.png

本地設(shè)備(Local Device)生成的請(qǐng)求(Requests)通過(guò)msgireq通道發(fā)送,遠(yuǎn)程設(shè)備(Remote Device)產(chǎn)生的響應(yīng)包通過(guò)msgiresp通道接收來(lái)完成整個(gè)事務(wù)的交互過(guò)程。

遠(yuǎn)程設(shè)備(Remote Device)生成的請(qǐng)求(Requests)通過(guò)msgtreq通道接收,本地設(shè)備(Local Device)產(chǎn)生的響應(yīng)包通過(guò)msgtresp通道發(fā)送來(lái)完成整個(gè)事務(wù)的交互過(guò)程。

在頂層模塊中,變量名與通道的對(duì)應(yīng)關(guān)系如下:

s_axis_msgireq* 對(duì)應(yīng)于msgireq通道

m_axis_msgiresp* 對(duì)應(yīng)于msgiresp通道

m_axis_msgtreq* 對(duì)應(yīng)于msgtreq通道

s_axis_msgtresp* 對(duì)應(yīng)于msgtresp通道

用戶自定義端口(User-Defined Port)

用戶自定義端口是一個(gè)可選的端口,它包括兩個(gè)AXI4-Stream通道,一個(gè)用于發(fā)送另一個(gè)用來(lái)接收。用戶自定義端口僅僅支持SRIO Stream格式的事務(wù)。下圖是用戶自定義端口的示意圖

e10dada2-8fba-11ed-bfe3-dac502259ad0.png

在頂層模塊中,變量名與接口的對(duì)應(yīng)關(guān)系如下:

s_axis_usrtx* 對(duì)應(yīng)于user_io_tx接口

m_axis_usrrx* 對(duì)應(yīng)于user_io_rx接口

維護(hù)端口(Maintenance Port)

維護(hù)端口使用的是AXI4-Lite接口協(xié)議,AXI4-Lite接口允許用戶訪問(wèn)本地或遠(yuǎn)程配置空間。下圖是AXI4-Lite維護(hù)端口示意圖

e11d2c28-8fba-11ed-bfe3-dac502259ad0.png

上圖中從右到左的黑色箭頭表示請(qǐng)求(Requests)通道,從左到右的灰色箭頭表示響應(yīng)(Responses)通道。每個(gè)通道有獨(dú)立的ready/valid握手信號(hào)。

狀態(tài)(Status)

維用戶接口的狀態(tài)信號(hào)包括deviceid和port_decode_error,定義如下表所示

信號(hào) 方向 描述
deviceid[15:0] 輸出 Base DeviceID CSR(偏移地址為0x60)寄存器的值
port_decode_error 輸出 此信號(hào)為高說(shuō)明用戶自定義端口未使能,一個(gè)不支持的事務(wù)被接收并立即丟棄。當(dāng)下一個(gè)支持的事務(wù)包在任意用戶接口被接收以后此信號(hào)被拉低。這個(gè)信號(hào)同步于log_clk信號(hào)

2.2 Buffer接口

Buffer的目的是對(duì)發(fā)送和接收的包進(jìn)行緩沖。Buffer對(duì)于保證包發(fā)送和流控操作是非常有必要的,Xilinx提供了一個(gè)可配置的Buffer解決方案,可以在系統(tǒng)性能和資源利用率之間權(quán)衡選擇。

發(fā)送Buffer負(fù)責(zé)把將要發(fā)出去的事務(wù)放到隊(duì)列中,并對(duì)發(fā)往物理層(PHY)的包流進(jìn)行管理。接收Buffer和發(fā)送Buffer的大小可以在IP核中配置為8、16或32個(gè)包的深度。發(fā)送Buffer是一個(gè)存儲(chǔ)和轉(zhuǎn)發(fā)緩沖區(qū),它是用來(lái)降低包到包的延遲以最大化流吞吐量。發(fā)送Buffer必須保存每個(gè)包直到包被接收方成功接收,當(dāng)接收方成功接收包以后,發(fā)送Buffer才會(huì)釋放包來(lái)給其他包騰出空間。當(dāng)流控(Flow Control)發(fā)生時(shí),通常會(huì)有多個(gè)未發(fā)送的包滯留在發(fā)送Buffer中,發(fā)送Buffer會(huì)根據(jù)包的類型與優(yōu)先級(jí)進(jìn)行重新排序,然后按照響應(yīng)包先發(fā)送,請(qǐng)求包后發(fā)送的順序把發(fā)送Buffer中的包依次發(fā)出去。Buffer的另一個(gè)作用是處理跨時(shí)鐘域的問(wèn)題,當(dāng)生成IP核的時(shí)候可以根據(jù)需求添加或者移除跨時(shí)鐘域邏輯。對(duì)于多通道的RapidIO來(lái)說(shuō),由于物理層的時(shí)鐘在start-up場(chǎng)景和traindown場(chǎng)景是動(dòng)態(tài)的,所以推薦把跨時(shí)鐘域邏輯加上,這樣可以保證用戶邏輯工作在已知的速率上。

接收Buffer類似于一個(gè)FIFO,它用來(lái)存儲(chǔ)和轉(zhuǎn)發(fā)接收通路上發(fā)送給邏輯層的數(shù)據(jù)。接收Buffer也包含跨時(shí)鐘域邏輯,這可以保證邏輯層和物理層工作在不同的速率上,和發(fā)送Buffer一樣,對(duì)于多通道RapidIO,推薦加上跨時(shí)鐘域邏輯。

所有Buffer層的接口對(duì)于RapidIO頂層都是不可見(jiàn)的。Buffer層示意圖如下

e1415de6-8fba-11ed-bfe3-dac502259ad0.png

由上圖可知,在Buffer層的邏輯層與物理層兩側(cè)均有兩個(gè)AXI4-Stream通道,一個(gè)為發(fā)送通道,另外一個(gè)為接收通道。還有一個(gè)AXI4-Lite通道用于去配置Buffer層的配置空間。

2.3 物理層接口

物理層(PHY)用來(lái)處理鏈路訓(xùn)練(Link Training),初始化(Initialization)和協(xié)議(Protocol),同時(shí)還包括包循環(huán)冗余校驗(yàn)碼(CRC)與應(yīng)答標(biāo)識(shí)符的插入。物理層接口與高速串行收發(fā)器相連。串行收發(fā)器在IP核中被設(shè)計(jì)為一個(gè)外部的例化模塊以降低用戶使用模型的難度。物理層接口的示意圖如下圖所示

e15ceb7e-8fba-11ed-bfe3-dac502259ad0.png

物理層與Buffer層通過(guò)兩個(gè)AXI4-Stream通道相連,同時(shí)物理層有一個(gè)通道的AXI4-Lite接口與配置結(jié)構(gòu)相連,可以通過(guò)這個(gè)通道訪問(wèn)物理層的配置空間。物理層還通過(guò)一個(gè)串行接口(Serial Interface)與串行收發(fā)器(Serial Transceivers)相連。

2.4 寄存器空間

RapidIO的寄存器空間如下表所示

e169b304-8fba-11ed-bfe3-dac502259ad0.jpg

能力寄存器空間(Capability Register Space)

能力寄存器空間的寄存器是只讀寄存器,它們?cè)谶壿媽又袑?shí)現(xiàn)。能力寄存器映射表如下表所示

e175b0aa-8fba-11ed-bfe3-dac502259ad0.jpg

命令和狀態(tài)寄存器空間(Command and Status Register Space)

命令和狀態(tài)寄存器空間的寄存器和能力寄存器一樣都在邏輯層實(shí)現(xiàn),命令和狀態(tài)寄存器空間的映射表如下表所示

e1839698-8fba-11ed-bfe3-dac502259ad0.jpg

寄存器空間還包括Extended Feature Space與Implementation-defined Space兩種,關(guān)于這兩種寄存器空間的說(shuō)明請(qǐng)查看pg007_srio_gen2.pdf。

三、使用RapidIO核

3.1 設(shè)計(jì)指南

RapidIO協(xié)議定義了七種事務(wù)類型,每種事務(wù)類型執(zhí)行不同的功能。RapidIO包格式中的FTYPE字段與TTYPE字段共同確定了事務(wù)的類型,與標(biāo)準(zhǔn)RapidIO協(xié)議不同的是,RapidIO核中定義了第9類事務(wù)(FTYPE=9)——DATA STREAMING事務(wù),它是一類帶有數(shù)據(jù)負(fù)載的寫(xiě)事務(wù),而標(biāo)準(zhǔn)RapidIO協(xié)議中第9類事務(wù)是保留事務(wù)。詳細(xì)的對(duì)應(yīng)關(guān)系如下表所示

Ftype
(Format Type)
Ttype
(Transaction Type)
包類型 功能
0~1 —— Reserve 無(wú)
2 4’b0100 NREAD 讀指定的地址
4’b1100 ATOMIC increment 先往指定的地址中傳遞數(shù)據(jù),在把傳遞的數(shù)據(jù)加1,此操作為原子操作,不可打斷
4’b1101 ATOMIC decrement 先往指定的地址中傳遞數(shù)據(jù),在把傳遞的數(shù)據(jù)減1,此操作為原子操作,不可打斷
4’b1110 ATOMIC set 把指定地址中的數(shù)據(jù)每個(gè)bit全部寫(xiě)1
4’b1111 ATOMIC clear 把指定地址中的數(shù)據(jù)清0(每個(gè)bit全部清零)
3~4 —— Reserve 無(wú)
5 4’b0100 NWRITE 往指定的地址寫(xiě)數(shù)據(jù)
4’b0101 NWRITE_R 往指定的地址寫(xiě)數(shù)據(jù),寫(xiě)完成以后接收目標(biāo)器件(Target)的響應(yīng)
4’b1101 ATOMIC test/swap 對(duì)指定地址中的數(shù)據(jù)進(jìn)行測(cè)試并交換,此操作為原子操作,不可打斷
6 4’bxxxx SWRITE 以流寫(xiě)方式寫(xiě)指定的地址,與NWRITE以及NWRITE_R相比,此方式效率最高
7 —— Reserve 無(wú)
8 4’b0000 MAINTENANCE read request 發(fā)起讀配置,控制,狀態(tài)寄存器請(qǐng)求
4’b0001 MAINTENANCE write request 發(fā)起寫(xiě)配置,控制,狀態(tài)寄存器請(qǐng)求
4’b0010 MAINTENANCE read response 產(chǎn)生讀配置,控制,狀態(tài)寄存器響應(yīng)
4’b0011 MAINTENANCE write response 產(chǎn)生寫(xiě)配置,控制,狀態(tài)寄存器響應(yīng)
4’b0100 MAINTENANCE write resquest 端口寫(xiě)請(qǐng)求
9 —— DATA Streaming 數(shù)據(jù)流寫(xiě),請(qǐng)求事務(wù)包含有效數(shù)據(jù)
10 4’bxxxx DOORBELL 門鈴
11 4’bxxxx MESSAGE 消息
12 —— Reserve 無(wú)
13 4’b0000 RESPONSE
no data
不帶有效數(shù)據(jù)的響應(yīng)包
4’b1000 RESPONSE
with data
帶有效數(shù)據(jù)的響應(yīng)包
14~15 —— Reserve 無(wú)

邏輯層AXI4-Stream串行RapidIO接口用法

RapidIO核事務(wù)收發(fā)接口采用的協(xié)議是AXI4-Stream協(xié)議。AXI4-Stream協(xié)議用ready/valid握手信號(hào)在主從設(shè)備之間傳輸信息。AXI4-Stream協(xié)議用tlast信號(hào)指示傳輸?shù)淖詈笠粋€(gè)數(shù)據(jù)從而確定包的邊界,用tkeep字節(jié)使能信號(hào)指示數(shù)據(jù)中的有效字節(jié),它還包括有效數(shù)據(jù)tdata信號(hào)以及用戶數(shù)據(jù)tuser信號(hào)用來(lái)傳輸實(shí)際的包數(shù)據(jù)。

HELLO包格式(重點(diǎn))

為了簡(jiǎn)化RapidIO包的構(gòu)建過(guò)程,RapidIO核的事務(wù)傳輸接口(ireq,treq,iresp,tresp)可以配置為HELLO(Header Encoded Logical Layer Optimized)格式。這種格式把包的包頭(Header)域進(jìn)行標(biāo)準(zhǔn)化,而且把包頭和數(shù)據(jù)在接口上分開(kāi)傳輸,這將簡(jiǎn)化控制邏輯并且允許數(shù)據(jù)與發(fā)送邊界對(duì)齊,有助于數(shù)據(jù)的管理。

HELLO格式的包如下圖所示

e191a7ce-8fba-11ed-bfe3-dac502259ad0.jpg

其中,各個(gè)字段的定義如下表所示

字段 位置 描述
TID [63:56] 包的事務(wù)ID(Transaction ID),RapidIO手冊(cè)規(guī)定在給定的時(shí)機(jī),RapidIO包只能有唯一的TID與Src ID對(duì)。
FTYPE [55:52] 包的事務(wù)類(Transaction Class),HELLO格式支持的FTYPEs為2,5,6,A,B和D。
TTYPE [51:48] 包的事務(wù)類型(Transaction Type),當(dāng)FTYPE的值為2,5或D時(shí),不同的TTYPE值對(duì)應(yīng)于包的不同功能。
Priority [46:45] 包的優(yōu)先級(jí)。請(qǐng)求包的優(yōu)先級(jí)值為0~2,響應(yīng)包的優(yōu)先級(jí)值為請(qǐng)求包的優(yōu)先級(jí)加1
CRF [44] 包的關(guān)鍵請(qǐng)求流標(biāo)志(Critical Request Flow)
Size [43:36] 有效數(shù)據(jù)負(fù)載的字節(jié)數(shù)減1,如果這個(gè)字段的值為0xFF,那么表示有效數(shù)據(jù)為256(0xFF + 1)個(gè)字節(jié)
Error [35] 當(dāng)這個(gè)字段為1時(shí)表示包處于錯(cuò)誤狀態(tài)
Address [33:0] 事務(wù)的字節(jié)地址
Info [31:16] 信息域。僅在門鈴事務(wù)(DOORBELL)中包含此字段
Msglen-1 [63:60] 消息事務(wù)(MESSAGE)中包的個(gè)數(shù)。僅在消息事務(wù)(MESSAGE)中包含此字段
Msgseg-1 [59:56] 包中的消息段,僅在消息事務(wù)(MESSAGE)中包含此字段,如果是單段(signal-segment)消息,此字段保留
Mailbox [9:4] 包的目標(biāo)郵箱,僅在消息事務(wù)(MESSAGE)中包含此字段,除了單段(signal-segment)消息以外,此字段的高四位是保留位
Letter [1:0] 包的信件,僅在消息事務(wù)(MESSAGE)中包含此字段,指示了郵箱中的一個(gè)插槽
S,E,R,xh,O,P [63:56] S:起始位,當(dāng)此字段為1時(shí)表示這個(gè)包是新PDU(Protocol Data Unit)的第一個(gè)分段。
E:結(jié)束位,當(dāng)此字段為1時(shí)表示這個(gè)包是新PDU(Protocol Data Unit)的最后一個(gè)分段。當(dāng)S和E均為1時(shí)表示PDU僅包含一個(gè)包。
R:保留位。
Xh:擴(kuò)展頭(Extended Header)。目前版本不支持
O:奇數(shù)(Odd),當(dāng)此字段為1時(shí)表示數(shù)據(jù)負(fù)載有奇數(shù)個(gè)半字。
P:填充位(Pad)。當(dāng)此字段為1時(shí),一個(gè)填充字節(jié)用于去填充數(shù)據(jù)到半字(half-word)邊界
Cos [43:36] 服務(wù)類(Class of service)
StreamID [31:16] 點(diǎn)到點(diǎn)的數(shù)據(jù)流標(biāo)識(shí)符
Length [15:0] 協(xié)議數(shù)據(jù)單元(Procotol Data Unit,PDU)長(zhǎng)度

HELLO格式的包中Size域的值等于傳輸?shù)淖止?jié)的總數(shù)減1,Size域的有效值范圍為0~255,對(duì)應(yīng)于實(shí)際傳輸?shù)淖止?jié)數(shù)量1~256。HELLO格式中的size和address域必須對(duì)應(yīng)于RapidIO包中有效的size,address和wdptr域,所以HELLO格式的size和address字段的值存在一些限制條件。RapidIO核不能把Size域中的非法值修正為實(shí)際RapidIO包中Size域的有效值,所以需要對(duì)HELLO格式包的Size域提供一個(gè)正確的值。由于AXI4-Stream協(xié)議中tdata信號(hào)為8個(gè)字節(jié),也就是一個(gè)雙字(Double Word),所以Size域的值需要分兩種情況討論:傳輸?shù)臄?shù)據(jù)量小于8字節(jié)和傳輸?shù)臄?shù)據(jù)量大于8字節(jié)。

傳輸?shù)臄?shù)據(jù)量小于8字節(jié)(Sub-DWORD Accesses):

對(duì)于傳輸?shù)臄?shù)據(jù)量小于8字節(jié)的情況,address字段和size字段用來(lái)決定有效的字節(jié)位置(tkeep信號(hào)必須為0xff),但是僅僅能導(dǎo)致RapidIO包中rdsize/wrsize和wdptr為有效值的address和size值組合才是被允許的,下圖是HELLO格式中address和size兩個(gè)字段與有效字節(jié)位置的對(duì)應(yīng)關(guān)系示意圖(圖中灰色部分為有效字節(jié)位置)

e1b59742-8fba-11ed-bfe3-dac502259ad0.png

例如,對(duì)size=2,address=34’h1_1234_5675這兩個(gè)組合來(lái)說(shuō),由于size=2,所以往address中寫(xiě)入的數(shù)據(jù)個(gè)數(shù)為3(size+1)個(gè)字節(jié),而address的最低3位為5(3’b101),通過(guò)上圖可知,有效字節(jié)的位置是第7、6、5三個(gè)字節(jié)。對(duì)于size和address[2:0]值的組合不在上圖中的情況都是非法的,這是應(yīng)該避免的,比如,size=2, address=34’h1_1234_5673這種組合就屬于非法的組合。

傳輸?shù)臄?shù)據(jù)量大于8字節(jié)(Large Accesses):

對(duì)于傳輸?shù)臄?shù)據(jù)量大于8字節(jié),并且地址的起始字節(jié)偏移不為0的情況必須把數(shù)據(jù)分成多次進(jìn)行傳輸,其中未對(duì)齊的小于8字節(jié)的段就可以通過(guò)上圖中size和address的有效組合來(lái)確定有效字節(jié)的位置。另一種解決辦法是,讀操作的數(shù)據(jù)量大小可以被增加到下一個(gè)支持的大小,然后從對(duì)應(yīng)的響應(yīng)中剝離出必要的數(shù)據(jù)。

因此,對(duì)于數(shù)據(jù)量為1個(gè)雙字(8個(gè)字節(jié))或更大的情況,address的最低3位必須為0,RapidIO手冊(cè)給讀寫(xiě)事務(wù)定義了范圍從1到256個(gè)字節(jié)的可支持的數(shù)據(jù)量。請(qǐng)求事務(wù)的數(shù)據(jù)量如果大于一個(gè)雙字(8個(gè)字節(jié)),那么數(shù)據(jù)量應(yīng)該通過(guò)四舍五入到最接近的支持的值。讀寫(xiě)事務(wù)有效的HELLO格式的數(shù)據(jù)量為:7,15,31,63,95(僅支持讀事務(wù)),127,159(僅支持讀事務(wù)),191(僅支持讀事務(wù)),223(僅支持讀事務(wù))和255。

對(duì)于寫(xiě)事務(wù)的數(shù)據(jù)量介于以上這些支持的數(shù)據(jù)量中間的情況,在通道的tlast信號(hào)為1之前應(yīng)該給RapidIO核提供必要的數(shù)據(jù)量,僅僅提供的數(shù)據(jù)才能被發(fā)送。同理,用戶的設(shè)計(jì)提供的數(shù)據(jù)可能少于期望的數(shù)據(jù)量,那么實(shí)際的數(shù)據(jù)量應(yīng)該被寫(xiě)入,傳輸應(yīng)該假設(shè)完成。

RapidIO協(xié)議不支持傳輸?shù)臄?shù)據(jù)量大于256字節(jié)的情況,并且邏輯層(Logical)也不能把大于256字節(jié)的數(shù)據(jù)量分割為小的數(shù)據(jù)量進(jìn)行發(fā)送。如果不滿足這個(gè)要求可能會(huì)導(dǎo)致致命的鏈路錯(cuò)誤,在這種錯(cuò)誤情況下,鏈路可能會(huì)不斷重傳數(shù)據(jù)量大于256字節(jié)的包。

HELLO格式數(shù)據(jù)的包頭(Header)在用戶接口的第一個(gè)有效時(shí)鐘上,如果發(fā)送的事務(wù)攜帶數(shù)據(jù)負(fù)載,那么數(shù)據(jù)負(fù)載緊接著包頭(Header)后面進(jìn)行連續(xù)發(fā)送。包的Source ID和Destination ID放在tuser信號(hào)中并與包頭(Header)一樣,在第一個(gè)有效時(shí)鐘下進(jìn)行發(fā)送,發(fā)送完畢以后,tuser信號(hào)的數(shù)據(jù)被忽略。

下圖是攜帶有數(shù)據(jù)負(fù)載HELLO格式包在用戶接口上傳輸?shù)臅r(shí)序圖,這個(gè)傳輸有4個(gè)雙字(32個(gè)字節(jié))的數(shù)據(jù)負(fù)載,加上包頭,整個(gè)傳輸一共花費(fèi)了5個(gè)時(shí)鐘周期。用戶只需要把想要發(fā)送的數(shù)據(jù)按照下圖的時(shí)序圖送入RapidIO核的AXI4-Stream接口,RapidIO核就能把它轉(zhuǎn)化為標(biāo)準(zhǔn)的RapidiO串行物理層的包發(fā)出去從而完成一次事務(wù)的交互。

e1c464ac-8fba-11ed-bfe3-dac502259ad0.png

下圖是一種更復(fù)雜的傳輸示意圖。首先,有兩個(gè)背靠背(back-to-back)單周期包(包不帶數(shù)據(jù)負(fù)載,僅包含一個(gè)包頭)。包的邊界通過(guò)拉高tlast信號(hào)進(jìn)行指示。在單周期包傳輸完畢以后,主機(jī)等待了一個(gè)時(shí)鐘周期才開(kāi)始發(fā)送下一個(gè)包。在發(fā)送第三個(gè)包的過(guò)程中,主機(jī)(Master)和從機(jī)(Slave)分別通過(guò)拉低tvalid和tready信號(hào)一個(gè)時(shí)鐘周期來(lái)暫停數(shù)據(jù)的發(fā)送,由于第三個(gè)包的數(shù)據(jù)負(fù)載為2個(gè)雙字,所以傳輸?shù)谌齻€(gè)包一共消耗了3個(gè)有效時(shí)鐘,加上2個(gè)無(wú)效的時(shí)鐘周期,一共消耗了5個(gè)時(shí)鐘周期。

e1d2969e-8fba-11ed-bfe3-dac502259ad0.jpg

SRIO Stream包格式

用戶接口也能配置為SRIO Stream格式,在這種格式下,用戶接口的包格式各個(gè)字段的定義與RapidIO手冊(cè)中標(biāo)準(zhǔn)的RapidIO包中邏輯層和傳輸層各個(gè)字段的定義完全相同,但用戶接口的包格式中還包括標(biāo)準(zhǔn)RapidIO包物理層的prio字段,整個(gè)SRIO Stream的包格式如下圖所示

e1df0e88-8fba-11ed-bfe3-dac502259ad0.jpg

下圖是SRIO Stream格式的包在用戶接口上傳輸?shù)臅r(shí)序圖,整個(gè)傳輸?shù)臄?shù)據(jù)負(fù)載為5個(gè)雙字,一共消耗了5個(gè)有效時(shí)鐘周期,CRF/Response位在第一個(gè)有效時(shí)鐘周期進(jìn)行傳輸。

e1f41fee-8fba-11ed-bfe3-dac502259ad0.png

SRIO Stream格式用的不多,所以并非本文的重點(diǎn),更多詳細(xì)的內(nèi)容請(qǐng)查看pg007_srio_gen2.pdf的第80頁(yè)到82頁(yè)。

訪問(wèn)配置空間

每個(gè)通過(guò)RapidIO連接的處理器單元都有能力寄存器(Capability Register,CARs)和命令狀態(tài)寄存器(Command and Status Register,CSRs),可以通過(guò)訪問(wèn)這些寄存器去配置設(shè)備的Capability和Status等相關(guān)信息。配置寄存器的長(zhǎng)度都為32-bits,所有的配置寄存器進(jìn)行讀寫(xiě)訪問(wèn)時(shí)的地址增量為4個(gè)字節(jié),讀寫(xiě)保留寄存器正常情況下不會(huì)導(dǎo)致設(shè)備進(jìn)入錯(cuò)誤狀態(tài),同理,寫(xiě)CARs(只讀寄存器)正常情況也不會(huì)進(jìn)入錯(cuò)誤狀態(tài)。

維護(hù)寫(xiě)操作例子

對(duì)于寫(xiě)事務(wù),在發(fā)起寫(xiě)事務(wù)之前,寫(xiě)地址和寫(xiě)數(shù)據(jù)必須在它們各自維護(hù)端口通道上進(jìn)行傳輸。當(dāng)邏輯層接收到響應(yīng)以后,維護(hù)端口會(huì)在寫(xiě)響應(yīng)通道上返回一個(gè)狀態(tài)。維護(hù)端口一次只能處理一個(gè)寫(xiě)事務(wù),在響應(yīng)發(fā)送完成之前,新的地址和數(shù)據(jù)不會(huì)被接收。下圖是維護(hù)端口上完成兩次寫(xiě)事務(wù)的時(shí)序圖,因?yàn)榈刂泛蛿?shù)據(jù)在不同的通道上,所以它們能在通道的任意時(shí)刻進(jìn)行傳輸而不用考慮另外一個(gè)

e2168246-8fba-11ed-bfe3-dac502259ad0.jpg

維護(hù)讀操作例子

當(dāng)讀地址在維護(hù)端口上進(jìn)行傳輸后讀事務(wù)被立即發(fā)起,邏輯層接收到響應(yīng)以后,維護(hù)端口在讀響應(yīng)通道返回一個(gè)狀態(tài)。維護(hù)端口一次只能處理一個(gè)讀事務(wù),在響應(yīng)發(fā)送完成之前,新的地址不會(huì)被接收。下圖是一個(gè)讀事務(wù)的時(shí)序圖

e2249e26-8fba-11ed-bfe3-dac502259ad0.png

更多通過(guò)維護(hù)事務(wù)訪問(wèn)寄存器空間的內(nèi)容請(qǐng)查看pg007_srio_gen2.pdf的第82頁(yè)到91頁(yè)。

3.2 時(shí)鐘

物理層有兩個(gè)時(shí)鐘域,第一個(gè)是phy_clk,它是最主要的核時(shí)鐘,第二個(gè)是gt_pcs_clk,它是用于串行收發(fā)接口(Serial Transceiver interface)。時(shí)鐘gt_clk并未被物理層使用,而是被串行收發(fā)接口所使用。gt_pcs_clk的頻率為gt_clk的一半。一般來(lái)說(shuō),phy_clk與gt_clk的關(guān)系如下:

phy_clk = (gt_clk * LW) / 4

其中LW指的是鏈路寬度(Link Width),所以對(duì)于操作在2x模式(二通道模式)的核來(lái)說(shuō),LW的值為2,phy_clk的頻率是gt_clk頻率的一半。串行收發(fā)器需要通過(guò)專用時(shí)鐘引腳提供參考時(shí)鐘refclk,參考時(shí)鐘的頻率需要在生成RapidIO核的時(shí)候進(jìn)行配置,可選擇的參考時(shí)鐘頻率取決于RapidIO核的結(jié)構(gòu)與線速率。下表列出了參考時(shí)鐘頻率與線速率的關(guān)系

e231bf8e-8fba-11ed-bfe3-dac502259ad0.png

邏輯層工作在log_clk這個(gè)時(shí)鐘域。為了保證最優(yōu)的吞吐量,log_clk的頻率應(yīng)該大于或等于phy_clk的頻率。下面列出了三種不同通道模式下線速率與時(shí)鐘頻率的關(guān)系

4x模式(4通道模式)

e25015ba-8fba-11ed-bfe3-dac502259ad0.jpg

2x模式(2通道模式)

e25b5768-8fba-11ed-bfe3-dac502259ad0.jpg

1x模式(1通道模式)

e267fb80-8fba-11ed-bfe3-dac502259ad0.jpg

對(duì)于7 Series FPGAs來(lái)說(shuō),內(nèi)部采用了一個(gè)MMCM從參考時(shí)鐘refclk得到RapidIO核各個(gè)模塊的時(shí)鐘,整個(gè)時(shí)鐘方案的框圖如下圖所示

e273b182-8fba-11ed-bfe3-dac502259ad0.png

MMCM的倍頻值與分頻值取決于參考時(shí)鐘的頻率與線速率。在4x模式(四通道模式)下,log_clk和gt_clk共享一個(gè)BUFG。在1x模式(單通道模式)下,log_clk和phy_clk共享一個(gè)BUFG(由于phy_clk的頻率只有一種情況,所以不需要BUFGMUX)。除此以外,如果在RapidIO核的配置中選中了Unified Clock選項(xiàng),則log_clk和phy_clk要求有相同的頻率,這意味著與log_clk/cfg_clk相關(guān)的BUFG能被移除,log_clk/cfg_clk與phy_clk相連。

3.3 復(fù)位

每個(gè)時(shí)鐘域都有相關(guān)聯(lián)的復(fù)位信號(hào)。復(fù)位信號(hào)應(yīng)該至少在各自的時(shí)鐘域中保持4個(gè)時(shí)鐘周期,如果RapidIO核的通道寬度減少導(dǎo)致phy_clk的時(shí)鐘頻率降低,那么復(fù)位信號(hào)仍然需要保持至少4個(gè)時(shí)鐘周期。復(fù)位參考設(shè)計(jì)模塊(srio_rst.v)有一個(gè)單復(fù)位輸入sys_rst。這個(gè)信號(hào)同步于輸入。這個(gè)模塊同步復(fù)位信號(hào)到每個(gè)時(shí)鐘域并對(duì)復(fù)位脈沖進(jìn)行擴(kuò)展以滿足最小4個(gè)時(shí)鐘周期的要求。

硬件復(fù)位應(yīng)該被用戶設(shè)計(jì)產(chǎn)生,當(dāng)復(fù)位RapidIO核的時(shí)候必須要注意主機(jī)和從機(jī)必須同時(shí)復(fù)位以保證ackID字段對(duì)齊,推薦主機(jī)和從機(jī)的復(fù)位信號(hào)完全重疊以減少包和控制符號(hào)的丟失率。

3.4 RapidIO協(xié)議簡(jiǎn)介

RapidIO的協(xié)議已經(jīng)在這個(gè)系列的前面幾篇文章中做了很多介紹了,這里僅僅做一個(gè)總結(jié)。

第2類事務(wù)(FTYPE=2)為請(qǐng)求類事務(wù),根據(jù)TTYPE字段的不同值,它包括NREAD事務(wù)(TTYPE=4’b0100),ATOMIC Increment事務(wù)(TTYPE=4’b1100),ATOMIC Decrement事務(wù)(TTYPE=4’b1101),ATOMIC Set事務(wù)(TTYPE=4’b1110),ATOMIC Clear事務(wù)(TTYPE=4’b1111)這幾種。

第5類事務(wù)(FTYPE=5)為寫(xiě)類事務(wù),根據(jù)TTYPE字段的不同值,它包括NWRITE事務(wù)(TTYPE=4’b0100),NWRITE_R事務(wù)(TTYPE=4’b0101),ATOMIC Swap事務(wù)(TTYPE=4’b1100),ATOMIC Compare-and-Swap事務(wù)(TTYPE=4’b1101),ATOMIC Test-and-Swap事務(wù)(TTYPE=4’b1110)這幾種。

第6類事務(wù)(FTYPE=6)為SWRITE事務(wù)(流寫(xiě)事務(wù)),請(qǐng)求方可以利用流寫(xiě)事務(wù)往目標(biāo)方的存儲(chǔ)空間寫(xiě)入大塊數(shù)據(jù)。與NWRITE相比,流寫(xiě)事務(wù)具備以下兩個(gè)特點(diǎn):1、流寫(xiě)事務(wù)傳輸數(shù)據(jù)的最小單位為雙字(Double Word);2、流寫(xiě)事務(wù)的包格式相對(duì)于NWRITE包格式具有更少的頭部開(kāi)銷。

第10類事務(wù)(FTYPE=10)為DOORBELL事務(wù)(門鈴事務(wù)),門鈴事務(wù)不包含數(shù)據(jù)負(fù)載,它只能用來(lái)傳輸16-bit的信息,所以DOORBELL事務(wù)適合傳輸中斷或者信號(hào)量。

第11類事務(wù)(FTYPE=11)為MESSAGE事務(wù)(消息事務(wù)),消息事務(wù)必須攜帶數(shù)據(jù)負(fù)載,完成一次數(shù)據(jù)消息操作最多需要16個(gè)單獨(dú)的消息事務(wù),其中每個(gè)消息事務(wù)攜帶的數(shù)據(jù)負(fù)載最大仍為256字節(jié),所以消息操作的最大數(shù)據(jù)載荷為4096字節(jié)(16*256 Bytes)。

第13類事務(wù)(FTYPE=13)為響應(yīng)類事務(wù),根據(jù)TTYPE字段的不同值,它包括不帶數(shù)據(jù)響應(yīng)事務(wù)(TTYPE=4’b0000),消息響應(yīng)事務(wù)(TTYPE=4’b0001)和攜帶數(shù)據(jù)響應(yīng)事務(wù)(TTYPE=4’b1000)。

第9類事務(wù)(FTYPE=9)為Data Streaming事務(wù),在標(biāo)準(zhǔn)的RapidIO協(xié)議中第9類事務(wù)為保留事務(wù),所以第9類事務(wù)是一種自定義的事務(wù)。關(guān)于第9類事務(wù)的詳細(xì)內(nèi)容請(qǐng)查看pg007_srio_gen2.pdf的第106頁(yè)。

四、RapidIO核配置

1、在IP Catalog中找到RapidIO

e280e000-8fba-11ed-bfe3-dac502259ad0.jpg

2、雙擊RapidIO核打開(kāi)配置界面

e28d9444-8fba-11ed-bfe3-dac502259ad0.jpg

3、選擇Mode為Advanced

e29adfbe-8fba-11ed-bfe3-dac502259ad0.jpg

Component Name:IP的的名字,只能為字母,數(shù)字,下劃線,其中首字符必須為字母。

Mode:IP的模式,有基本(Basic)和高級(jí)(Advanced)兩種。

Link Width:鏈路寬度,可選值為1、2或者4,鏈路寬度越大,數(shù)據(jù)的傳輸帶寬越大。

Transfer Frequency:傳輸頻率,這個(gè)值表示的是每個(gè)串行鏈路的傳輸速率,可選值有1.25、2.5、3.125、5.0和6.25。傳輸頻率越大,數(shù)據(jù)的傳輸帶寬越大。

Reference Clock Frequency:參考時(shí)鐘頻率,可選值為125MHz或156.25MHz,它指的是外部時(shí)鐘源(晶振或者鎖相環(huán)芯片)送給FPGA串行收發(fā)器專用時(shí)鐘引腳的時(shí)鐘。

TX Buffer Depth:發(fā)送Buffer的深度,可選值為8、16或32。這個(gè)值表示的是發(fā)送Buffer中可存儲(chǔ)的包的最大數(shù)目。

RX Buffer Depth:接收Buffer的深度,可選值為8、16或32。這個(gè)值表示的是接收Buffer中可存儲(chǔ)的包的最大數(shù)目。

Component Device ID:這個(gè)參數(shù)是復(fù)位以后Base Device ID CSR寄存器的復(fù)位值。

Device ID Width:設(shè)備ID的寬度,收發(fā)雙方的設(shè)備ID寬度應(yīng)該相同,否則,由于包頭的偏移可能會(huì)導(dǎo)致事務(wù)被錯(cuò)誤的解釋。大多數(shù)系統(tǒng)Device ID為8位,但是RapidIO核也提供了16位的Device ID供用戶選擇。

Unified Clock:如果用戶設(shè)計(jì)中l(wèi)og_clk和phy_clk相同,那么可以選中這個(gè)選項(xiàng),選中這個(gè)選項(xiàng)可以減少延時(shí)和資源利用率。

Transmitter Controlled:選中這個(gè)選項(xiàng)以后,RapidIO核會(huì)首先嘗試用transmitter-controlled實(shí)現(xiàn)流控,但如果接收方不支持的話那么會(huì)自動(dòng)切換為receiver-controlled。transmitter-controlled流控可以利用接收buffer的狀態(tài)和水印最小化重試條件。receiver-controlled流控會(huì)隨意的發(fā)包并使用重試協(xié)議。

Receiver Controlled:選中這個(gè)選項(xiàng)以后,RapidIO核僅能用receiver-controlled實(shí)現(xiàn)流控,在這種模式中,receiver-controlled流控會(huì)隨意的發(fā)包并使用重試協(xié)議。

4、Logical Layer標(biāo)簽

e2a7d46c-8fba-11ed-bfe3-dac502259ad0.jpg

Source(Initiator) Transaction Support:用來(lái)選擇支持的發(fā)送事務(wù)類型。

Destination(Target) Transaction Support:用來(lái)選擇支持的接收事務(wù)類型。

Enable Arbitration:用來(lái)使能邏輯層與輸入端口之間的仲裁器。

Maintenance Transaction Support:這個(gè)選項(xiàng)應(yīng)該保持一直使能。

Local Configuration Space Base Address:本地配置空間基地址,選中這個(gè)選項(xiàng)后,RapidIO會(huì)檢查I/O事務(wù)的高地址位,如果地址匹配,那么會(huì)把事務(wù)發(fā)給維護(hù)端口。由于手冊(cè)沒(méi)有提供一種機(jī)制去關(guān)閉LCSBA,所以在這種情況下系統(tǒng)的行為是未定義的。

5、I/O標(biāo)簽

e2b50092-8fba-11ed-bfe3-dac502259ad0.jpg

Port I/O Style:I/O接口可以配置為Condensed I/O和Initiator/Target兩種類型。其中Condensed I/O接收和發(fā)送均使用一個(gè)AXI4-Stream通道。Initiator/Target接收和發(fā)送采用不同的AXI4-Stream通道。

I/O Format:I/O端口能被配置使用HELLO格式包或SRIO Stream格式包,一般情況下,強(qiáng)烈推薦使用HELLO格式

Messaging:用來(lái)選擇消息事務(wù)的端口,可選的參數(shù)有Combined with IO和Separate Messaging Port兩種。Combined with IO選項(xiàng)表明消息事務(wù)和I/O寫(xiě)事務(wù)采用相同的IO端口,Separate Messaging Port選項(xiàng)表明消息事務(wù)采用一個(gè)獨(dú)立的端口傳輸,選中這個(gè)選項(xiàng)以后IP核會(huì)出現(xiàn)消息事務(wù)的AXI4-Stream通道。

Maintainance:用來(lái)選擇維護(hù)端口類型,維護(hù)端口類型只能為AXI4-Lite類型。

6、Buffer層標(biāo)簽

e2bfefd4-8fba-11ed-bfe3-dac502259ad0.jpg

Request Reordering:選中這個(gè)選項(xiàng)以后,發(fā)送Buffer會(huì)根據(jù)請(qǐng)求包的優(yōu)先級(jí)重新排序。

Flow Control Options:用來(lái)選擇優(yōu)先級(jí)水印復(fù)位值,詳細(xì)內(nèi)容請(qǐng)查看pg007_srio_gen2.pdf

7、物理層標(biāo)簽

e2cf236e-8fba-11ed-bfe3-dac502259ad0.jpg

CRF Support:關(guān)鍵請(qǐng)求流(Critical Request Flow),一般不選中

Link Requests before Fatal:用來(lái)指定鏈路進(jìn)入致命錯(cuò)誤狀態(tài)之前鏈路請(qǐng)求的個(gè)數(shù),一般選擇默認(rèn)值

Software Assisted Error Recovery:RapidIO協(xié)議定義了3個(gè)CSRs用軟件來(lái)輔助錯(cuò)誤恢復(fù)。

IDLE Mode Support:空閑模式(IDLE Mode)的選擇與傳輸速率有關(guān),空閑序列1(IDLE1)僅僅支持每通道線速率小于5.5Gbps的情況,選擇空閑序列1時(shí),RapidIO使用的控制符號(hào)為短控制符號(hào)。空閑序列2(IDLE2)支持每通道線速率大于5.5Gbps的情況,6.25Gbps的線速率必須選擇空閑序列2,空閑序列2提供了一些附加的功能,比如鏈路寬度,鏈路優(yōu)先級(jí)信息以及一些用于改善均衡器性能,提高數(shù)據(jù)恢復(fù)率的隨機(jī)數(shù)。當(dāng)IDLE1和IDLE2均被選中時(shí),每通道線速率僅支持小于等于5.5Gbps的情況。上一篇文章《RapidIO串行物理層的包傳輸過(guò)程》也介紹了空閑序列1和空閑序列2相關(guān)的內(nèi)容。

8、邏輯層寄存器標(biāo)簽

e2da2b9c-8fba-11ed-bfe3-dac502259ad0.jpg

Device Identity CAR:指定了Device ID與Vendor ID,這兩個(gè)值不能修改。

Assembly Identity CAR:可通過(guò)設(shè)置這兩個(gè)值唯一的確定RapidIO設(shè)備的標(biāo)識(shí)符。這兩個(gè)值不影響核的功能。

Assembly Information CAR:這個(gè)寄存器存儲(chǔ)的是RapidiO子系統(tǒng)的版本信息,這個(gè)值不影響核的功能。

Processing Element Features CAR:選擇存儲(chǔ)器單元的主功能,默認(rèn)為Memory,這個(gè)值不影響核的功能。

9、物理層寄存器標(biāo)簽

e2e7d288-8fba-11ed-bfe3-dac502259ad0.jpg

Extended Features Space:擴(kuò)展特征空間,一般選擇默認(rèn)值。

Port Link Time-out Control CSR:指定鏈路控制符號(hào)丟失后的超時(shí)時(shí)間,最大值為0xFFFFFF,對(duì)應(yīng)的超時(shí)時(shí)間約為4.5s,精確度為33%

Port Response Time-out Control CSR:指定鏈路包丟失后的超時(shí)時(shí)間,最大值為0xFFFFFF,對(duì)應(yīng)的超時(shí)時(shí)間在3s到6s之間。

Port General Control CSR:Host選項(xiàng)表明RapidIO設(shè)備是主設(shè)備,這個(gè)選項(xiàng)不影響核的功能。Master Enable選項(xiàng)用來(lái)控制是否允許RapidiO核發(fā)起請(qǐng)求事務(wù),如果未選中,RapidIO核只能發(fā)起響應(yīng)事務(wù)而不能發(fā)起請(qǐng)求事務(wù)。Discovered選項(xiàng)表明RapidIO核能被處理器定位,這個(gè)選項(xiàng)不影響核的功能。

10、共享邏輯標(biāo)簽

e2f68e2c-8fba-11ed-bfe3-dac502259ad0.jpg

當(dāng)選中Include Shared Logic in Example Design選項(xiàng)時(shí),MMCM、復(fù)位邏輯和GT COMMON塊等共享邏輯被包含在例子設(shè)計(jì)中。當(dāng)選中Include Shared Logic in Core選項(xiàng)時(shí),MMCM、復(fù)位邏輯和GT COMMON塊等共享邏輯被包含在IP核中。

五、總結(jié)

整個(gè)RapidIO核的介紹到此為止,文中大部分內(nèi)容都是翻譯的pg007_srio_gen2.pdf,由于自身水平有限,所以有些地方可能翻譯的不太好,建議大家先粗略瀏覽對(duì)相關(guān)內(nèi)容有一個(gè)大致印象,然后把不明白的地方對(duì)照pg007_srio_gen2.pdf原文做進(jìn)一步理解。

整片文章的重點(diǎn)只有一個(gè),就是設(shè)計(jì)指南那一節(jié)所提到的HELLO格式與HELLO格式的時(shí)序,強(qiáng)烈建議對(duì)照pg007_srio_gen2.pdf文檔多讀幾遍。事實(shí)上,在編寫(xiě)Verilog代碼時(shí),就是先根據(jù)事務(wù)類型組裝對(duì)應(yīng)的HELLO格式的包頭(Header),然后按照HELLO格式的時(shí)序,在第一個(gè)有效時(shí)鐘周期類把包頭(Header)發(fā)出去,后面幾個(gè)有效的時(shí)鐘周期發(fā)送你的數(shù)據(jù)。在這個(gè)過(guò)程中,RapidIO核會(huì)自動(dòng)把HELLO格式的包轉(zhuǎn)化為標(biāo)準(zhǔn)的RapidIO串行物理層的包,并添加控制符號(hào),空閑序列等必要信息發(fā)出去,接收過(guò)程則正好相反,RapidIO核接收到標(biāo)準(zhǔn)的RapidIO串行物理層的包,控制符號(hào),空閑序列等信息后以后,會(huì)把接收的信息轉(zhuǎn)化為HELLO格式的包給用戶做后續(xù)處理。所以對(duì)用戶來(lái)說(shuō)只需要理解HELLO格式包的組成與HELLO格式的時(shí)序就可以利用RapidIO核實(shí)現(xiàn)數(shù)據(jù)的高速傳輸,而不需要關(guān)注RapidIO協(xié)議的過(guò)多細(xì)節(jié)。

最后,再來(lái)復(fù)習(xí)一下RapidIO串行物理層的包格式與控制符號(hào)來(lái)結(jié)束全文,下篇文章會(huì)教大家如何利用Xilinx官方提供的例子工程來(lái)理解請(qǐng)求事務(wù)與響應(yīng)事務(wù)Verilog代碼,并詳細(xì)分析各個(gè)事務(wù)的時(shí)序細(xì)節(jié)。

RapidIO串行物理層包格式:

e30cc37c-8fba-11ed-bfe3-dac502259ad0.jpg

控制符號(hào):

e31c01ac-8fba-11ed-bfe3-dac502259ad0.jpg

六、參考資料

1、pg007_srio_gen2,下載地址 https://china.xilinx.com/support/documentation/ip_documentation/srio_gen2/v4_0/pg007_srio_gen2.pdf

2、RapidIOInterconnect Specification,下載鏈接 https://pan.baidu.com/s/1ek-3AAhetLAcxTuOE2IyMg

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5250

    瀏覽量

    119195
  • RapidIO
    +關(guān)注

    關(guān)注

    1

    文章

    38

    瀏覽量

    20776
  • 端口
    +關(guān)注

    關(guān)注

    4

    文章

    915

    瀏覽量

    31856

原文標(biāo)題:一、RapidIO核概述

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA的IP軟使用技巧

    FPGA的IP軟使用技巧主要包括以下幾個(gè)方面: 理解IP軟的概念和特性 : IP軟是指用硬件描述語(yǔ)言(如VHDL或Verilog)描述的功能塊,但并不涉及具體的電路實(shí)現(xiàn)細(xì)節(jié)。它通常只經(jīng)過(guò)功能
    發(fā)表于 05-27 16:13

    便攜式手提設(shè)備設(shè)計(jì)方案:475-便攜式手提RapidIO協(xié)議光纖發(fā)包測(cè)試儀

    便攜式手提RapidIO 協(xié)議光纖發(fā)包儀,以RapidIO收發(fā)卡和X86主板為基礎(chǔ),構(gòu)建便攜式的手提設(shè)備。
    的頭像 發(fā)表于 05-20 15:33 ?272次閱讀
    便攜式手提設(shè)備設(shè)計(jì)方案:475-便攜式手提<b class='flag-5'>RapidIO</b>協(xié)議光纖發(fā)包測(cè)試儀

    聯(lián)發(fā)科天璣9400首發(fā)新一代超大X5:繼續(xù)全大

    聯(lián)發(fā)科天璣9400將在今年晚些時(shí)候推出新一代超大X5,并繼續(xù)采用全大的設(shè)計(jì)思路。
    的頭像 發(fā)表于 04-30 11:19 ?570次閱讀

    關(guān)于FPGA IP

    對(duì)于深入學(xué)習(xí)使用FPGA的小伙伴們,特別是一些復(fù)雜的、大規(guī)模的設(shè)計(jì)應(yīng)用,適宜的IP核對(duì)開(kāi)發(fā)能起到事半功倍的作用。IP的概念與我們sdk里庫(kù)的概念相似。IP即電路功能模塊,用戶可以直接調(diào)用這些模塊
    發(fā)表于 04-29 21:01

    srio交換芯片的原理和用途

    SRIO(Serial RapidIO)交換芯片是一種基于RapidIO(快速輸入輸出)技術(shù)的高速網(wǎng)絡(luò)通信芯片。RapidIO是一種高性能、低延遲的網(wǎng)絡(luò)通信標(biāo)準(zhǔn),專為嵌入式系統(tǒng)設(shè)計(jì),廣泛應(yīng)用于通信基礎(chǔ)設(shè)施、軍事和航空、工業(yè)自動(dòng)化
    的頭像 發(fā)表于 03-21 16:30 ?910次閱讀

    rapidio交換芯片是什么

    RapidIO交換芯片是一種基于RapidIO協(xié)議的專用交換芯片,它能夠?qū)崿F(xiàn)高速、低延遲的數(shù)據(jù)傳輸和交換,廣泛應(yīng)用于嵌入式系統(tǒng)、數(shù)據(jù)中心、網(wǎng)絡(luò)通信等領(lǐng)域。RapidIO協(xié)議本身是一種基于包交換的互連技術(shù),具有高速、高效、可靠等特
    的頭像 發(fā)表于 03-16 16:40 ?2173次閱讀

    FPGA優(yōu)質(zhì)開(kāi)源模塊-SRIO IP的使用

    本文介紹一個(gè)FPGA常用模塊:SRIO(Serial RapidIO)。SRIO協(xié)議是一種高速串行通信協(xié)議,在我參與的項(xiàng)目中主要是用于FPGA和DSP之間的高速通信。有關(guān)SRIO協(xié)議的詳細(xì)介紹網(wǎng)上有很多,本文主要簡(jiǎn)單介紹一下SRIO IP的使用和本工程的源代碼結(jié)構(gòu)。
    的頭像 發(fā)表于 12-12 09:19 ?1777次閱讀
    FPGA優(yōu)質(zhì)開(kāi)源模塊-SRIO IP<b class='flag-5'>核</b>的使用

    FPGA實(shí)現(xiàn)基于Vivado的BRAM IP的使用

    Xilinx公司的FPGA中有著很多的有用且對(duì)整個(gè)工程很有益處的IP,比如數(shù)學(xué)類的IP,數(shù)字信號(hào)處理使用的IP,以及存儲(chǔ)類的IP,本篇文章主要介紹BRAM IP
    的頭像 發(fā)表于 12-05 15:05 ?1256次閱讀

    異構(gòu)眾系統(tǒng)高性能計(jì)算架構(gòu)

    隨著計(jì)算機(jī)技術(shù)的發(fā)展,單核處理器已經(jīng)難以滿足高性能計(jì)算的需求,眾處理器成為了一種有效的解決方案。眾處理器是指在一個(gè)芯片上集成多個(gè)處理器核心,通過(guò)并行計(jì)算提高性能和能效,眾處理器可以分為同構(gòu)
    的頭像 發(fā)表于 11-30 08:27 ?616次閱讀
    異構(gòu)眾<b class='flag-5'>核</b>系統(tǒng)高性能計(jì)算架構(gòu)

    線路主保護(hù)概述

    線路主保護(hù)概述
    的頭像 發(fā)表于 11-10 09:08 ?1909次閱讀
    線路主保護(hù)<b class='flag-5'>概述</b>

    HDLC協(xié)議IP的設(shè)計(jì)與實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《HDLC協(xié)議IP的設(shè)計(jì)與實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 11-08 15:45 ?2次下載
    HDLC協(xié)議IP<b class='flag-5'>核</b>的設(shè)計(jì)與實(shí)現(xiàn)

    多核異構(gòu)中A與M通信過(guò)程

    目前域控項(xiàng)目有的采用S32G這類多核異構(gòu)的芯片,轉(zhuǎn)載一篇分析下多核異構(gòu)中A與M通信過(guò)程的文章。
    的頭像 發(fā)表于 10-31 11:09 ?925次閱讀
    多核異構(gòu)中A<b class='flag-5'>核</b>與M<b class='flag-5'>核</b>通信過(guò)程

    信號(hào)處理板卡設(shè)計(jì)資料原理圖:613-基于6UVPX C6678+XCVU9P的信號(hào)處理板卡

    一、板卡概述 板卡基于6U VPX標(biāo)準(zhǔn)結(jié)構(gòu),北京太速科技板卡包含一個(gè)C6678 DSP芯片,一個(gè)XCVU9P 高性能FPGA,雙路HPC FMC。二、處理板技術(shù)指標(biāo) ?DSP處理器采用TI 8
    發(fā)表于 10-16 11:12

    器件入門

    電子發(fā)燒友網(wǎng)站提供《雙器件入門.pdf》資料免費(fèi)下載
    發(fā)表于 09-25 10:03 ?0次下載
    雙<b class='flag-5'>核</b>器件入門

    電源相的概念及意義

    一、相的概念及意義 1、相的概念 相是指在電氣操作中用儀表或其他手段核對(duì)兩路電源或環(huán)路相位、相序是否相同。 2、相的意義 1)新建、改建、擴(kuò)建后的變配電所和輸電線路、以及線路檢
    的頭像 發(fā)表于 09-24 16:27 ?4533次閱讀