高級FPGA開發(fā)之PCIe IP core

高級FPGA開發(fā)之PCIe IP core

一、PCIe IP核簡介

通過閱讀PCIe spec文檔瞭吃,可以看到UltraScale+器件Integrated Block For PCI Express解決方案IP核是具備高帶寬挨措、高可縮放性和高可靠串行互聯(lián)的解決方案,適用于UltraScale+器件。賽靈思在 UltraScale+ 架構(gòu)內(nèi)提供了 2 個 PCIe 集成塊:PCIE4 集
成塊和 PCIE4C 集成塊解取。

功能特性:

  • PCI Express端點(diǎn)、傳統(tǒng)端點(diǎn)或根端口模式返顺;

  • 針對PCIe 4和PCIe 4c塊支持x1禀苦、x2、x4遂鹊、x8或x16鏈路帶寬以及Gen1振乏、Gen2和Gen3鏈路速度;

  • 針對PCIe4C塊支持x1秉扑、x2慧邮、x4和x8鏈路帶寬以及Gen4的鏈路帶寬;

  • AXI4-Stream接口舟陆,可連接到客戶邏輯误澳;

  • 高級錯誤報告(AER)和端到端CRC;

  • 用于傳輸事務(wù)緩沖的塊RAM秦躯;

  • 1個PCI Express虛擬通道和8個流量類忆谓;

  • 最多支持4個PF和252個VF;

  • 完全可配置的3x64位或6x32位基地址寄存器(bar)踱承;

  • 支持所有中斷類型:

    INTx

    32多矢量MSI功能

    含最多2048個矢量的MSI-X功能倡缠,具有可選內(nèi)置MSI-X矢量表;

  • 內(nèi)置發(fā)起方讀取請求/完成標(biāo)簽管理器

    支持最多256項(xiàng)未完成的發(fā)起方讀取請求傳輸事務(wù)

二茎活、PCIe IP核端口描述 --- CQ

1708308264188.png

2.1 Completer Request Interface

CQ端口將鏈路層收到的所有請求交付給user logic昙沦。

DW表示已經(jīng)配置的數(shù)據(jù)總線寬度(64、128或者256)妙色。

port IO Width description
m_axis_cq_tdata O DW 從CQ接口輸出的數(shù)據(jù)
m_axis_cq_tuser O 88 CQ用戶數(shù)據(jù)(這組數(shù)據(jù)包含所傳輸事務(wù)層(tlp)的邊帶信息。)
m_axis_cq_tlast O 1 CQ數(shù)據(jù)的tlast指示
m_axis_cq_tkeep O DW/32 CQ數(shù)據(jù)的tkeep指示慧耍。
m_axis_cq_tvalid O 1 CQ數(shù)據(jù)有效身辨。
m_axis_cq_tready I 1 CQ數(shù)據(jù)就緒丐谋。
pcie_cq_np_req I 2 輸入可控制內(nèi)部信用值,進(jìn)行選擇性反壓(00-無更改煌珊,01-增加1号俐,10/11-保留)
pcie_cq_np_req_count O 6 輸出的信用值,當(dāng)信用值為非0時定庵,才能通過完成器請求接口交付非轉(zhuǎn)發(fā)請求吏饿,該信用值飽和上限為32。

其中m_axis_cq_tuser中的邊帶信號描述:

