黃華明
(上海諾基亞貝爾股份有限公司,上海 201206)
目前,5G 前傳系統中的高精確時鐘同步架構通常是由ASIC芯片結合FPGA 實現的,ASIC 芯片利用其專用硬件特性處理時間戳,FPGA 利用其協議修改的靈活性實現PTP 的算法加速和ToD 協議處理等功能。在ASIC 或FPGA 中,各自都需要有一個基準的時間計數器,他們基于各自的時間計數器完成自己內部的各項處理功能。如果要滿足目前IEEE 對時間同步系統性能的高精度要求,這兩個分別位于ASIC 和FPGA 內時間計數器必須要達到非常高的時間同步精度。
本文描述的方法是通過數字電路實現二個時鐘的相位差高精度檢測,這里就是對ASIC 和FPGA 的工作時鐘進行相位檢測。當ASIC 和FPGA 內時間計數器通過數字方法實現初步同步后,再通過高精度檢測的時鐘相位差值,對初步同步后的時間計數器進行高精度二次矯正,使得僅通過數字設計方法即可將位于不同芯片內的二個時間計數器的同步達到亞納秒精度。
DDMTD 是數字化的DMTD(雙混頻器時差測量法),DDMTD 可以測量具有相同標稱頻率的兩個時鐘信號的相位差。使用公共偏移時鐘clkddmtd,DDMTD 先執行公共偏移時鐘和兩個輸入時鐘的混頻,再經過低通濾波之后,所得到的信號可用于估計兩個時鐘信號之間的相位差。
在DDMTD 中,使用D 觸發器實現時鐘信號混頻及低通濾波,實現電路如下:

圖1 DDMTD實現電路
我們可以通過測量圖1中低頻時鐘clk1ddmtd和clk2ddmtd的相位差δtclkddmtd來計算出輸入時鐘clk1和clk2之間的相位差。具體計算推導可見參考文獻。
電路中cntddmtd 計數的基本原理是:當時鐘clkddmtd檢測到clk1ddmtd上升沿時,將cntddmtd計數器清零。當時鐘clkddmtd 檢測到clk2ddmtd上升沿時,輸出計數器cntddmtd的當前值m。也即可得到在clk2ddmtd上升沿時刻,此時輸入時鐘clk1和clk2之間的相位差。因為cntddmtd計數器每次是在檢測到clk2ddmtd上升沿時輸出,所以cntddmtd計數器輸出更新的周期與clk2ddmtd時鐘周期一致,為1/fbeat。即電路對輸入時鐘相位差檢測的周期為1/fbeat,因為clk1和clk2具有穩定的相位弧度差Φ,所以每個測量周期輸出的測量值基本為一個固定值,通過該固定值可以計算出輸入時鐘clk1和clk2的相位差。
此方法優點是利用數字方法檢測兩個同頻時鐘的相位,從后端仿真和實際應用情況看,精確度非常高,可控制在亞納秒級以內的測量誤差。
本文關注的重點是如何在當前設計的基礎上,增加DDMTD數字高精度時鐘相位檢測技術,對數字時間戳計數器進行高精度的二次矯正。使用簡單的低成本的數字邏輯設計方案即可實現高精度的時間同步。

圖2 當前同步設計方案(不包括藍色方框模塊)
如圖2所示,設計的目標是將ASIC 內的時間計數器asic_cnt和FPGA 內的時間計數器fpga_cnt 同步起來,并且有同步精度的性能要求。為描述方便,下面所述二個時間計數器即指asic_cnt和fpga_cnt。
圖中ASIC 為商用芯片,FPGA 為我們設計所使用的現場可編程邏輯陣列芯片。
時鐘clk1和時鐘clk2源自相同的參考時鐘源,所以clk1和clk2具有相同的時鐘頻率。但由于clk1和clk2在設計版圖上的走線長度不同,以及進入ASIC 和FPGA 芯片內部的走線延遲不同,最終導致驅動二個時間計數器的時鐘源會有個固定的相位差,并且不同的FPGA 實現版本和環境溫度等條件的變化,驅動二個時間計數器時鐘源的固定的相位差也會發生變化。但驅動這二個時間計數器的時鐘源頻率是一致的,也就是說二個時間計數器前進的步伐是一致的。
ASIC 和FPGA 所在板卡上電后,二個芯片由于上電順序和電路實現等原因,二個時間計數器開始計數的起始時刻點是不同的,這樣上電后,分別位于ASIC 和FPGA 內部的二個時間計數器存在一定的計數相位偏差。在系統應用上,需要將二個時間計數器同步起來,并且在新的高精度同步系統上,要求具備亞納秒級的同步精度。
當前二個時間計數器的同步,是通過數字方法實現的。如圖2所示,ASIC 內的數字串行化模塊將asic_cnt 時間計數器值按固定間隔定時取出并進行串行化數字編碼,通過單根信號線串行化發送到FPGA。同時,clk1時鐘也和串行時鐘信息隨路發出。也就是使用源同步串行傳送的方式將ASIC 內的時間計數器asic_cnt 定時發送到對端的FPGA。
FPGA 收到串行時間信息編碼后,數據解串模塊使用隨路過來的clk1時鐘進行串行時間信息解碼。解碼后的并行時間信息發送到數據時鐘轉換器,該模塊將clk1時鐘域下解碼后的并行時間信息切換到clk2時鐘域。切換時鐘域后的并行時間信息再送給時間同步控制器,時間同步控制器將該并行時間信息通過一定的延遲補償后,設置更新FPGA 內的時間計數器fpga_cnt,使得二個時間計數器同步對齊。
如何測量驗證二個時間計數器是否同步對齊,是通過圖2所示下方的二個測試1PPS 配合示波器測試來實現的。應用中clk1和clk2為同頻的時鐘,其步進周期為8納秒,當asic_cnt 計數到一個整秒時,通過數字電路產生一個時鐘周期寬度的1PPS 脈沖輸出。當fpga_cnt 計數到一個整秒時,也通過數字電路產生一個時鐘周期寬度的1PPS 脈沖輸出。所以我們使用示波器的二個通道同時監視這二個1PPS 信號的相位,即可判斷這兩個時間計數器是否同步上了。同步后二個時間計數器的運行時序圖如下圖所示。

