Aurora之復位


Aurora 64B/66B 時鍾和復位要點

1、傳輸過程中沒有數據傳輸的時候鏈路是什么狀態?(6/141)

每當不傳輸數據時,都會傳輸空閑以保持鏈路處於活動狀態。過多的誤碼、斷開連接或設備故障會導致內核復位並嘗試初始化新通道。Aurora 64B/66B內核在接收多通道通道時最多支持兩個符號偏斜。

2、Aurora RX端收數不成功,是否可以單向發送數據出去?(7/141)

單工連接(單向):Aurora 64B/66B單工協議提供單向通道初始化,使其能夠在反向通道不可用時使用GTX、GTH和GTY收發器,並降低因未使用全雙工資源而產生的成本。

reset_pb: 按鈕重置。在example design 中作為的top層重置輸入。驅動內核內部的支持重置邏輯所需。

pma_init:收發器PMA_INIT復位信號通過一個無抖動器連接到頂層。系統地重置收發器的所有物理編碼子層(PCS)和物理介質附件(PMA)子組件。信號使用init_clk_in去抖動至少6個init_clk周期。有關詳細信息,請參閱相關收發器用戶指南中的重置部分。

channel_up:當Aurora 64B/66B通道初始化完成且通道准備好發送/接收數據時置位。

lane_up:通道初始化成功時,為每個通道置位,每個位代表一個通道。Aurora 64B/66B內核只有在所有lane_up信號都被置位后才能接收數據。

gt_pll_lock: 當TX_OUT_CLK穩定時置位。當解除置位(低電平)時,使用TX_OUT_CLK的電路應保持復位狀態。

power_down: 在init_clk時鍾域下,驅動 Aurora 64B/66B 核復位。

soft_error:在Aurora 64B/66B通道操作期間,設備問題和通道噪聲可能會導致錯誤。64B/66B編碼方法允許Aurora 64B/66B內核檢測通道中可能發生的某些位錯誤。內核通過在檢測到這些錯誤的每個周期中斷言SOFT_ERR信號來報告這些錯誤。

Hard_error: 內核還監控每個高速串行GTX和GTH收發器的硬件錯誤,如緩沖區溢出和鎖定丟失。硬件錯誤通過斷言HARD_ERR信號來報告。災難性的硬件錯誤也可能表現為一系列軟錯誤。Aurora 64B/66B協議規范v1.3(SP011)[參考文獻9]中描述的塊同步算法確定是否將軟錯誤突發視為硬錯誤。(53/141)

每當檢測到hard_error錯誤時,內核都會自動復位並嘗試重新初始化。在大多數情況下,這允許在導致hard_error的硬件問題解決后重新建立Aurora 64B/66B通道。軟錯誤不會導致復位重置,除非在短時間內發生足夠的錯誤來觸發塊同步狀態機(the block sync state machine)。

hard_err:

1、 TX Overflow/Underflow::TX數據彈性緩沖區中存在上溢或下溢情況。當用戶時鍾和參考時鍾源的工作頻率不同時,可能會出現這種情況。

2、 RX Overflow/Underflow: RX數據時鍾校正和通道綁定FIFO中存在上溢或下溢情況。當兩個通道伙伴的時鍾源頻率不在±100 ppm內時,可能會出現這種情況。

Soft_err:

1、Soft Errors: 在短時間內發生了太多的軟錯誤。如果檢測到太多無效的同步頭,則對齊塊同步狀態機自動嘗試重新對准。軟錯誤不會轉換為硬錯誤。

2、Invalid SYNC Header: 64位塊上的2位標頭不是有效的控制或數據標頭。

3、Invalid BTF: 收到的控制塊的塊類型字段(BTF)包含無法識別的值。這種情況通常是由誤碼引起的。

Aurora初始化:(54/141)

