時鐘數據恢復電路是高速收發器的核心模塊,而高速收發器是通信系統中的關鍵部分。隨著光纖在通信中的應用,信道可以承載的通信速率已經可以達到GHz,從而使得接收端的接收速率成為限制通信速率的主要瓶頸。因此高速時鐘數據恢復電路的研究是目前通信領域的研究熱點。目前時鐘數據恢復電路主要是模擬IC和數字IC,其頻率已經可以達到幾十GHz。而由于FPGA器件的可編程性、低成本、短的設計周期以及越來越大的容量和速度,在數字領域的應用逐漸有替代數字IC的趨勢,已經廣泛作為數字系統的控制核心。但利用中低端FPGA還沒有可以達到100MHz以上的時鐘數據恢復電路。由于上面的原因,許多利用FPGA實現的高速通信系統中必須使用額外的專用時鐘數據恢復IC,這樣不僅增加了成本,而且裸露在外的高速PCB布線使還會帶來串擾、信號完整性等非常嚴重的問題。如果可以在中低端FPGA上實現高速時鐘數據恢復電路,則可降低成本且提高整個電路系統的性能。 目前利用FPGA實現時鐘恢復電路的方法,基本都是首先利用FPGA內部的鎖相環產生N*f的高頻時鐘,然后再根據輸入信號控制對高速時鐘的分頻,從而產生與輸入信號同步的時鐘信號,其中N決定了恢復時鐘信號的相位精度,通常N等于8。因此如果輸入信號的頻率為100MHz,則系統的工作頻率就必須達到800MHz,對于中低端FPGA,如此高的工作頻率顯然無法承受。雖然高端FPGA可以達到GHz的工作頻率,但其高昂的價格不適合用于普通用戶。而其它基于中低端FPGA實現高速時鐘恢復電路的方法,要么需要外部VCO模塊,要么只能恢復數據而無法得到同步的時鐘信號。針對這種情況,本文提出了一種利用Altera FPGA中的鎖相環及Logiclock等技術,實現高速時鐘恢復電路的方法。電路是在Altera的EP2C5T144C6芯片上實現的,用于數字光端機的接收端從100路2.048MHz壓縮視頻碼流合成的串行碼流中正確提取100路視頻碼流,其工作頻率為204.8MHz,通過硬件驗證電路可以正確工作。 1 時鐘恢復電路原理及環路結構 時鐘恢復電路的目的是從輸入的數據流中,提取出與其同步的時鐘信號。時鐘信號不可能憑空產生,因此該電路本身必須有一個時鐘信號產生機制,除此之外還必須有一個判斷控制機制一能夠判斷并且調整該時鐘信號與輸入數據之間的相位關系,使其同步。 傳統的基于FPGA的時鐘恢復電路的結構如圖1所示。如前所述,這種結構的電路用中低端FPGA,工作頻率不可能達到100MHz以上。本文采用的方法是利用鎖相環產生不同相位的時鐘信號,然后再根據控制信號控制輸出時鐘在這些時鐘之間進行切換,從而使時鐘與輸入數據同步。具體結構如圖2所示。下面詳細介紹各個模塊的工作原理及電路實現。 2 模塊電路設計 電路由三個模塊構成,鑒相器模塊和計數器模塊通過判斷時鐘信號和輸入信號的相位關系,產生相位調整的控制信號,時鐘調整模塊根據送來的控制信號對輸出時鐘進行相位調整。 2.1 超前滯后鑒相器 鑒相器使用可以識別輸入信號連0和連1的超前滯后鑒相器,具體電路如圖3所示。利用四個D觸發器對輸入信號Din采樣產生s1、s2、s3三個信號,如果s2=s3≠s1,則表示時鐘超前,up-down為高電平;如果s1=s2≠s3,則表示時鐘滯后,up-down為低電平;當輸入信號連0或連1時s1=s2=s3,valid為低電平,此時up-down無效。這兩個信號都必須用時鐘信號進行同步產生,否則電路可能由于s1、s2、s3的延遲差而進入一種死鎖狀態。這種鑒相器只有超前或滯后兩種狀態,如果直接將其輸出用作控制時鐘相位的調整,則時鐘切換會過于頻繁,而且輸入信號中的毛刺會引起誤操作。所以將其輸出信號送給up-down計數模塊,進行一段時間的積累后,再產生用于控制時鐘相位的信號。 2.2 up-down計數器模塊 計數器模塊的功能是在鑒相器送來的信號控制下進行計數,產生相位調整的控制信號。計數器的初始值為M,當輸入信號valid為高電平時,判斷up-down信號。如果該信號為1,則計數器加計數,否則減計數。當計數器的值為2M時,early產生高電平脈沖;當為0時,later產生高電平脈沖。 2.3 時鐘產生調整模塊 2.3.1 電路結構 時鐘產生調整模塊的主要功能是產生和輸入信號頻率相同的時鐘信號,并根據相位判斷模塊發送過來的控制信號,不斷地調整輸出時鐘相位,使得輸出時鐘的上升沿維持在輸入信號中間位置,其結構如圖4所示。不同相位的同頻時鐘是利用EP2C5T144C6 中的鎖相環產生的,由于課題項目的需要,1個片子內部必須含有2個時鐘恢復電路,受到全局時鐘數目的限制,采用6個時鐘信號進行切換。在該模塊電路設計設置6個狀態,每一狀態對應某一相位的時鐘信號。當檢測到early信號為高電平時,狀態就跳變到比當前時鐘信號相位提前1個相位的狀態上(若相位超前則再繼續超前),而當later信號為高電平時跳變到比當前時鐘信號滯后1個相位的狀態上去(相位滯后則繼續滯后),然后再根據當前的狀態選擇相應的時鐘信號,作為當前工作時鐘即輸出時鐘信號Rclk。 2.3.2 時鐘切換 采用時鐘切換實現該相位調整,首要問題就是必須消除時鐘切換時產生的毛刺,因此所有子電路都采用恢復出來的時鐘信號作為其工作時鐘,這樣所有的時鐘切換情況都可用圖5表示。假定此時的工作時鐘為clk_l,只要能夠保證時鐘切換避開上面的陰影區域,而是處在上圖中的紅色區域,則無論是時鐘向前還是向后切換,都不會出現毛刺。以工作頻率為200MHz計算,每段紅色區域大約為1.6ns,而Altera中的LE單元延遲大約為0.23ns,所以采用buffer彌補延遲完全可以使時鐘切換發生在合適的位置。 2.3.3 時鐘相位偏移的補償 該電路結構的另一關鍵是必須保證不同相位時鐘信號經過時鐘判斷調整模塊后,它們之間的相位關系不會因延遲的不同而失效而必須仍然成立,否則就會導致相位調整過大或過小,電路會因此變得不穩定。電路延遲由門延遲和連線延遲組成。對于連線延遲在AlteraCyclone II中只要兩個LE之間的連線類型相同,延遲也就相同,而每個LAB中有16個LE也有16個LOCAL LINE布線資源,因此同一個LAB 中LE之間的互連線延遲都是相同的。對于門延遲,在Cyclone II中每個LE有A、B、C、D四個輸入端,各端口延遲不同。首先通過在某些路徑上插入buffer,使得所有時鐘信號經過的LE的數目相同。然后再在3個時鐘信號中各插入一個buffer,再根據最終的布線情況,調整這3個buffer的端口連接,就可以使得各時鐘信號經過的門延遲基本相同。除了上述兩種方法,在應用中使用了Quartus II的Logiclock功能,按照設計的需要將同一功能模塊的邏輯放在相同的LAB中,這樣可以使連線延遲對電路的影響降到最小。同時利用該功能也可以直接將調整好的時鐘恢復電路應用于整個通信系統中,使得其他電路的布局布線不會對該電路產生影響。 2.4 數據恢復 由于時鐘數據恢復電路的目的就是得到能夠正確采樣輸入數據的時鐘信號。為了保證恢復出的時鐘和輸入數據的相位關系在整個芯片內都能夠成立,在系統應用中輸入信號也走全局時鐘網絡。經過這樣處理后,只要在需要恢復數據的地方加一個D觸發器即可得到正確的數據信號。 3 環路仿真結果及討論 采用EP2C5T144C6器件的環路的仿真結果如圖6所示,其中工作頻率為204.8MHz。由于整個電路用的是經過全局時鐘控制模塊后的時鐘和輸入數據,所以在圖6中給出的是這兩個信號時序關系:ORDA"clkctrl和R_clk"clkctrl。由圖(a)及局部放大圖(b)可以看出,電路穩定時鐘信號在輸入數據的中間位置左右擺動,可以正確采樣輸入數據。 本文提出的電路結構不需要高頻時鐘信號,因此只要相位調整過程中時鐘信號的脈沖寬度大于器件要求的最小值,且滿足整個電路滿足建立保持時間就可以正常工作。因此最小的時鐘周期T=max(3*Tmin,Tper),其中Tmin是所用器件時鐘信號脈沖寬度的最小值,Tper是滿足建立保持時間的最小時鐘周期。例如EP2C35F672C6芯片工作時鐘高電平脈沖最小值為1ns,采用該芯片電路的工作頻率可以達到300MHz,這個工作頻率已經通過了Altera DE2板的硬件驗證。如果采用更快的器件如Cyclone III EP3C10T144C7,時鐘脈沖寬度最小值0.625ns,經過仿真驗證其工作頻率可以達到400MHz。在時鐘調整模塊后加一個簡單的二分頻電路,就可以實現12個時鐘相位的調整精度,根據不同器件的性能很容易進行擴展,達到所需要的設計要求。 4 結論 本文利用時鐘切換的方法,在低端AlteraEP2C5T144C6上實現了204.8MHZ的時鐘數據恢復電路,并通過了硬件驗證。通過理論分析給出了決定該電路工作頻率的主要因素,同時對該電路稍加改動就可以實現更高精度的時鐘數據恢復電路,具有很好的擴展性,為利用中低端FPGA實現高速通信系統提供了一種可參考的解決方案。 |