基于FPGA的高速時鐘數(shù)據(jù)恢復電路的實現(xiàn)
2.1 超前滯后鑒相器
鑒相器使用可以識別輸入信號連0和連1的超前滯后鑒相器,具體電路如圖3所示。利用四個D觸發(fā)器對輸入信號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的延遲差而進入一種死鎖狀態(tài)。這種鑒相器只有超前或滯后兩種狀態(tài),如果直接將其輸出用作控制時鐘相位的調整,則時鐘切換會過于頻繁,而且輸入信號中的毛刺會引起誤操作。所以將其輸出信號送給up-down計數(shù)模塊,進行一段時間的積累后,再產生用于控制時鐘相位的信號。本文引用地址:http://cafeforensic.com/article/191906.htm
2.2 up-down計數(shù)器模塊
計數(shù)器模塊的功能是在鑒相器送來的信號控制下進行計數(shù),產生相位調整的控制信號。計數(shù)器的初始值為M,當輸入信號valid為高電平時,判斷up-down信號。如果該信號為1,則計數(shù)器加計數(shù),否則減計數(shù)。當計數(shù)器的值為2M時,early產生高電平脈沖;當為0時,later產生高電平脈沖。
2.3 時鐘產生調整模塊
2.3.1 電路結構
時鐘產生調整模塊的主要功能是產生和輸入信號頻率相同的時鐘信號,并根據(jù)相位判斷模塊發(fā)送過來的控制信號,不斷地調整輸出時鐘相位,使得輸出時鐘的上升沿維持在輸入信號中間位置,其結構如圖4所示。不同相位的同頻時鐘是利用EP2C5T144C6 中的鎖相環(huán)產生的,由于課題項目的需要,1個片子內部必須含有2個時鐘恢復電路,受到全局時鐘數(shù)目的限制,采用6個時鐘信號進行切換。在該模塊電路設計設置6個狀態(tài),每一狀態(tài)對應某一相位的時鐘信號。當檢測到early信號為高電平時,狀態(tài)就跳變到比當前時鐘信號相位提前1個相位的狀態(tài)上(若相位超前則再繼續(xù)超前),而當later信號為高電平時跳變到比當前時鐘信號滯后1個相位的狀態(tài)上去(相位滯后則繼續(xù)滯后),然后再根據(jù)當前的狀態(tài)選擇相應的時鐘信號,作為當前工作時鐘即輸出時鐘信號Rclk。
2.3.2 時鐘切換
采用時鐘切換實現(xiàn)該相位調整,首要問題就是必須消除時鐘切換時產生的毛刺,因此所有子電路都采用恢復出來的時鐘信號作為其工作時鐘,這樣所有的時鐘切換情況都可用圖5表示。假定此時的工作時鐘為clk_l,只要能夠保證時鐘切換避開上面的陰影區(qū)域,而是處在上圖中的紅色區(qū)域,則無論是時鐘向前還是向后切換,都不會出現(xiàn)毛刺。以工作頻率為200MHz計算,每段紅色區(qū)域大約為1.6ns,而Altera中的LE單元延遲大約為0.23ns,所以采用buffer彌補延遲完全可以使時鐘切換發(fā)生在合適的位置。
2.3.3 時鐘相位偏移的補償
該電路結構的另一關鍵是必須保證不同相位時鐘信號經過時鐘判斷調整模塊后,它們之間的相位關系不會因延遲的不同而失效而必須仍然成立,否則就會導致相位調整過大或過小,電路會因此變得不穩(wěn)定。電路延遲由門延遲和連線延遲組成。對于連線延遲在AlteraCyclone II中只要兩個LE之間的連線類型相同,延遲也就相同,而每個LAB中有16個LE也有16個LOCAL LINE布線資源,因此同一個LAB 中LE之間的互連線延遲都是相同的。對于門延遲,在Cyclone II中每個LE有A、B、C、D四個輸入端,各端口延遲不同。首先通過在某些路徑上插入buffer,使得所有時鐘信號經過的LE的數(shù)目相同。然后再在3個時鐘信號中各插入一個buffer,再根據(jù)最終的布線情況,調整這3個buffer的端口連接,就可以使得各時鐘信號經過的門延遲基本相同。除了上述兩種方法,在應用中使用了Quartus II的logiclock功能,按照設計的需要將同一功能模塊的邏輯放在相同的LAB中,這樣可以使連線延遲對電路的影響降到最小。同時利用該功能也可以直接將調整好的時鐘恢復電路應用于整個通信系統(tǒng)中,使得其他電路的布局布線不會對該電路產生影響。
評論