內核在通電、復位或硬錯誤后自動初始化(圖2-35)。通道兩側的核心模塊執行Aurora 64B/66B初始化程序,直到通道准備就緒。LEAN_UP總線指示通道中的哪些通道已經完成了該過程的通道初始化部分。LEAN_UP信號可用於幫助調試多通道通道中的設備問題。只有在內核完成整個初始化過程后,才會置位CHANNEL_UP。

Aurora 64B/66B內核可以在channal_up拉高前接收數據。需要使用用戶界面m_axi_rx_tvalid有效信號來確定傳入數據。由於在channal_up置位之前不會發生傳輸,因此channal_up可以取反並用於復位驅動全雙工通道發送端的模塊。如果用戶應用模塊需要在數據接收前復位,則可以使用lane_up取反的邊延信號來實現此目的。在所有lane_up信號被斷言之前,無法接收數據。

Clocking:

良好的時鍾對Aurora 64B/66B內核的正確運行至關重要。內核需要低抖動參考時鍾來驅動GTX、GTH或GTY收發器中的高速TX時鍾和時鍾恢復電路。內核還需要至少一個鎖頻並行時鍾才能與用戶應用同步操作。

每個Aurora64B/66B內核都在Example_project目錄中生成,該目錄包含一個名為aurora_example的設計。此設計實例化了生成的內核,並演示了內核的工作時鍾配置。首次使用Aurora 64B/66B的用戶應檢查Aurora 64B/66B示例設計,以便在連接時鍾接口時用作模板。

user_clk: Aurora 64B/66B內核使用三個鎖相並行時鍾。第一個是USER_CLK,它同步內核和用戶應用程序之間的所有信號。接觸內核的所有邏輯必須由USER_CLK驅動,而USER_CLK又必須是全局時鍾緩沖器(BUFG)的輸出。USER_CLK信號用於驅動串行收發器的txusrclk2端口。考慮到64B/66B編碼和解碼,選擇TX_OUT_CLK使得模塊並行側的數據速率與模塊串行側的數據速率匹配。

sync_clk: 第三個鎖相並行時鍾為SYNC_CLK。該時鍾還必須來自BUFG,用於驅動串行收發器的txusrclk端口。它還連接到Aurora 64B/66B內核,以驅動串行收發器的內部同步邏輯。

Reset:

RESET_PB信號用於將Aurora 64B/66B內核恢復到已知的啟動狀態。復位時,內核停止當前操作並重新初始化通道。當給到RESET_PB信號時,需要USER_CLOCK穩定。當向Aurora 64B/66B通道Partner1發出的RESET_PB信號被斷言時,通道Partner2也會失去鎖定。當通道Partner1脫離復位時,通道Partner2重新鎖定,並開始傳輸有效模式。在全雙工內核中,RESET_PB信號復位通道的發送端和接收端。單工Aurora 64B/66B內核為兩個合作伙伴提供相似的RESET_PB端口,需要不同的重置順序。斷言pma_init會重置整個串行收發器,最終也會重置Aurora64B/66B內核。此外,需要init_clk總是穩定,並且ref_clk在pma_init信號解除斷言時也是穩定的。

Reset Sequence****:

注:在復位時序圖中添加了init_clk作為說明;reset_pb和pma_init都是對內核的異步重置。

Aurora 64B/66B Duplex情況:

(自己分析,對全雙工情況,上電時,pma_init先解除復位(拉低)reset_pb再解除復位。復位時reset_pb先復位而后pma_init再拉高復位)

在電路板上電序列期間,預計pma_init和reset_pb信號均為高電平。為保證Aurora 64B/66B內核的正常運行,INIT_CLK和GT_REFCLK在通電期間應保持穩定。當兩個時鍾都穩定時,pma_init先被解除置位,然后reset_pb再被解除置位。

雙工復位順序:

1、 reset_pb拉高信號等待最低128*user_clk的時間再拉高pma_init。

2、 拉高pma_init后。保持PMA_init和Reset拉高狀態至少一秒鍾,以防止CC字符的傳輸,並確保遠程agent檢測到熱插拔事件。

