基于FPGA的高速時(shí)鐘數(shù)據(jù)恢復(fù)電路的實(shí)現(xiàn)
0 引言
時(shí)鐘數(shù)據(jù)恢復(fù)電路是高速收發(fā)器的核心模塊,而高速收發(fā)器是通信系統(tǒng)中的關(guān)鍵部分。隨著光纖在通信中的應(yīng)用,信道可以承載的通信速率已經(jīng)可以達(dá)到GHz,從而使得接收端的接收速率成為限制通信速率的主要瓶頸。因此高速時(shí)鐘數(shù)據(jù)恢復(fù)電路的研究是目前通信領(lǐng)域的研究熱點(diǎn)。目前時(shí)鐘數(shù)據(jù)恢復(fù)電路主要是模擬IC和數(shù)字IC,其頻率已經(jīng)可以達(dá)到幾十GHz。而由于FPGA器件的可編程性、低成本、短的設(shè)計(jì)周期以及越來越大的容量和速度,在數(shù)字領(lǐng)域的應(yīng)用逐漸有替代數(shù)字IC的趨勢(shì),已經(jīng)廣泛作為數(shù)字系統(tǒng)的控制核心。但利用中低端FPGA還沒有可以達(dá)到100MHz以上的時(shí)鐘數(shù)據(jù)恢復(fù)電路。由于上面的原因,許多利用FPGA實(shí)現(xiàn)的高速通信系統(tǒng)中必須使用額外的專用時(shí)鐘數(shù)據(jù)恢復(fù)IC,這樣不僅增加了成本,而且裸露在外的高速PCB布線使還會(huì)帶來串?dāng)_、信號(hào)完整性等非常嚴(yán)重的問題。如果可以在中低端FPGA上實(shí)現(xiàn)高速時(shí)鐘數(shù)據(jù)恢復(fù)電路,則可降低成本且提高整個(gè)電路系統(tǒng)的性能。
目前利用FPGA實(shí)現(xiàn)時(shí)鐘恢復(fù)電路的方法,基本都是首先利用FPGA內(nèi)部的鎖相環(huán)產(chǎn)生N*f的高頻時(shí)鐘,然后再根據(jù)輸入信號(hào)控制對(duì)高速時(shí)鐘的分頻,從而產(chǎn)生與輸入信號(hào)同步的時(shí)鐘信號(hào)[1~3],其中N決定了恢復(fù)時(shí)鐘信號(hào)的相位精度,通常N等于8。因此如果輸入信號(hào)的頻率為100MHz,則系統(tǒng)的工作頻率就必須達(dá)到800MHz,對(duì)于中低端FPGA,如此高的工作頻率顯然無法承受。雖然高端FPGA可以達(dá)到GHz的工作頻率,但其高昂的價(jià)格不適合用于普通用戶。而其它基于中低端FPGA實(shí)現(xiàn)高速時(shí)鐘恢復(fù)電路的方法,要么需要外部VCO模塊[4],要么只能恢復(fù)數(shù)據(jù)而無法得到同步的時(shí)鐘信號(hào)[5]。針對(duì)這種情況,本文提出了一種利用Altera FPGA中的鎖相環(huán)及Logiclock等技術(shù),實(shí)現(xiàn)高速時(shí)鐘恢復(fù)電路的方法。電路是在Altera的EP2C5T144C6芯片上實(shí)現(xiàn)的,用于數(shù)字光端機(jī)的接收端從100路2.048MHz壓縮視頻碼流合成的串行碼流中正確提取100路視頻碼流,其工作頻率為204.8MHz,通過硬件驗(yàn)證電路可以正確工作。
1 時(shí)鐘恢復(fù)電路原理及環(huán)路結(jié)構(gòu)
時(shí)鐘恢復(fù)電路的目的是從輸入的數(shù)據(jù)流中,提取出與其同步的時(shí)鐘信號(hào)。時(shí)鐘信號(hào)不可能憑空產(chǎn)生,因此該電路本身必須有一個(gè)時(shí)鐘信號(hào)產(chǎn)生機(jī)制,除此之外還必須有一個(gè)判斷控制機(jī)制一能夠判斷并且調(diào)整該時(shí)鐘信號(hào)與輸入數(shù)據(jù)之間的相位關(guān)系,使其同步。
傳統(tǒng)的基于FPGA的時(shí)鐘恢復(fù)電路的結(jié)構(gòu)如圖1所示。如前所述,這種結(jié)構(gòu)的電路用中低端FPGA,工作頻率不可能達(dá)到100MHz以上。本文采用的方法是利用鎖相環(huán)產(chǎn)生不同相位的時(shí)鐘信號(hào),然后再根據(jù)控制信號(hào)控制輸出時(shí)鐘在這些時(shí)鐘之間進(jìn)行切換,從而使時(shí)鐘與輸入數(shù)據(jù)同步。具體結(jié)構(gòu)如圖2所示。下面詳細(xì)介紹各個(gè)模塊的工作原理及電路實(shí)現(xiàn)。
2 模塊電路設(shè)計(jì)
電路由三個(gè)模塊構(gòu)成,鑒相器模塊和計(jì)數(shù)器模塊通過判斷時(shí)鐘信號(hào)和輸入信號(hào)的相位關(guān)系,產(chǎn)生相位調(diào)整的控制信號(hào),時(shí)鐘調(diào)整模塊根據(jù)送來的控制信號(hào)對(duì)輸出時(shí)鐘進(jìn)行相位調(diào)整。
2.1 超前滯后鑒相器
鑒相器使用可以識(shí)別輸入信號(hào)連0和連1的超前滯后鑒相器,具體電路如圖3所示。利用四個(gè)D觸發(fā)器對(duì)輸入信號(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)。
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)對(duì)應(yīng)某一相位的時(shí)鐘信號(hào)。當(dāng)檢測(cè)到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)定。電路延遲由門延遲和連線延遲組成。對(duì)于連線延遲在AlteraCyclone II中只要兩個(gè)LE之間的連線類型相同,延遲也就相同,而每個(gè)LAB中有16個(gè)LE也有16個(gè)LOCAL LINE布線資源,因此同一個(gè)LAB 中LE之間的互連線延遲都是相同的。對(duì)于門延遲,在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中,這樣可以使連線延遲對(duì)電路的影響降到最小。同時(shí)利用該功能也可以直接將調(diào)整好的時(shí)鐘恢復(fù)電路應(yīng)用于整個(gè)通信系統(tǒng)中,使得其他電路的布局布線不會(huì)對(duì)該電路產(chǎn)生影響。
2.4 數(shù)據(jù)恢復(fù)
由于時(shí)鐘數(shù)據(jù)恢復(fù)電路的目的就是得到能夠正確采樣輸入數(shù)據(jù)的時(shí)鐘信號(hào)。為了保證恢復(fù)出的時(shí)鐘和輸入數(shù)據(jù)的相位關(guān)系在整個(gè)芯片內(nèi)都能夠成立,在系統(tǒng)應(yīng)用中輸入信號(hào)也走全局時(shí)鐘網(wǎng)絡(luò)。經(jīng)過這樣處理后,只要在需要恢復(fù)數(shù)據(jù)的地方加一個(gè)D觸發(fā)器即可得到正確的數(shù)據(jù)信號(hào)。
3 環(huán)路仿真結(jié)果及討論
采用EP2C5T144C6器件的環(huán)路的仿真結(jié)果如圖6所示,其中工作頻率為204.8MHz。由于整個(gè)電路用的是經(jīng)過全局時(shí)鐘控制模塊后的時(shí)鐘和輸入數(shù)據(jù),所以在圖6中給出的是這兩個(gè)信號(hào)時(shí)序關(guān)系:ORDA~clkctrl和R_clk~clkctrl。由圖(a)及局部放大圖(b)可以看出,電路穩(wěn)定時(shí)鐘信號(hào)在輸入數(shù)據(jù)的中間位置左右擺動(dòng),可以正確采樣輸入數(shù)據(jù)。
本文提出的電路結(jié)構(gòu)不需要高頻時(shí)鐘信號(hào),因此只要相位調(diào)整過程中時(shí)鐘信號(hào)的脈沖寬度大于器件要求的最小值,且滿足整個(gè)電路滿足建立保持時(shí)間就可以正常工作。因此最小的時(shí)鐘周期T=max(3*Tmin,Tper),其中Tmin是所用器件時(shí)鐘信號(hào)脈沖寬度的最小值,Tper是滿足建立保持時(shí)間的最小時(shí)鐘周期。例如EP2C35F672C6芯片工作時(shí)鐘高電平脈沖最小值為1ns,采用該芯片電路的工作頻率可以達(dá)到300MHz,這個(gè)工作頻率已經(jīng)通過了Altera DE2板的硬件驗(yàn)證。如果采用更快的器件如Cyclone III EP3C10T144C7,時(shí)鐘脈沖寬度最小值0.625ns,經(jīng)過仿真驗(yàn)證其工作頻率可以達(dá)到400MHz。在時(shí)鐘調(diào)整模塊后加一個(gè)簡(jiǎn)單的二分頻電路,就可以實(shí)現(xiàn)12個(gè)時(shí)鐘相位的調(diào)整精度,根據(jù)不同器件的性能很容易進(jìn)行擴(kuò)展,達(dá)到所需要的設(shè)計(jì)要求。
4 結(jié)論
本文利用時(shí)鐘切換的方法,在低端AlteraEP2C5T144C6上實(shí)現(xiàn)了204.8MHZ的時(shí)鐘數(shù)據(jù)恢復(fù)電路,并通過了硬件驗(yàn)證。通過理論分析給出了決定該電路工作頻率的主要因素,同時(shí)對(duì)該電路稍加改動(dòng)就可以實(shí)現(xiàn)更高精度的時(shí)鐘數(shù)據(jù)恢復(fù)電路,具有很好的擴(kuò)展性,為利用中低端FPGA實(shí)現(xiàn)高速通信系統(tǒng)提供了一種可參考的解決方案。