RFSOC學習記錄(四)MTS時序分析
在MIMO等場景中,ADC DAC的多發多收機制是很重要的,在如今多數的使用場景里,RFSOC這樣射頻直采的模式逐漸代替了超外差接收機,零中頻接收機,而多發多收的板卡每一個ADC/DAC系統都有自己的獨立采樣時鐘,如果這些事中相位不同,哪怕是幾十皮秒的頻偏,不同片的波形輸出就會存在相位偏差,對于多通道波束成形與MIMO陣列信號處理等應用時都會產生災難性的影響,于是我們就需要確保所有通道在同一個采樣瞬間采同一個值,這就是MTS的首要目的
MTS(Multi-Tile Synchronization)
多片同步,是指在系統中存在多個采樣器(ADC)或多個數模器(DAC)時,要保證它們之間的 采樣時刻、相位、數據幀邊界完全一致。
- 確保所有通道在同一個采樣瞬間采同一個模擬值,時間上零點需要對齊
- 保證 JESD204 接口的幀邊界一致,讓每個通道輸出的數據幀在 FPGA 中同時到達同一個時刻
- 確保多通道輸出信號具有相同相位基準,實現相位相干
原理
在pg269的官方文檔里面,我們可以看到MTS涉及到的信號以及步驟是這樣的:MTS 用一路 SYSREF(外部/模擬與 PL 捕獲的 SYSREF) 作為全局定時參考,通過板內分發和軟件 API(IP 內的同步狀態機 + RFdc 驅動)對所有參與 tile 的分頻器相位、FIFO 延時和可動態更新的數字功能(如 NCO/混頻、QMC、coarse delay)進行可重復、確定性對齊,以保證多 tile、甚至多器件間的樣本時序與數字更新同時發生