圖3 同步誤差時序示意圖
圖3所示時序,我們可以看出,由于驅動二個時間計數器的時鐘源clk1和clk2具有一定的固定相位差pd,所以二個時間計數器并不能完全對齊,從示波器測試的表現看,二個1PPS 輸出的相位還是存在數納秒的差。并且這個固定相位差pd 在不同的電路設計上和不同的環境條件下,會是不同的值。所以我們無法通過固定的補償方法來調整fpga_cnt,使得二個時間計數器最終能夠嚴格對齊。所以該設計在當前工作時鐘的情況下,二個時間計數器的偏差最大會達到8個納秒,無法滿足高精度同步系統的性能要求。
改進型設計是增加圖2中所示深色模塊的數字時鐘相位檢測器,該數字時鐘相位檢測器是基于上述DDMTD 的基本原理而工作的,為圖1所示的純數字邏輯設計,沒有使用額外的FPGA 專用邏輯資源。所以實現的成本低,邏輯簡單。
將clk1和clk2時鐘送入數字時鐘相位檢測器,它將二個時鐘的相位差精確的檢測出來,其檢測誤差精度非常高。在后仿真和實際應用上,相位差的檢測誤差小于100個皮秒。我們得到二個時鐘高精度的相位差檢測值pd 后,將該檢測值pd 送入時間同步控制器。時間同步控制器在設置更新時間計數器fpga_cnt 時,將pd 值考慮進去進行調整補償。最后在原始fpga_cnt 產生得到一個調整后的時間計數器fpga_cnt_adj,其工作時序如圖3所示。
從時序圖3可以看出,經過調整同步后的時間計數器fpga_cnt_adj,已經將檢測出的相位差值pd 考慮進去,所以fpga_cnt_adj 和asic_cnt 時間計數器已經達到非常高的同步精度。
使用同樣的方法進行同步對齊驗證。當asic_cnt 計數到一個整秒時,通過數字電路產生一個時鐘周期寬度的1PPS 脈沖輸出。當fpga_cnt_adj 計數到一個整秒時,也通過數字電路產生一個時鐘周期寬度的1PPS 脈沖輸出。示波器上觀測到的二個1PPS 的相位差是嚴格對齊的,肉眼觀察在1納秒以內的偏差。實際后仿真結果的誤差在100皮秒以內,示波器觀測時會引入一定的測量誤差,所以觀測值稍微偏大。
本文描述的新的設計方案,是在原有設計的基礎上,運用DDMTD 技術,自動檢測二個輸入時鐘的相位偏差,將位于不同芯片內的時間計數器的同步性能提高了一個數量級。
另一方面,改進型設計不改變原有設計,不依賴于FPGA 內的專用邏輯資源,僅通過增加一個數字檢測模塊來實現。相對于其他的改進型設計方案,降低了系統實現的復雜度,也降低了整個系統的改進硬件成本。
基于FPGA 的實現,本文提出了一種基于DDMTD 的數字時鐘相位檢測實現方案,該技術實現已被應用到傳輸網絡設備的同步芯片設計中。實際的系統同步測試結果表明,該方案將原來的時間同步誤差由原先的8納秒提高到現在的1納秒以內,使得系統設計的時間同步性能大大優于現有IEEE 對5G 前傳同步定時系統的性能要求。