串列配置(Tandem)在Kintex-7互聯TRD中的實現

目錄

一、概要

二、FPGA配置

2.1 Tandem方法

2.2 Tandem PROM

2.3 Tandem PCIe

三、在K7中啓用Tandem


一、概要

PCI Express®規範要求PCIe®鏈路在電源穩定後120毫秒內做好連接準備。由於可用編程比特流的大小和配置速率,對採用閃存存儲器配置的大型FPGA而言要想滿足這個要求的確是一個挑戰。賽靈思的串列配置法(Tandem Configuration)是縮短FPGA配置時間以滿足120毫秒PCIe鏈接時間要求的一種現實可行的方法。

本應用指南介紹瞭如何將運行在KC705評估板(採用Kintex-7 XC7K325T FPGA)上的Kintex®-7 Connectivity Targeted Reference Design(TRD)與Tandem PROM和Tandem PCIe配置法結合使用。設計描述了TRD調節以適應串列配置法的情況。採用該方法,當使用Tandem PROM時基本比特流大小以及初始配置時間可減少85%以上,而使用Tandem PCIe時可減少80%以上。


二、FPGA配置

PCI Express規範規定,在電源有效後,基本復位必須保持至少100ms。它還規定設備必須在基本復位釋放20ms後進入檢測狀態(爲鏈路訓練做好準備)。因此,PCI Express核必須準備好120ms後開始鏈路連接的良好信號。由於PCI Express規範的遺留問題,這個時間通常被稱爲PCI Express的100 ms啓動時間要求。實際上,一個PCIe核心鏈路連接做準備的時間是120毫秒。
FPGA通過將bitstream裝入內部FPGA內存來配置FPGA,有關配置的詳細討論可參閱7系列FPGAs配置用戶指南(UG470)。FPGA配置時間是一個函數帶寬的編程方法,主要受數據寬度和編程時鐘頻率影響。

隨着FPGA器件容量的增加,滿足PCIe規範的120ms要求變得更加困難。傳統上,爲了減少配置時間會使用更快和帶寬更大的BPI閃存,但這種方法會增加硬件BOM成本,增加系統複雜度。而且即使使用帶寬更大的閃存,也需要更高的時鐘頻率來滿足120ms的要求。

例如,K7 XC7K325T FPGA配置位流長度爲91,548,896位(87.3 Mb), TPOR爲50 ms(最壞情況)。如果BPI flash位寬爲16bit,並且通過同步讀配置在主BPI模式,即使是EMCCLK的頻率爲50 MHz,FPGA進入檢測狀態的時間也在160 ms,這並不足夠快來滿足120 ms的要求。

作爲傳統方法的替代,Xilinx提供了兩種快速配置方法—Tandem PROM和Tandem PCIe。

2.1 Tandem方法

Tandem方法方便快速,能夠滿足PCIe 120 ms link培訓的要求,配置主要爲兩個階段:

階段1:確保設備發現配置所需的最小PCIe功能。此階段需要非常小的位流,可以在遠遠小於120 ms的時間內配置,並且能夠在枚舉期間處理所有事務。

階段2:PCIe塊激活後,FPGA的其餘部分按照用戶設計進行配置。串聯方法不是部分重構,與部分重新配置不同,串聯方法從不重新配置幀,設備中的每幀都只配置一次。如果需要對用戶應用程序進行動態更新,則應該使用傳統的部分重新配置。

Tandem方法有兩種:Tandem PROM和Tandem PCIe。

2.2 Tandem PROM

圖1展示了Tandem PROM方案。階段1和階段2的位流以單個位流的形式背靠背打包在同一個PROM中。
 

Tandem PROM流程與標準流程相似,在實現結束後會生成單個位流,並對相應的閃存進行編程,PROM文件和位流都是獨立的。PCIe塊在第一階段位流編程結束時激活,當PCIe枚舉正在進行時,設備使用相同的編程路徑繼續對第2階段的位流編程。
注意:雙模式配置管腳必須爲Tandem PROM配置預留用於設置PERSIST屬性,這些IO不能用於用戶設計。

