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