一、Aurora配置
開門見山的說,跟DDR/PCIE/GTX這種復(fù)雜的IP相比,Aurora配置那是相當(dāng)?shù)暮?jiǎn)單。走著。
1.1第一頁(yè)配置
物理層Physical Layer:
Lane Width : 鏈路位寬,對(duì)應(yīng)用戶數(shù)據(jù)位寬;實(shí)際用戶數(shù)據(jù)位寬= Lane Width*Lane的個(gè)數(shù)(也就是第二頁(yè)的Lanes)
Lane Rate : 鏈路數(shù)據(jù)傳輸速率,Gbps。我們測(cè)試默認(rèn)3.125G就好。
下面三個(gè)時(shí)鐘在上一篇《時(shí)鐘和復(fù)位》說過,就不再啰嗦了。
鏈路層Link Layer:
dataflow mode: 數(shù)據(jù)流模式,可選全雙工/ 只接收/ 只發(fā)送;根據(jù)實(shí)際情況選擇,為了測(cè)試,我們這里選擇全雙工。
interface:Framing/streaming可選。streaming較簡(jiǎn)單,大家可以自行去驗(yàn)證。一般使用framing接口,可能是axi4-s接口更方便連接吧。后續(xù)介紹都基于Framing接口。
flow control:流控,暫時(shí)不選擇。
back channel:sidebands/timer 可選,(只有在單工模式才能選擇);秋大佬告知這個(gè)什么意思,我沒用過,先略過。
Scrambler/Descrambler :繞碼/解繞,這里不選擇
little endian support :小端模式,勾選上就對(duì)了。小端模式在不同場(chǎng)合一般有兩層意思:①[31:0]這種書寫習(xí)慣,對(duì)應(yīng)的是[0:31];②假設(shè)你的數(shù)據(jù)是64位,鏈路寬度是32位,那么一次只能傳輸32bit,先傳輸高32bit為大端模式,先傳輸?shù)?2bit為小端模式。
1.2第二頁(yè)配置
第二頁(yè)配置主要是對(duì)GT的選擇。
包括:使用幾個(gè)GTX,GTX的位置等。根據(jù)實(shí)際選擇,這里做測(cè)試默認(rèn)就好。
1.3第三頁(yè)配置
為了學(xué)習(xí)以及使用的靈活性,我們一般選擇將共享邏輯放在example design而不是放入core。
配置部分就介紹完了,使用還是很簡(jiǎn)單的。再次感謝xilinx!
前面說過,Aurora core支持兩種接口模式:framing 和 streaming。
streaming較簡(jiǎn)單,framing 較通用。
下面我們一起來看下這兩種接口。
二、Framing接口
2.1 接口信號(hào)
發(fā)送端:
接收端:
Tips: 其實(shí),在理解了AXI4總線(AXI4-FULL/LITE/STREAM)后,再來看這些信號(hào)名,都不需要看文檔你就能知道它的意思了。所以,強(qiáng)烈建議把AXI4總線接口先去熟悉一遍。空了,我也將AXI4總線簡(jiǎn)單整理一下。
2.2理論介紹
傳輸數(shù)據(jù)時(shí),用戶邏輯需要操縱控制信號(hào)讓core做以下操作:
1. 當(dāng)s_axi_tx_tvalid和s_axi_tx_tready都斷言時(shí),將需要發(fā)送的數(shù)據(jù)放到數(shù)據(jù)總線s_axi_tx_tdata。簡(jiǎn)單來說就是_tvalid和_tready每握手一次,完成一個(gè)數(shù)據(jù)傳輸。
2. 把數(shù)據(jù)劃分到Aurora 8B/10B channel的各條lane。
3. 使用 s_axi_tx_tvalid 信號(hào)來傳輸數(shù)據(jù),用戶應(yīng)用程序可以將_valid信號(hào)置為無效來插入空閑字符idles。(用來暫?;蛲nD。)
4. 暫停數(shù)據(jù)(即插入空閑)(s_axi_tx_tvalid置為無效)
接收數(shù)據(jù):
1. 檢測(cè)并丟棄控制字節(jié)(空閑,時(shí)鐘補(bǔ)償,通道PDU(SCP)的開始,通道協(xié)議數(shù)據(jù)單元(ECPDU)的結(jié)束和PAD。
2. 置位成幀信號(hào)(m_axi_rx_tlast),并指定最后一個(gè)數(shù)據(jù)(m_axi_rx_tkeep)中的有效字節(jié)數(shù)。
3. 從通道中恢復(fù)數(shù)據(jù)。
4. 通過斷言m_axi_rx_tvalid信號(hào)來組裝數(shù)據(jù),以呈現(xiàn)給m_axi_rx_tdata總線上的用戶接口。
注意:
僅當(dāng)同時(shí)聲明s_axi_tx_tready和s_axi_tx_tvalid(高)時(shí),Aurora 8B / 10B內(nèi)核才對(duì)數(shù)據(jù)采樣。
AXI4-Stream數(shù)據(jù)僅在幀內(nèi)時(shí)才有效。 幀外的數(shù)據(jù)將被忽略。 要開始幀,在數(shù)據(jù)的第一個(gè)字位于s_axi_tx_tdata總線上時(shí)拉高s_axi_tx_tvalid。 要結(jié)束幀,在數(shù)據(jù)的最后一個(gè)字(或部分字)位于s_axi_tx_tdata端口上時(shí)拉高s_axi_tx_tlast,并使用s_axi_tx_tkeep指定最后一個(gè)數(shù)據(jù)拍中的有效字節(jié)數(shù)。
如果幀的長(zhǎng)度不超過一個(gè)字,則同時(shí)使s_axi_tx_tvalid和s_axi_tx_tlast有效。
Aurora 8B/10B Frames 幀結(jié)構(gòu)
TX子模塊通過TX接口將每個(gè)接收到的用戶幀轉(zhuǎn)換為Aurora 8B / 10B幀。 通過在幀的開頭添加一個(gè)2字節(jié)的SCP代碼組來指示幀的開始(SOF)。 幀的結(jié)尾(EOF)通過在幀的末尾添加2字節(jié)的通道結(jié)束協(xié)議(ECP)代碼組來表示。 只要沒有數(shù)據(jù),就會(huì)插入空閑代碼組。代碼組是8B / 10B編碼的字節(jié)對(duì),所有數(shù)據(jù)都作為代碼組發(fā)送,因此具有奇數(shù)字節(jié)的用戶幀在幀末尾附加了一個(gè)稱為PAD的控制字符,以填充最終的代碼組。
Length
用戶應(yīng)用程序通過操縱s_axi_tx_tvalid和s_axi_tx_tlast信號(hào)來控制通道幀長(zhǎng)度。 Aurora 8B / 10B核分別響應(yīng)幀開始和幀結(jié)束有序集/ SCP /和/ ECP /。
以上基本是對(duì)文檔的翻譯,結(jié)合實(shí)際使用來看,幀頭幀尾部分由核幫你做了。我們只需要將有效數(shù)據(jù)負(fù)載放在s_axi_tx_tdata總線上,通過s_axi_tx_tvalid和s_axi_tx_tlast握手來進(jìn)行數(shù)據(jù)傳輸就好。接收,根據(jù)m_axi_rx_tvalid標(biāo)志來接收有效數(shù)據(jù)就好。
2.3 接口時(shí)序圖
接下來,我們?cè)倏?個(gè)數(shù)據(jù)發(fā)送的例子:
CASE1 : 簡(jiǎn)單數(shù)據(jù)傳輸
如圖所示:在s_axi_tx_tvalid和s_axi_tx_tlast同時(shí)有效(握手)時(shí),s_axi_tx_tdata總線上的數(shù)據(jù)傳給了Aurora core,再由core發(fā)送出去;s_axi_tx_tlast標(biāo)志著最后一個(gè)數(shù)據(jù)傳輸;s_axi_tx_tkeep標(biāo)志著最后一個(gè)數(shù)據(jù)哪些字節(jié)是有效的。
CASE2 : 數(shù)據(jù)傳輸with pad(具有奇數(shù)字節(jié))
跟case1唯一不同的是,在最后一個(gè)數(shù)據(jù)傳輸時(shí),由于數(shù)據(jù)是奇數(shù)字節(jié),所以存在無效字節(jié),由tkeep信號(hào)來標(biāo)志有效字節(jié)。
CASE3 : 有中斷的數(shù)據(jù)傳輸
看圖就是了,反正記住一點(diǎn),在ready/valid握手時(shí),才發(fā)生有效數(shù)據(jù)傳輸。
如果我們想要暫停數(shù)據(jù)傳輸,那么只需要將tvalid信號(hào)置為無效,就可以插入空閑字符,其實(shí)也就達(dá)到了流控的效果。
三、Streaming接口
3.1 接口信號(hào)
對(duì)比framing接口是不是簡(jiǎn)單很多。
發(fā)送:
數(shù)據(jù)總線s_axi_tx_tdata , 數(shù)據(jù)有效信號(hào)s_axi_tx_tvalid;用戶邏輯只需要設(shè)計(jì)這兩個(gè)信號(hào)就好。同樣的,數(shù)據(jù)傳輸發(fā)生在s_axi_tx_tvalid和s_axi_tx_tready同時(shí)有效(握手)時(shí)。
接收:
在m_axi_rx_tvalid信號(hào)有效時(shí),接收m_axi_rx_tdata數(shù)據(jù)總線上的數(shù)據(jù)。
3.3接口時(shí)序圖
發(fā)送:
如下圖所示:數(shù)據(jù)有效傳輸發(fā)生在s_axi_tx_tvalid和s_axi_tx_tready同時(shí)有效(握手)時(shí)。
接收:
在m_axi_rx_tvalid信號(hào)有效時(shí),接收m_axi_rx_tdata數(shù)據(jù)總線上的數(shù)據(jù)。如果來不及使用,必須使用buffer先緩存下來,否則數(shù)據(jù)丟失。
streaming接口較為簡(jiǎn)單,就不再啰嗦了。后文介紹基于framing接口。
OK,IP配置完了,下一篇我們介紹example design!
審核編輯:湯梓紅
-
接口
+關(guān)注
關(guān)注
33文章
8254瀏覽量
149948 -
Xilinx
+關(guān)注
關(guān)注
70文章
2136瀏覽量
120384
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論