一、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)如下圖所示:
二、RapidIO核接口說(shuō)明
RapidIO核把三個(gè)子核封裝在一起,它提供了一個(gè)高層次,低維護(hù)的接口。本節(jié)介紹了RapidIO各個(gè)子核和接口的基本功能視圖。RapidIO核的頂層框圖如下圖所示
2.1 邏輯層接口
邏輯層(LOG)被劃分成幾個(gè)模塊來(lái)控制并解析發(fā)送和接收數(shù)據(jù)包。邏輯層(LOG)有三個(gè)接口:用戶接口(User Interface),傳輸接口(Transport Interface)和配置接口(Configuration Fabric Interface)。
下圖是邏輯接口的示意圖
用戶接口包括能發(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)讀寫本地配置空間。邏輯配置寄存器端口(LOG Configuration Register Port),它可以用來(lái)讀寫一部分邏輯層或傳輸層配置寄存器。
對(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端口示意圖如下
Initiator/Target端口類型把請(qǐng)求事務(wù)與響應(yīng)事務(wù)分別處理,所以一共有4個(gè)AXI4-Stream通道用于I/O事務(wù)的傳輸。Initiator/Target端口的示意圖如下圖所示,其中灰色的箭頭表示請(qǐng)求事務(wù),黑色的箭頭表示響應(yīng)事務(wù)。
本地設(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類型。下圖是消息端口的示意圖
本地設(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ù)。下圖是用戶自定義端口的示意圖
在頂層模塊中,變量名與接口的對(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ù)端口示意圖
上圖中從右到左的黑色箭頭表示請(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層示意圖如下
由上圖可知,在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è)外部的例化模塊以降低用戶使用模型的難度。物理層接口的示意圖如下圖所示
物理層與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的寄存器空間如下表所示
能力寄存器空間(Capability Register Space)
能力寄存器空間的寄存器是只讀寄存器,它們?cè)谶壿媽又袑?shí)現(xiàn)。能力寄存器映射表如下表所示
命令和狀態(tài)寄存器空間(Command and Status Register Space)
命令和狀態(tài)寄存器空間的寄存器和能力寄存器一樣都在邏輯層實(shí)現(xiàn),命令和狀態(tài)寄存器空間的映射表如下表所示
寄存器空間還包括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ù)載的寫事務(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全部寫1 | |
4’b1111 | ATOMIC clear | 把指定地址中的數(shù)據(jù)清0(每個(gè)bit全部清零) | |
3~4 | —— | Reserve | 無(wú) |
5 | 4’b0100 | NWRITE | 往指定的地址寫數(shù)據(jù) |
4’b0101 | NWRITE_R | 往指定的地址寫數(shù)據(jù),寫完成以后接收目標(biāo)器件(Target)的響應(yīng) | |
4’b1101 | ATOMIC test/swap | 對(duì)指定地址中的數(shù)據(jù)進(jìn)行測(cè)試并交換,此操作為原子操作,不可打斷 | |
6 | 4’bxxxx | SWRITE | 以流寫方式寫指定的地址,與NWRITE以及NWRITE_R相比,此方式效率最高 |
7 | —— | Reserve | 無(wú) |
8 | 4’b0000 | MAINTENANCE read request | 發(fā)起讀配置,控制,狀態(tài)寄存器請(qǐng)求 |
4’b0001 | MAINTENANCE write request | 發(fā)起寫配置,控制,狀態(tài)寄存器請(qǐng)求 | |
4’b0010 | MAINTENANCE read response | 產(chǎn)生讀配置,控制,狀態(tài)寄存器響應(yīng) | |
4’b0011 | MAINTENANCE write response | 產(chǎn)生寫配置,控制,狀態(tài)寄存器響應(yīng) | |
4’b0100 | MAINTENANCE write resquest | 端口寫請(qǐng)求 | |
9 | —— | DATA Streaming | 數(shù)據(jù)流寫,請(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格式的包如下圖所示
其中,各個(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é)位置)
例如,對(duì)size=2,address=34’h1_1234_5675這兩個(gè)組合來(lái)說(shuō),由于size=2,所以往address中寫入的數(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è)給讀寫事務(wù)定義了范圍從1到256個(gè)字節(jié)的可支持的數(shù)據(jù)量。請(qǐng)求事務(wù)的數(shù)據(jù)量如果大于一個(gè)雙字(8個(gè)字節(jié)),那么數(shù)據(jù)量應(yīng)該通過(guò)四舍五入到最接近的支持的值。讀寫事務(wù)有效的HELLO格式的數(shù)據(jù)量為:7,15,31,63,95(僅支持讀事務(wù)),127,159(僅支持讀事務(wù)),191(僅支持讀事務(wù)),223(僅支持讀事務(wù))和255。
對(duì)于寫事務(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)該被寫入,傳輸應(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ù)的交互。
下圖是一種更復(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í)鐘周期。
SRIO Stream包格式
用戶接口也能配置為SRIO Stream格式,在這種格式下,用戶接口的包格式各個(gè)字段的定義與RapidIO手冊(cè)中標(biāo)準(zhǔn)的RapidIO包中邏輯層和傳輸層各個(gè)字段的定義完全相同,但用戶接口的包格式中還包括標(biāo)準(zhǔn)RapidIO包物理層的prio字段,整個(gè)SRIO Stream的包格式如下圖所示
下圖是SRIO Stream格式的包在用戶接口上傳輸?shù)臅r(shí)序圖,整個(gè)傳輸?shù)臄?shù)據(jù)負(fù)載為5個(gè)雙字,一共消耗了5個(gè)有效時(shí)鐘周期,CRF/Response位在第一個(gè)有效時(shí)鐘周期進(jìn)行傳輸。
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)行讀寫訪問(wèn)時(shí)的地址增量為4個(gè)字節(jié),讀寫保留寄存器正常情況下不會(huì)導(dǎo)致設(shè)備進(jìn)入錯(cuò)誤狀態(tài),同理,寫CARs(只讀寄存器)正常情況也不會(huì)進(jìn)入錯(cuò)誤狀態(tài)。
維護(hù)寫操作例子
對(duì)于寫事務(wù),在發(fā)起寫事務(wù)之前,寫地址和寫數(shù)據(jù)必須在它們各自維護(hù)端口通道上進(jìn)行傳輸。當(dāng)邏輯層接收到響應(yīng)以后,維護(hù)端口會(huì)在寫響應(yīng)通道上返回一個(gè)狀態(tài)。維護(hù)端口一次只能處理一個(gè)寫事務(wù),在響應(yīng)發(fā)送完成之前,新的地址和數(shù)據(jù)不會(huì)被接收。下圖是維護(hù)端口上完成兩次寫事務(wù)的時(shí)序圖,因?yàn)榈刂泛蛿?shù)據(jù)在不同的通道上,所以它們能在通道的任意時(shí)刻進(jìn)行傳輸而不用考慮另外一個(gè)
維護(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í)序圖
更多通過(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)系
邏輯層工作在log_clk這個(gè)時(shí)鐘域。為了保證最優(yōu)的吞吐量,log_clk的頻率應(yīng)該大于或等于phy_clk的頻率。下面列出了三種不同通道模式下線速率與時(shí)鐘頻率的關(guān)系
4x模式(4通道模式)
2x模式(2通道模式)
1x模式(1通道模式)
對(duì)于7 Series FPGAs來(lái)說(shuō),內(nèi)部采用了一個(gè)MMCM從參考時(shí)鐘refclk得到RapidIO核各個(gè)模塊的時(shí)鐘,整個(gè)時(shí)鐘方案的框圖如下圖所示
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)為寫類事務(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ù)(流寫事務(wù)),請(qǐng)求方可以利用流寫事務(wù)往目標(biāo)方的存儲(chǔ)空間寫入大塊數(shù)據(jù)。與NWRITE相比,流寫事務(wù)具備以下兩個(gè)特點(diǎn):1、流寫事務(wù)傳輸數(shù)據(jù)的最小單位為雙字(Double Word);2、流寫事務(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
2、雙擊RapidIO核打開(kāi)配置界面
3、選擇Mode為Advanced
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)簽
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)簽
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寫事務(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)簽
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)簽
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)簽
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)簽
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)簽
當(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í)上,在編寫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串行物理層包格式:
控制符號(hào):
六、參考資料
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
審核編輯 :李倩
-
寄存器
+關(guān)注
關(guān)注
31文章
5343瀏覽量
120375 -
RapidIO
+關(guān)注
關(guān)注
1文章
39瀏覽量
20815 -
端口
+關(guān)注
關(guān)注
4文章
964瀏覽量
32080
原文標(biāo)題:一、RapidIO核概述
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論