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