一些關鍵信息
SYSREF
這個信號在上一講的時候其實已經介紹過了,SYSREF是多設備(FPGA adc dac)之間的共同時鐘標記,告訴這些設備在某個時刻,所有的幀邊界需要對齊,其是由PLL2的VCO時鐘經過內部邏輯分頻產生,可以配置為單次脈沖(One-shot),周期性脈沖(periodic)和禁止輸出(powerdown),是周期性、低抖動的參考脈沖流(通<10 MHz,且是各相關時鐘的整數子倍數),用于對齊 divider 相位(Tn clocks)、以及觸發動態更新事件(NCO 相位/頻率寫入)。模擬 SYSREF 和 PL SYSREF 必須相同頻率且在需要確定性延遲時保持恒定相位關系。
模擬 SYSREF 從器件外部進入主 tile(tile0),由該 tile 內部平衡分發到其它 tiles;PL_SYSREF 則進入 PL 用于捕獲并傳遞給 IP核使用(user_sysref_adc / user_sysref_dac)
SYNC
特別要注意的一點,這里的SYNC和上一講講的SYNC不是同一個信號!!上一講的SYNC是外部/PL端的SYNC,用來控制觸發產生SYSREF,而現在說的SYNC是RFDC IP內部生成的同步脈沖,是由捕獲到的 SYSREF 上升沿產生,用于 tile 對齊
SYNC 是在 MTS 流程中,由主 tile 捕獲到的 SYSREF 上升沿觸發生成的內部tile 級同步脈沖(Tile Synchronization Pulse),用于同步 tile 內部的分頻器、相位累加器和 FIFO 讀寫指針,從而實現 tile 間的相位對齊。當外部 SYSREF 輸入到tile 0時,tile 內部會捕獲它的上升沿,并據此生成 SYNC 脈沖分發給不同的tile
SYNC 一旦產生,會復位或重新對齊 每個 tile 內部的采樣分頻器相位;對齊 tile 內的 FIFO 讀/寫指針;對齊內部數字路徑(Mixer、NCO、Interpolator/Decimator)中的相位起點;對齊數據流到 PL 的時序,使不同 tile 輸出的第一個有效樣本落在同一時刻。
PL SYSREF 捕獲與 PL 時鐘要求
PL_SYSREF 與 PL_clock 必須是差分信號,且 PL_clock 要放在專用時鐘引腳,AXI-Stream 時鐘應由 PL 時鐘生成(不要用 core 的時鐘輸出來驅動 PL)。SYSREF 的頻率必須既是轉換器內部時鐘的整數子倍,又是 PL_clock 的整數子倍(以保證在 PL 中被同步采樣)
模擬SYSREF和PL SYSREF必須在MTS期間為連續時鐘
主從tile
在 MTS 中,tile 0(ADC/DAC 的 Tile_0)必須是 active 并作為 master。所有參與 MTS 的 tiles 必須采樣率相同、相同 decimation/interpolation、相同 samples per AXI4-Stream word 和相同 AXI4-Stream 時鐘率,且 ADC tiles 在一個組內必須是相同類型(Quad 或 Dual)。否則 MTS 不被支持
MTS步驟
1. 打開時鐘與 SYSREF 源(analog 與 PL),確保 PLL/時鐘 lock。任何時鐘改變都必須重新同步(Both analog and digital clocks must be running and locked before synchronization begins.
Any change to the clocks requires resynchronization.)
2. 模擬 SYSREF 捕獲(在主 tile),IP 把捕獲到的上升沿轉換為內部 sync 脈沖并平衡分發到所有 tiles。這是針對每個芯片完成的,需要多個周期性SYSREF脈沖,以便確定最佳延遲值。因此,MTS過程需要周期性SYSREF時鐘(Ensures SYSREF is safely captured by auto-adjusting the internal SYSREF programmable delay for setup/hold. This is done for each tile and requires a number of periodic SYSREF pulses so that the optimal delay value can be determined. As a result, a periodic SYSREF clock is needed for the MTS process.)
3. 復位時鐘分頻器,當所有芯片都安全捕獲SYSREF時,后續SYSREF邊沿用于同步所有分頻器相位(When all tiles are safely capturing SYSREF, a subsequent SYSREF edge is used to synchronize all divider phases.)
4. 自動測量并校準 FIFO 延時,IP + 驅動自動完成測量/調整,以匹配每個 tile 的延遲,可以運行API讀取返回值以確認(Analog SYSREF and PL_Sysref signals are used to measure the latency through each FIFO.Use the measurements across all tiles to adjust the latencies so that they match.)
5. 對數字功能(NCO、QMC、Coarse Delay 等)進行 SYSREF 觸發的動態更新(先在所有 tile 寫好目標寄存器并“arming”,再用 SYSREF 觸發,確保所有 tile 在同一 SYSREF 邊沿生效)。對于 NCO 更新,必須在更新前關斷/門控 SYSREF(或使用 IP 的內部門控機制),以避免邊沿落在更新過程中導致不一致;之后再恢復 SYSREF(When digital features which will impact the tile alignment are enabled, the related digital function blocks must be initialized/updated with SYSREF dynamic update event. These digital features include fine mixer/NCO, QMC, and coarse delay.)
下圖見pg269文檔的第201頁

常見問題
1. 必須確認所有參與 MTS 的 tiles(ADC/DAC)采樣率、decimation/interpolation、samples-per-AXI-word、AXI 時鐘一致
2. SYSREF不可以是單脈沖觸發一次性對齊,必須要是連續時鐘一遍ip核捕獲
3. PL SYSREF 必須被 PL clock 同步采樣,且 AXI4-Stream 時鐘應由 PL clock 生成,不能由ip核的clk_out輸出,這點在學習記錄(二)里面已經提及過
4. SYSREF捕獲正確但是數據沒對齊可能是FIFO的延遲差異,未正確應用 Target_Latency,導致部分 tile 輸出比其他早幾個時鐘,或者PL 端復位時序問題,MTS 之后立刻啟動 AXI 流,部分 tile 尚未出數據。可以等5-10us再拉起axi邏輯
總結
上述就詳細解釋了MTS過程中的流程以及關鍵信號,在用于多片adda同步的過程中,甚至是多塊FPGA同步的過程中都有關鍵的應用,更多的可以參考官方文檔

浙公網安備 33010602011771號