一種基于FPGA的全數字鎖相環(huán)設計
引言
數字鎖相環(huán)中的數字環(huán)路濾波器是由模數為K的可逆計數器構成。鎖相環(huán)中可逆計數器的模數K越小,系統(tǒng)響應越快,捕捉時間越短;反之,K越大,系統(tǒng)響應越慢,捕捉時間越長。數字環(huán)路濾波器的作用在于提高環(huán)路相位校正的準確性,減少噪聲對環(huán)路的干擾。雖然,在捕捉過程中K值較小,有利于加快鎖定速度,縮短捕捉時間。但在環(huán)路鎖定后的同步過程中,若K值太小,則會因可逆計數器頻繁地循環(huán)計數而產生持續(xù)的進位脈沖或借位脈沖,這就會導致輸出信號出現(xiàn)相位抖動,從而增加同步誤差。顯然,減少同步誤差與縮短捕捉時間是相互矛盾的,其矛盾的焦點在于對可逆計數器K值的選擇。
為了解決上述矛盾,本文設計了一個自動變??刂破?,它可以根據輸入、輸出信號的相位誤差,實時控制模數K值的大小。因為在環(huán)路捕捉過程中,減少K值,可增加環(huán)路帶寬,使鎖定速度加快;而在同步過程中,增大K值,可縮小環(huán)路帶寬,有利于抑制相位抖動,減少同步誤差。
1? 系統(tǒng)結構與工作原理
本鎖相環(huán)設計的系統(tǒng)框圖如圖1所示,由圖可見,本系統(tǒng)主要由數字鑒相器、數字環(huán)路濾波器、數控振蕩器及自動變模控制器四個模塊構成。
本文的自動變模鎖相環(huán)工作原理如下:
? ? ? ?當環(huán)路失鎖時,由數字鑒相器會比較輸入信號ui和輸出信號uo之間的相位差異,并產生數字環(huán)路濾波器的計數方向控制信號ue。
數字環(huán)路濾波器是由模數為K的可逆計數器構成的。K變模可逆計數器可根據計數方向控制信號ue調整計數值,當ue為低電平時做加計數,ue為高電平時做減計數。當計數值達到K時,產生一個進位信號carry作為加指令,當計數值為0時,產生一個借位信號borrow作為扣指令。
相位控制器由控制脈沖變換電路和門控電路組成。它的功能是確保當收到“加”指令時,在本地高速時鐘f0序列中插入一個脈沖,當收到“扣"指令時,則在f0序列中扣除一個脈沖。相位控制器輸出的受控本地高速時鐘序列經除M分頻后,便可對輸出信號u0的相位進行調整。
重復上面調整過程,可使M與S的相位差不斷減少,最終達到同步。
2? 數字鎖相環(huán)的VerilogHDL實現(xiàn)
本系統(tǒng)采用VerilogHDL進行硬件電路的設計。首先是根據系統(tǒng)中各功能模塊的要求分別設計環(huán)路各個部件的邏輯電路,并進行仿真驗證。然后,再將各部件組合起來進行系統(tǒng)設計和仿真。程序設計共包括6個模塊。分別為主模塊、鑒相器(單D觸發(fā)器)模塊、K變??赡嬗嫈灯髂K、自動變??刂破髂K、相位控制器模塊和除M計數器模塊。
2.1? 主模塊
主模塊即頂層模塊,一般由五個模塊組成,分別為鑒相器模塊(pd),K變模可逆計數器模塊(kcounter),自動變??刂破髂K(m_change),相位控制器模塊(idcounter)和除M計數器模塊(f_divi-sion)o頂層模塊是一個全局設計,是自頂向下設計方法中的頂層設計。
2.2? 鑒相器模塊
鑒相器模塊采用單D觸發(fā)器。鑒相器模塊的輸出14反映著輸入信號Vi與輸出信號u.之間的相位關系。
2.3? 自動變??刂颇K
該模塊可以根據輸入ui、輸出uo信號的相位誤差來實時控制模數K值的大小。
自動變??刂破髂K能夠在鎖相過程中,根據量化相位誤差的大小來準確、自動地調節(jié)模數K值的變化,實現(xiàn)對環(huán)路帶寬的實時控制,大大提高鎖相速度,消除縮短捕捉時間與減小同步誤差之間的矛盾。
2.4? K變模可逆計數器
K變??赡嬗嫈灯髂K中計數容量K的大小對于加快相位調整、減少捕捉時間影響很大。K取得小,“加”、"扣”脈沖控制信號產生的頻率就高,對相位的調整速度加快,使得環(huán)路鎖定時間縮短。反之,K取得大,“加”、"扣”脈沖控制信號產生的頻率較低,就會使環(huán)路鎖定時間延長。
K變??赡嬗嫈灯髂K中使用了一個可逆計數器Count,當鑒相器的輸出信號dnup為低時,即可進行加法運算,達到預設模值則輸出進位脈沖carry;為高時,則進行減法運算,為零時,就會輸出借位脈沖borrowoCount的模值可由輸入信號預設。模值的大小決定了DPLL的跟蹤步長,模值越大,跟蹤步長越小,鎖定時的相位誤差也越小,但捕捉時間越長;模值越小,跟蹤步長越大,鎖定時的相位誤差越大,但捕捉時間越短。
2.5? 相位控制器模塊
相位控制器模塊用于實現(xiàn)對輸入信號?,的頻率和相位跟蹤和調整,最終使輸出信號U3鎖定在輸入信號的頻率和相位上。
當沒有進位/借位脈沖信號時,該模塊可以把外部參考時鐘進行二分頻;當有進位脈沖信號carry時,則在輸出的二分頻信號中插入半個脈沖,以提高輸出信號的頻率。當有借位脈沖信號borrow時,則在輸出的二分頻信號中減去半個脈沖,以降低輸出信號的頻率。
2.6? 除M計數器模塊
除M計數器模塊可對相位控制器模塊的輸出進行計數分頻。除M計數器模塊可對相位控制器模塊的輸出進行M分頻,從而得到整個環(huán)路的輸出信號uo。
3? 全數字鎖相環(huán)的頂層全局設計
本系統(tǒng)的頂層邏輯框圖是一個全局的設計,是自頂向下設計方法中的頂層設計,圖2所示是其設計框圖。它主要由鑒相器模塊(pd)、K變模可逆計數器模塊(kcounter)、自動變??刂破髂K(m_change)、相位控制器模塊(idcounter)和除M計數器模塊(f_division)組成。
在頂層邏輯框圖中,模塊之間的聯(lián)系是用信號線來連接的。本設計的信號線用到了節(jié)點線(NodeLine)和總線(BusLine)兩種線型。節(jié)點線是只有一位的信號線,主要用于時鐘信號、復位信號、輸入信號以及一些控制信號的傳遞。總線是含有多位的信號線,在本設計中用到了寬度為4位到8位不等的總線,這些總線在頂層邏輯框圖中主要用于數據的傳輸。
4? 全數字鎖相環(huán)的仿真結果分析
根據系統(tǒng)各部分電路的功能要求,我們釆用VerilogHDL語言對環(huán)路進行了綜合設計。即利用EDA軟件對源程序進行了邏輯綜合,并進行了功能仿真。圖3所示是鎖相環(huán)由快捕區(qū)進入慢捕區(qū)最后鎖定的仿真波形。在圖3中,ue為低電平,表示輸出信號uo滯后于輸入信號ui。ua反映了%與Uj的相位差,qo是量化計數器輸出的數字相位誤差序列。在每個鑒相周期內,當ua為高電平時,計數器對其進行數字量化。qo值的大小可決定鎖相環(huán)處在快捕區(qū)、慢捕區(qū)或是鎖定,其對應的模數控制字的大小不同,可實現(xiàn)自動變??刂?。環(huán)路在“加”指令的作用下,經反復調整,可使uo與ui的相位誤差逐漸減少。圖3所示是取elk頻率為25MHz(即周期為40ns),取ui周期為2.57μs(即頻率大約389.1kHz),同時M取32時的自動變模數字鎖相環(huán)仿真圖。
K變??赡嬗嫈灯鞯哪礙值對全數字鎖相環(huán)的鎖定時間起著關鍵的作用。選擇不同的K值,將會得到不同的仿真結果。圖3所示是K變??赡嬗嫈灯鞯哪礙值在快捕區(qū)取值20,在慢捕區(qū)取值21,在同步區(qū)取值211時的仿真波形。
從圖3的仿真圖中可看出,鎖相環(huán)的鎖定時間較短,為29.32μs,但同步誤差較大。當模數K取值越大時,鎖定時間越長,同步誤差越小??梢愿鶕约盒枰那闆r,選擇合適的K值。
圖4所示為讓周期為2.58μs,即頻率大約為387.6kHz時的仿真結果。該結果需要的鎖定時間更長,為267.4μs。由于只是功能仿真,故有一定誤差,因此,這里并未指出此鎖相環(huán)的同步帶和捕捉帶。
?
5? 結語
本文設計的自動變模全數字鎖相環(huán)的功能基本達到了要求,但是,鎖定后穩(wěn)定度并不高。原因可能是同步誤差還不夠小,從而導致穩(wěn)定度不高。今后可以通過適當增大模數K來減小同步誤差,或使用更強大的仿真軟件來提高仿真精度。





