PCIE協議解析 synopsys IP Core operation 讀書筆記(3)

3      Core operation

3.1   Initialization

1、  先disable link training

2、  通過DBI(data bus interface)配置core的stickyregisters,需要配置什麼目前不知道??????

3、  Enable link training

4、  等待link完成。

5、  root Complex枚舉Downstream Device(什麼是Downstreamdevice????

Ø  讀取 Downstream device的配置空間

Ø  配置device的capabilites(具體配置什麼???

Ø  配置switch ports(???) 的base和limit寄存器,以反映devices enumerated downstream的BAR(Base Address Register)的範圍。

Ø  配置endpoint的BAR。

(該部分是用戶完成,還是IP自動完成????????)

6、  使能BME、MSE、ISE。

7、  開始傳輸數據。

 

3.2   Link Establishment

LTSSM是IP core根據PCI Express Base 3.1標準完成的,(是否說linkestablishment不用用戶關心???,IP已經搞定了),在link建立的階段,用戶需要關注的只有3問題:

Ø  “How to TieOff Unused Lanes” on page 1145.在系統中有沒有用到的lane,需要進行tie off

Ø  “LaneReversal and Broken Lanes” on page 1149.對lanes進行顛倒或者翻轉調整,主要是爲了解決物理層上的連接錯誤問題。

Ø  Runtime Link Width Adjustment Through Detect。在傳輸過程中調整link路的位寬。

個人認爲以外問題都屬於pcie的高級功能,在bring up可以不予考慮,只有在系統跑起來後需要進一步考慮這些細緻的問題。

3.3   Transmit TLP(Tansaction Layer Packet)Processing

主要涉及3個問題:

Ø  “Transmit TLPArbitration”   仲裁

Ø  “ACK/NAKScheduling”

Ø  “TransmitReplay”

3.3.1    Transmit TLP Arbitration

閱讀本章節可以參考http://blog.sina.com.cn/s/blog_6472c4cc01018893.html相關的內容

 

需要注意的:

Ø  Core 不檢測TLP是否有錯誤

Ø  Core不檢測TLP是否超出有效負載的最大值

TLP(Tansaction Layer Packet)和DLLP(Data Link Layer Packet)在發送的仲裁中優先級相同。

 



Selecting Transmit ClientArbitration Scheme

所有的發送端的接口XALI0/1/2(或者AHB/AXI master 或者slave)都遵循3中仲裁的方式,

注:其實PCIe規定的內部仲裁規則,而作爲用戶,只有瞭解仲裁規則即可,在core內部已經完成,而且做爲FPGA系統,在PCIe的總線體系中,一般扮演endpoint的角色較多,而作爲RC,其組成的拓撲結構也會相對簡單。)

0: VC(virtual channal) based,virtual channel的概念來自switch中,規定的是多個EP向一個設備發送數據包時的仲裁規則。


1:round robin(RR)可以翻譯爲輪叫調度

2:strictpriority()

For moredetails, see “VC-BasedArbitration” on page1173.

Effects of Flow Control Credits On Transmit Client Arbitration(重要)

在允許遠程的設備發送一個TLP(transation layer package )之前,core需要檢測遠程設備的特殊傳輸方式(posted, non-posted,completion)的flow control credit 是有效的。而TLPs是否通過credit check 取決於所提供的仲裁方案,內部生產的報文(completions)和消息(messages)同樣需要經過仲裁,即使是最高優先級也不例外。

(注:其中postednon-posted的解釋如下,PCI總線規定了兩類數據傳送方式,分別是Posted和Non-Posted數據傳送方式。其中使用Posted數據傳送方式的總線事務也被稱爲Posted總線事務;而使用Non-Posted數據傳送方式的總線事務也被稱爲Non-Posted總線事務。

其中Posted總線事務指PCI主設備向PCI目標設備進行數據傳遞時,當數據到達PCI橋後,即由PCI橋接管來自上游總線的總線事務,並將其轉發到下游總線。採用這種數據傳送方式,在數據還沒有到達最終的目的地之前,PCI總線就可以結束當前總線事務,從而在一定程度上解決了PCI總線的擁塞。

而Non-Posted總線事務是指PCI主設備向PCI目標設備進行數據傳遞時,數據必須到達最終目的地之後,才能結束當前總線事務的一種數據傳遞方式。

see “FlowControl” on page 139.

 

比如當使用RR仲裁方式,當posted數據傳輸(通過XALI1接口完成)緊跟在completion(通過XALI0進行)傳輸的後面,而此時如果credit通過,則posted傳輸將先於completion進行傳輸,但是如果posted的credit是無效的,那麼completion可以繞過posted通過XALI0,發送出去,但是XALI1接口將會被posted阻塞,而之後的XALI1將無法通過任何的no-posted、posted、CPL(completion)的TLP(tansaction  layer packet)。也就是XALI1接口被完全阻塞了。而作爲用戶,需要合理的利用這3個數據接口,以避免阻塞。

 

當應用單一的接口發送多種類型的信息(posted、non-posted),但是當前的請求(如posted)如果因爲缺失credit而導致阻塞,那麼當前接口將會同時阻塞其他類型的信息傳輸(比如no-posted),即使其可以通過credit。爲了避免這種情況,你的應用應該保證不同的接口發送不同類型的請求(如:XALI0 for postedrequests, XALI1 for non-posted requests, and XALI2 for completions),而另外的方法就是保證你的每次只生成可以通過FC creditrequest,具體的實現方式就是每次通過檢查core輸出的FC credit的標準位xadm_*_cdts

(注:該部分應該細細的瞭解下)

當使用xadm_*_cdts檢查credit是,應用程序需要考慮以下問題,core在生成一個message或者completion TLP 的同時,應用程序剛好需要生成一個request並正在檢查xadm_*_cdts。

see “FlowControl” on page 139.

3.3.2    ACK/NAK Scheduling

應答機制由core內部完成,用戶瞭解便可,而且你涉及到的控制寄存器一般情況也不許要用戶進行修改。

3.3.3    Transmit Replay

而應答機制一樣,重發機制用戶瞭解便可。

發佈了42 篇原創文章 · 獲贊 47 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章