索引 名稱 Width description
3:0 first_be[3:0] 4 有效載荷的首個 Dword 的字節(jié)使能蔬浙。
7:4 last_be[3:0] 4 有效載荷的最后一個 Dword 的字節(jié)使能猪落。
39:8 tyte_en[31:0] 32 用戶邏輯可以選擇使用這些字節(jié)使能位來判定所傳輸?shù)陌挠行лd荷中的有效字節(jié)。
40:40 sop 1 包起始畴博。
41:41 discontinue 1 如果核在從其內(nèi)部 FIFO 存儲器讀取 TLP 有效載荷時檢測到不可糾正的錯誤笨忌,那么它會在 TLP 的最后一個節(jié)拍中斷言此信號有效。當(dāng)核發(fā)出此類錯誤信號時俱病,用戶應(yīng)用必須丟棄整個 TLP官疲。
42:42 tph_present 1 此位表示在通過接口交付的請求 TLP 中存在“Transaction Processing Hint (TPH)”(傳輸事務(wù)處理提示)。
44:43 tph_type[1:0] 2 當(dāng)請求TLP中存在TPH時亮隙,這2個位可提供與提示關(guān)聯(lián)的PH[1:0]字段的值
52:45 tph_st_tag[7:0] 8 當(dāng)請求TLP中存在tph時途凫,輸出可提供與提示關(guān)聯(lián)的8位導(dǎo)向標(biāo)簽
84:53 parity 32 位 i 可提供針對 m_axis_cq_tdata 的字節(jié) i 計(jì)算所得奇校驗(yàn)。
87:85 reserved 3 保留

注: 當(dāng)axis_tready和axis_tvalid均處于高位時溢吻,節(jié)拍采用總線傳輸维费。

2.2 Completer Request Interface Formats

描述符長度始終為16字節(jié),并在請求包的前16字節(jié)內(nèi)發(fā)送煤裙。

當(dāng)所傳輸?shù)恼埱骉LP為存儲器讀取/寫入請求掩完、IO讀取/寫入請求或者原子操作(atomic operation)請求時,格式如下:

1708321691836.png

供應(yīng)商定義的報文完成器請求描述符:

1708321807680.png

對應(yīng)于ATS報文的完成器請求描述符:

1708321873042.png

對應(yīng)于所有其它報文的完成器請求描述符格式:

1708321906143.png

2.3 CQ字段說明

位索引 字段索引 描述
1:0 AT 地址類型 僅適用于存儲器傳輸事務(wù)和原子操作硼砰。00-地址未轉(zhuǎn)換 01-傳輸事務(wù)為轉(zhuǎn)換請求 10-請求的地址已轉(zhuǎn)換的地址 11:保留
63:2 "address" 地址 該字段用于存儲器且蓬、IO和原子請求,必須使用m_axis_cq_tuser的first_be位判定字節(jié)級別的地址
74:64 "dword count"(dword計(jì)數(shù)) 指示讀取或者寫入的塊大小题翰,對于報文有效范圍0-256恶阴,對于IO訪問,dword計(jì)數(shù)始終為1
78:75 “request type”(請求類型) 用于識別傳輸事務(wù)類型
95:80 “request ID”(請求器ID) 請求器ID豹障,[95:88]-bus number,[87:83]-device, [82:80]-function number冯事,如果是non-posted請求,那么用戶必須存儲該字段血公,并將完成數(shù)據(jù)一起重新發(fā)給集成塊
103:96 “tag”(標(biāo)簽) 與請求關(guān)聯(lián)的PCIe標(biāo)簽昵仅,如果是non-posted事務(wù),用戶必須存儲該字段,然后一起重新返回block
111:104 “target function”(目標(biāo)功能) PF/VF映射
114:112 “BAR ID” 僅適用于存儲器摔笤、IO和原子操作够滑,可為請求中的地址提供匹配的bar編號
120:115 “BAR aperture” 僅適用于存儲器、IO和原子操作吕世,提供與請求匹配的bar的間隙設(shè)置
123:121 “traffic class” 請求關(guān)聯(lián)的PCIe傳輸事務(wù)(TC)彰触,如果是non-posted,必須存儲該字段命辖,并將其與完成的數(shù)據(jù)一起返回集成塊
15:0 “snoop latency”(嗅探時延) 該字段定義僅適用于 LTR 報文况毅。它可提供報文的 TLP 報頭中的 16 位“Snoop Latency”(嗅探時延)字段的值。
111:104 “message code”(報文代碼) 該字段定義適用于所有報文尔艇。
114:112 “message routing”(報文路由) 該字段定義適用于所有報文尔许。這些位可提供來自 TLP 報頭的 3 位路由(Routing) 字段 r[2:0]。
15:0 "destination ID"(目的ID) 該字段僅適用于供應(yīng)商定義的報文漓帚。