2.3 Tandem PCIe

圖2展示了Tandem PCIe解決方案。Tandem PCIe與Tandem PROM類似---第一階段的FPGA位流編程使PCIe功能能夠快速可用。但是,使用Tandem PCIe,第二階段BIN文件是通過PCIe鏈接下載,並使用FPGA中的內部配置訪問端口(ICAP)硬件,通過爲PCI Express IP提供的7系列集成IP進行配置。這個過程需要一個軟件驅動程序通過PCIe鏈接加載第二階段BIN文件。請注意,串聯PCIe在第二階段使用BIN文件而不是位流文件。BIN文件已正確對齊,以便與ICAP一起使用。
 


三、在K7中啓用Tandem

本節主要描述在Kintex-7連接TRD中如何修改Tandem配置流程。
圖3展示了TRD中的Tandem配置,每個配置方法都會生成7系列的PCIe IP,並且該IP內部會添加下列Tandem配置所需的邏輯:
Tandem PROM:包括隔離多路複用器、串聯完成器和握手邏輯,以完成建立階段2的配置。
Tandem PCIe:包括用於配置第二階段的ICAP、隔離多路複用器、串聯完成器和握手邏輯,以完成建立第2階段的配置。Tandem PCIe還需要一個驅動程序通過PCIe鏈接來下載第二階段BIN文件。
 

與此應用程序說明關聯的設計有一個USE_TANDEM_FLOW宏用於標識Tandem流程所需的改動。對於Tandem PCIe流程,在頂層設計文件k7_connectivity_trd.v的USE_TANDEM_PCIE宏下還包含一個額外的BUFG用於提供ICAP時鐘。此外,還要對TRD進行以下改動來實現Tandem配置:

【設計改動】對於Tandem,PERST#(系統提供的來自PCIe插槽的復位)所在的整個I/O bank被配置爲第一階段位流的一部分。在頂層的非Tandem設計中,用戶應用程序塊(如MIG、10G Ethernet MAC和10GBASE-R等)使用PERST#進行重置,這種方式使用PERST#意味着所有這些邏輯都應該是第一階段位流的一部分,因爲更多的邏輯添加到了復位分支,這違背了Tandem配置的目的。爲了保持第一階段的位流較小,需要將用戶應用程序塊的復位邏輯改爲使用來自PCIe塊的寄存器信號user_lnk_up的反信號,這需要在頂層文件k7_connectivity_trd.v的不同位置使用USE_TANDEM_FLOW宏來確定。

【IP升級】7系列的PCIe IP也需要重新生成來適配Tandem PROM和Tandem PCIe流程。相關的XCI文件可以在ip_catalog目錄下找到,IP配置的其餘部分與非Tandem流程相同。

【約束改動】主要要修改兩個約束:

(1)k7_conn_pcie.xdc,IP中提供的示例設計XDC文件,包含PCIe的tandem-specific約束

(2)k7_conn_pcie_tandem.xdc,包含PCIe的tandem-specific約束;k7_conn_trd_tpcie.xdc和k7_conn_trd_tprom.xdc,包含配置BPI flash的額外約束。

其他的約束和非Tandem流程是一樣的。

Tandem PROM流程如果要用位流壓縮,可以設置如下:

set_property bitstream.general.compress true [current_design]

Tandem PROM流程如果要生成分離位流,可以設置如下:

set_property bitstream.config.tandem_writebitstream separate [current_design] write_bitstream -force separate.bit

這樣會爲Tandem PROM流程階段1和階段2分別生成位流。不然默認情況下,Tandem PROM流程還是會生成一個單獨的包含兩個階段的位流文件,Tandem PCIe流程默認情況下則是分別爲階段1和階段2生成單獨的BIT和BIN文件。

最後,利用promgen將得到的位流文件生成MCS文件進行後續處理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章