3、 保持完成1s后,拉低pma_init。

4、 然后拉低reset_pb,內部邏輯等待user_clk穩定,並且reset_pb拉低之后輸出低電平的sys_reset_out信號。

Aurora 64B/66B Simplex情況:

在TX單工和RX單工內核上電期間,pma_init和reset_pb信號應是高電平。INIT_CLK和GT_REFCLK在上電序列期間應保持穩定。由於具有自動單工恢復功能,兩個板都可以獨立brought up。如果先啟動RX板,然后再啟動TX板,則可以立即開始數據傳輸。但是,如果首先啟動TX板,則在基於TX發送的周期性CB模式啟動RX板之前,不應進行數據傳輸。

單工復位要求:

對於單工配置,因為TX和RX可以獨立通電,以避免數據丟失,數據傳輸必須在看到RX_CHANNEL_UP之后(即,在TX_CHANNEL_UP至少45ms之后)才開始。拉高reset_pb后需要最低128*user_clk時間才能拉高pma_init,以確保可編程邏輯中的內核部分在pma_init期間(將user_clk保持為低電平之前)進入已知的復位狀態。pma_init的斷言時間必須至少為6個init_clk周期,才能滿足內核去跳動電路的要求。


對IP的pma_init信號拉高會使得通道伙伴IP core中的熱插拔復位斷言。熱插拔復位斷言后的復位順序如圖所示。


Single Reset Use Cases

Use Case 1: reset_pb assertion in the duplex core

雙工內核中的復位斷言的最短時間應等於128*USER_CLK的TIME_PERIOD。然后,CHANNEL_UP才被取消斷言,如圖3-10所示。


Use Case 2: pma_init Assertion in the Duplex Core

圖3-11顯示了雙工核心中的pma_init斷言,該斷言應該至少為128個init_clk周期。由於拉高pma_init,結果USER_CLK在幾個時鍾周期后停止,因為收發器沒有txoutclk,CHANNEL_UP被解除斷言。

Use Case 3: Assertion of reset_pb in the Simplex Core

圖3-12顯示了系統中連接的單工TX核心和單工RX核心。CONFIG1和CONFIG2可以在相同或多個設備中。


以下是單工內核中TX內核復位和RX內核復位斷言的推薦步驟(參見圖3-13)。

1、 TX端的reset_pb拉高至少128user_clk個時鍾周期,然后RX端再拉高128user_clk個時鍾周期。

2、 TX_CHANNEL_UP和RX_CHANNEL_UP在至少五個USER_CLK時鍾周期后拉低。

3、 RX單工內核中的信號reset_pb的解除斷言(或)釋放需要在TX單工內核中的reset_pb被解除斷言之前。這個順序的原因是,雖然自動單工恢復功能允許兩個板獨立啟動,但這確保了當單工-RX內核准備好時,TX發送Aurora 64B/66B初始化序列。

4、 X_CHANNEL_UP在TX_CHANNEL_UP斷言之前被斷言。SIMPLEX-RX內核必須滿足此條件,需要調整SIMPLEX-TX內核中的SIMPLEX定時器參數(SIMPLEX_TIMER_VALUE)以滿足此標准。SIMPLEX_TIMER_VALUE參數可以在<USER_COMPONT_NAME>_core.v中更新。

5、 在單工-TX內核在配置時間內完成Aurora 64B/66B協議通道初始化序列傳輸后,TX_CHANNEL_UP被斷言。最后斷言TX_CHANNEL_UP可確保當SIMPLEX-RX內核就緒時,SIMPLEX-TX內核發送Aurora 64B/66B初始化序列。


6、 對於TX/RX單工內核,可以遵循reset_pb和pma_init斷言的雙工內核中的復位序列。但是,SIMPLEX_TIMER_VALUE需要根據內核的使用模型進行調優。

參考資料:PG046 April 4, 2018


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM