作者:靖文,李斌,屈薇,宋開鑫
在數(shù)字通信系統(tǒng)中,同步技術(shù)是非常重要的,而位同步是最基本的同步。位同步時鐘信號不僅用于監(jiān)測輸入碼元信號,確保收發(fā)同步,而且在獲取禎同步、群同步及對接收的數(shù)字碼元進(jìn)行各種處理的過程中,也為系統(tǒng)提供了一個基準(zhǔn)的同步時鐘。
隨著可編程器件容量的增加,設(shè)計師傾向于把位同步電路設(shè)計在CPLD/FPGA芯片內(nèi)部。因此,本文采用Quartus II軟件設(shè)計了一種新型的位同步提取電路,對電路進(jìn)行了仿真試驗,并使用Altera的Cyclone II系列FPGA芯片EP2C5予以實現(xiàn)。
在CPLD/FPGA上實現(xiàn)位同步,最簡單直接的辦法就是利用FPGA的片上鎖相環(huán)。但這種鎖相環(huán)要求的輸入時鐘范圍是10MHz“100MHz,它對于低速數(shù)據(jù)顯得無能為力。而且,對于中低檔FPGA來說,鎖相環(huán)是稀缺資源,很多時候被用作系統(tǒng)時鐘鎖相。CPLD片上則沒有鎖相環(huán),大部分應(yīng)用都需要設(shè)計師自己設(shè)計位同步電路。
兩種位同步提取電路性能分析
目前在CPLD/FPGA上常用的位同步方案可分為兩類:一是采用鎖相環(huán)的閉環(huán)相位調(diào)整電路,二是采用開環(huán)結(jié)構(gòu)的位同步電路。下面用兩個典型的設(shè)計電路來討論這兩種方案的優(yōu)缺點。
基于超前滯后型鎖相環(huán)的位同步提取電路
這種電路一般采用添/扣門結(jié)構(gòu),如圖1所示,每輸入一個碼元后,根據(jù)鑒相器輸出是超前還是滯后,通過反饋回路控制的添/扣門來調(diào)整相位,使之逼近輸入碼元的相位。為了提高精度,這種方案只能采用更短的調(diào)整脈沖,一旦失步,就需要通過反饋回路重新調(diào)整。每一個超前和滯后脈沖僅能調(diào)整一步,如果接收碼元出現(xiàn)連“0”或是連“1”的情況,鎖定時間會很長,使其同步建立時間和調(diào)整精度變得相互制約。盡管有此缺點,但由于這種結(jié)構(gòu)具有失鎖后的自我調(diào)節(jié)性,因此,碼元消失或是碼元相位出現(xiàn)抖動時,同步脈沖不會出現(xiàn)較大變化,仍然可以輸出穩(wěn)定的同步脈沖。
圖1 數(shù)字鎖相環(huán)法位同步提取原理框圖
采用開環(huán)結(jié)構(gòu)的快速位同步電路
由于這種結(jié)構(gòu)沒有采用閉環(huán)的相位調(diào)節(jié)電路,所以要求在每一個輸入碼元跳變沿實現(xiàn)與輸出的同步脈沖跳變沿相位對齊。所以,通常采用這種結(jié)構(gòu)的位同步電路能夠快速實現(xiàn)同步。其典型實例如圖2所示。
跳變沿提取電路的作用是,當(dāng)產(chǎn)生一個邊沿脈沖時,它直接反映了輸入信號的真實相位。以它為基準(zhǔn),就可以有效地提取出與輸入信號同步的時鐘。時鐘同步的原理就是利用這個邊沿脈沖清零計數(shù)器,輸出反映輸入碼元相位的一個高精度時鐘源周期的短脈沖。圖中狀態(tài)寄存器保證了在接收碼元出現(xiàn)連“0”或是連“1”時仍然會有固定的反映碼元時鐘的短脈沖輸出??梢?,這種設(shè)計與數(shù)字鎖相環(huán)法相比,優(yōu)點主要是可以快速提取位同步脈沖,并進(jìn)行實時輸出。另外,這種電路結(jié)構(gòu)要更節(jié)省硬件資源。
該電路也有兩大缺點,首先,輸出S并不是占空比為50%的時鐘脈沖,而是間隔不固定的短脈沖。此缺點可以通過增加一個時鐘整形電路來解決。第二個缺點是,由于跳變沿提取電路的輸出X3(clr)具有對計數(shù)器清零的作用,如果跳變沿出現(xiàn)抖動的話,這種跳變沿會和計數(shù)器原先的輸出產(chǎn)生沖突,造成輸出時鐘信號占空比大幅度變化,嚴(yán)重時會出現(xiàn)毛刺。這對后續(xù)電路功能的實現(xiàn)無疑會產(chǎn)生致命的影響,很可能導(dǎo)致設(shè)計失敗。
新型快速位同步提取方案
綜合以上兩種設(shè)計的優(yōu)缺點,本文提出了一種新型的設(shè)計方案,其原理框圖如圖3所示。該方案實現(xiàn)位同步的基本原理是利用輸入碼元的跳變沿脈沖作為計數(shù)器的清零輸入信號,這里高精度時鐘的頻率為F,碼元速率為f,取F=2Nf=2N/T(T為輸入的不歸零碼元的寬度)。原理圖中的計數(shù)器為N進(jìn)制自動增加計數(shù)器。當(dāng)輸入清零信號后,計數(shù)器輸出翻轉(zhuǎn)。當(dāng)輸入碼元出現(xiàn)連“0”或是連“1”時,一個碼元的長度為2NT。由于計數(shù)器為N進(jìn)制,計數(shù)器的計數(shù)值回到0時,計數(shù)器的輸出仍然翻轉(zhuǎn),占空比為:NT/2NT=50%。這樣就保證了一個輸入碼元的寬度對應(yīng)了占空比為50%的時鐘信號,即實現(xiàn)了輸入碼元與計數(shù)器輸出CLKOUT時鐘的同步。
圖3中數(shù)字濾波器的作用是將輸入碼元中的窄脈沖干擾濾除掉,這部分電路較簡單,在此不作介紹。跳變沿提取電路的作用仍然是提取碼元的跳變沿,這部分作用和實現(xiàn)原理與圖2介紹的方法相同。其中,跳變沿提取電路如圖4所示。
固定延遲單元的作用是,將經(jīng)過跳變沿提取電路之后的碼元信號進(jìn)行固定時鐘周期的延遲,使之與計數(shù)器的輸出同相,從而達(dá)到位同步。
本設(shè)計的關(guān)鍵點是帶清零抖動判斷的N進(jìn)制計數(shù)器的設(shè)計。當(dāng)計數(shù)器清零輸入沒有抖動,而嚴(yán)格按照t=n×2NT時間出現(xiàn)時(當(dāng)出現(xiàn)連“1”或是連“0”時,式中n》1,否則n = 1),計數(shù)器計到“0”和清零脈沖同時生效,計數(shù)器輸出翻轉(zhuǎn),這時的輸出時鐘是穩(wěn)定的。計數(shù)器的清零輸入信號是由碼元的邊沿脈沖提供的,所謂清零抖動實際上就是輸入碼元的邊沿位置出現(xiàn)抖動,這是符合實際情況的,因為信號的傳輸路徑上不可避免地會產(chǎn)生衰減,并受到干擾,發(fā)送方的數(shù)據(jù)發(fā)送時鐘也有可能存在抖動。下面討論這種抖動對N進(jìn)制計數(shù)器輸出產(chǎn)生的影響:
1.當(dāng)輸入的不歸零碼元的跳變沿出現(xiàn)的時間略小于2NT的整數(shù)倍時,稱之為前向抖動。此時計數(shù)器的清零脈沖出現(xiàn)在計數(shù)器還沒有計數(shù)到 “0”的某個計數(shù)值的位置,比如當(dāng)計數(shù)器計到N-1時,清零脈沖出現(xiàn),于是計數(shù)器被清零脈沖清零,同時輸出脈沖翻轉(zhuǎn)。這種情況會使輸出的時鐘脈沖比估計的翻轉(zhuǎn)時間提前aT=(0+N-(N-1)+1)T=2T,這對時鐘輸出不會產(chǎn)生不利影響。而且,時鐘的翻轉(zhuǎn)時間實時反映出碼元的變化,有利于后續(xù)電路功能的實現(xiàn)。
2.當(dāng)輸入的不歸零碼元的跳變沿出現(xiàn)的時間略大于2NT的整數(shù)倍時,稱之為后向抖動。此時計數(shù)器的清零脈沖出現(xiàn)在計數(shù)器計數(shù)到“0”之后的某個計數(shù)值的位置,比如當(dāng)計數(shù)值為2時,清零脈沖出現(xiàn)?,F(xiàn)在來看計數(shù)器的輸出,首先當(dāng)計數(shù)器計到“0”前,計數(shù)器輸出一直維持在“0” ;計數(shù)器計到“0”后,計數(shù)器輸出自動翻轉(zhuǎn)為“1”,然后繼續(xù)計數(shù);當(dāng)計數(shù)值為2時,清零脈沖出現(xiàn),于是計數(shù)器被清零脈沖清零,同時輸出脈沖翻轉(zhuǎn)為“0”,計數(shù)器輸出就會出現(xiàn)持續(xù)時間為bT=(2-0)T=2T的窄脈沖。當(dāng)接收電路的時鐘里出現(xiàn)這種不可預(yù)測的窄脈沖時,接收電路位同步之后的后續(xù)電路的功能也就無法正常實現(xiàn)了,這也就是本文剛開始討論的采用開環(huán)結(jié)構(gòu)的快速位同步電路的缺點。
本文的設(shè)計方案中所采用的計數(shù)器是利用VHDL語言設(shè)計的、帶清零抖動判斷功能的計數(shù)器。具體來說,它可以判斷清零抖動為前向抖動還是后向抖動。如果是后者,則忽略此次清零脈沖,同時將此之后的某個計數(shù)值減去b,這樣做的目的是防止這種抖動帶來的影響出現(xiàn)累加。依照以上分析及處理辦法,可以設(shè)計出帶有清零抖動判斷功能的計數(shù)器。
a:process(clk,clr) begin
if clk‘event and clk=’1‘ then
if clr=’1‘ and count》c then countelsif clr=’1‘ and count=”0“ then countelsif clr=’1‘ and count》0 and countelsif count=”N/2“ then
if zero=’1‘ then countelsif temp=”0“ then countelse countend if;
else countend if;
end if;
end process a;
b:process(clk,clkout) begin
if clk’event and clk=‘1’ then
if count=”0“ then clkoutend if;
end if;
end process b;
程序中count為當(dāng)前時刻的計數(shù)值,當(dāng)清零信號有效時,首先進(jìn)行0c。這樣可以在碼元跳邊沿之間的計數(shù)值湊夠N的整數(shù)倍,避免了這種抖動帶來的影響出現(xiàn)累加。程序中對清零信號有效且n=0的情況作了特殊考慮。
本設(shè)計方案在Altera的Cyclone II系列FPGA芯片EP2C5上進(jìn)行了實現(xiàn),在Quartus II環(huán)境下,用VHDL硬件描述語言和電路圖輸入混合設(shè)計的方法,完成了整個時鐘提取電路的設(shè)計,其仿真結(jié)果如圖5所示。仿真中采用的CLK頻率為10MHz,參數(shù)取值為N=32、c=4。仿真圖中各輸入輸出標(biāo)號與圖3中標(biāo)號對應(yīng)。
位同步時鐘提取電路的性能
將廣泛采用的鎖相環(huán)路法(模擬鎖相環(huán)和數(shù)字鎖相環(huán))和本文設(shè)計的開環(huán)位同步法相比較,本方案有如下優(yōu)點:
1.本設(shè)計基于開環(huán)結(jié)構(gòu),具備了開環(huán)結(jié)構(gòu)位同步提取電路的快速同步特點。如果輸入不出現(xiàn)較大的相位抖動,輸出時鐘的相位可以實時地反映輸入碼元的相位。
2.由于具有判斷輸入碼元脈沖邊沿抖動的功能,因此也具有鎖相環(huán)的自適應(yīng)性。由以上分析可知,當(dāng)輸入碼元出現(xiàn)抖動而使得輸出時鐘沒有和碼元對齊之后,下一個碼元跳變沿就會重新對齊。這種自適應(yīng)性比鎖相環(huán)的自適應(yīng)反應(yīng)更迅速。
3.本設(shè)計可支持的系統(tǒng)時鐘clk可以達(dá)到181MHz,支持的輸入碼元速率最大為(181/N)MHz,可以支持大部分的數(shù)字通信應(yīng)用。
4.本設(shè)計結(jié)構(gòu)簡單,這種辦法比鎖相環(huán)法更節(jié)省LE資源。當(dāng)N=32、c=4時,使用EP2C5Q208C8器件,位同步提取電路所消耗的LE數(shù)目僅為26個。
結(jié)語
實現(xiàn)位同步的方法很多,本文討論的是一種提取位同步信號的新型設(shè)計方案。該設(shè)計在Quartus II下調(diào)試通過并在實踐中得到應(yīng)用。實踐證明這種方法可以用很少的FPGA資源實現(xiàn)位同步的目的,并具有很高的穩(wěn)定性和可靠性。
責(zé)任編輯:gt
-
FPGA
+關(guān)注
關(guān)注
1629文章
21738瀏覽量
603461 -
芯片
+關(guān)注
關(guān)注
455文章
50818瀏覽量
423718 -
cpld
+關(guān)注
關(guān)注
32文章
1248瀏覽量
169370
發(fā)布評論請先 登錄
相關(guān)推薦
評論