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