2.4 傳輸事務(wù)類型

request type description
0000 內(nèi)存讀請求
0001 內(nèi)存寫請求
0010 IO讀請求
0011 IO寫請求

三母债、PCIe IP核端口描述 --- CC

用戶應(yīng)用生成的完成包通過完成器完成(CC)接口端口來相應(yīng)發(fā)射的完成器請求〕⒍叮可以將所有non-posted傳輸事務(wù)作為獨(dú)立拆分的傳輸事務(wù)來處理毡们。

3.1 Completer Completion Interface

CC接口可持續(xù)接受請求器接口上的新請求,同時針對請求發(fā)送完成(completion)包昧辽。

completer completion interface(CC接口)上衙熔,將每個TLP均作為1個axi-stream數(shù)據(jù)包交付。

1708329138321.png
接口 IO 寬度 描述
s_axis_cc_tdata 輸入 DW 完成器完成數(shù)據(jù)總線
s_axis_cc_tuser 輸入 33 完成器完成用戶數(shù)據(jù)搅荞,TLP傳輸包含的邊帶信息
s_axis_cc_tlast 輸入 1 對應(yīng)完成器完成數(shù)據(jù)的tlast信號
s_axis_cc_tkeep 輸入 DW/32 對應(yīng)完成器完成數(shù)據(jù)的tkeep信號
s_axis_cc_tvalid 輸入 1 完成器完成數(shù)據(jù)有效红氯。
s_axis_cc_tready 輸出 1 完成器完成數(shù)據(jù)就緒。

其中m_axis_cq_tuser中的邊帶信號描述:

位索引 名稱 寬度 描述
0 discontinue 1 如果傳輸期間用戶應(yīng)用在所傳輸?shù)臄?shù)據(jù)中檢測到錯誤咕痛,并且需要中止該數(shù)據(jù)包痢甘,即可斷言此信號有效。
32:1 parity 32 256位數(shù)據(jù)奇偶校驗(yàn)位

3.2 Completer Completion Interface Formats

user logic將完成器請求的完成數(shù)據(jù)作為axi4-stream包發(fā)送至集成塊cc接口茉贡。

每個數(shù)據(jù)包均以1個描述符開頭塞栅,在描述符后可包含有效載荷數(shù)據(jù)。描述符長度始終為12個字節(jié)腔丧,并且在完成包的前12字節(jié)內(nèi)發(fā)送放椰。

當(dāng)用戶應(yīng)用將請求的完成數(shù)據(jù)拆分為多個完成包(split completion)包后,它必須將每個拆分完成包作為獨(dú)立axi4-stream包隨描述符一起發(fā)送愉粤。

1708337040095.png

