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