位索引 名稱 描述
6:0 “l(fā)ower address”(低位地址) 對于memory read complete包砾医,該字段必須設(shè)置所傳輸?shù)拇鎯ζ鞯钠鹗甲止?jié)地址的7個最低有效位
9:8 “address type”(地址類型) 該字段定義僅適用于存儲器傳輸事務(wù)和原子操作的完成包。user logic必須將AT位從對應(yīng)的請求描述符復(fù)制到該字段中衣厘。
28:16 “byte count”(字節(jié)計(jì)數(shù)) 這13個位可包含范圍在0 - 4096個字節(jié)內(nèi)的值如蚜。如果存儲器讀取請求已通過使用單一完成包完成,那么byte count值將以字節(jié)為單位表示“payload length”。IO讀取/寫完成包错邦,必須設(shè)置為4涎显。對于每個“Memory Read Completion”(存儲器讀取完成),“Byte Count”字段必須表明完成請求所需的剩余字節(jié)數(shù)兴猩,包括隨完成包返回的字節(jié)數(shù)。
29:29 “l(fā)ocked read completion”(鎖定讀取完成) 當(dāng)“l(fā)ocked read”(鎖定讀仍缧)請求的相應(yīng)中包含完成包時倾芝,必須設(shè)置該位,其他為0
42:32 ”dword count“(dword計(jì)數(shù)) 這11位表示當(dāng)前包的有效載荷大屑(以dword數(shù)為單位)
45:43 "completion status"(完成狀態(tài)) 基于所完成包(completion)包的類型來設(shè)置晨另。000-完成,001-請求不支持(UR)002-完成器異常(CA)
46:46 “completion status”(完成狀態(tài)) 此位可用于對所發(fā)送的tlp進(jìn)行毒化谱姓。針對所有完成包借尿,必須設(shè)置為0
63:48 “requester ID”(請求器ID) 與請求關(guān)聯(lián)的PCI請求器ID(從請求復(fù)制所得)
71:64 “tag”(標(biāo)簽) 與請求關(guān)聯(lián)的PCIe標(biāo)簽(從請求復(fù)制所得)
79:72 “target/device number” 完成器功能的器件和/或功能編號
87:80 “completer bus number”(完成器總線編號) 與完成器功能關(guān)聯(lián)的總線編號
88 “completer ID enable”(完成器ID使能) 端點(diǎn)模式設(shè)置為0
91:89 “transaction class”TC(傳輸事務(wù)類) 與請求關(guān)聯(lián)的PCIe傳輸事務(wù)類(TC),user logic從關(guān)聯(lián)的請求描述符TC復(fù)制
94:92 屬性 與請求關(guān)聯(lián)的PCIe屬性(從請求復(fù)制所得)屉来,92-"no snoop", 93-"relaxed oerdering", 94-"ID-based ording"
95 "force ECRC"(復(fù)制ECRC) 強(qiáng)制執(zhí)行ECRC插入

四路翻、未完待續(xù)

下章將繼續(xù)介紹PCIe Hard IP rc和rq接口。

歡迎關(guān)注知乎:北京不北茄靠,+vbeijing_bubei

歡迎關(guān)注douyin:near.X (北京不北)

歡迎+V:beijing_bubei

獲得免費(fèi)答疑茂契,長期技術(shù)交流。

五慨绳、參考文獻(xiàn)

https://docs.xilinx.com/r/en-US/pg213-pcie4-ultrascale-plus
https://docs.xilinx.com/r/zh-CN/pg213-pcie4-ultrascale-plus

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末掉冶,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子脐雪,更是在濱河造成了極大的恐慌厌小,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件战秋,死亡現(xiàn)場離奇詭異璧亚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)获询,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進(jìn)店門涨岁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吉嚣,你說我怎么就攤上這事梢薪。” “怎么了尝哆?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵秉撇,是天一觀的道長。 經(jīng)常有香客問我,道長琐馆,這世上最難降的妖魔是什么规阀? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮瘦麸,結(jié)果婚禮上谁撼,老公的妹妹穿的比我還像新娘。我一直安慰自己滋饲,他們只是感情好厉碟,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著屠缭,像睡著了一般箍鼓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上呵曹,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天款咖,我揣著相機(jī)與錄音,去河邊找鬼奄喂。 笑死铐殃,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的跨新。 我是一名探鬼主播贴谎,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼吊洼,長吁一口氣:“原來是場噩夢啊……” “哼焚挠!你這毒婦竟也來了璃吧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤俯树,失蹤者是張志新(化名)和其女友劉穎帘腹,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體许饿,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡阳欲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了陋率。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片球化。...
    茶點(diǎn)故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瓦糟,靈堂內(nèi)的尸體忽然破棺而出筒愚,到底是詐尸還是另有隱情,我是刑警寧澤菩浙,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布巢掺,位于F島的核電站句伶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏陆淀。R本人自食惡果不足惜考余,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望轧苫。 院中可真熱鬧楚堤,春花似錦、人聲如沸含懊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽绢要。三九已至,卻和暖如春拗小,著一層夾襖步出監(jiān)牢的瞬間重罪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工哀九, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留剿配,地道東北人。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓阅束,卻偏偏與公主長得像呼胚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子息裸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容