一種基于VHDL語言的全數(shù)字鎖相環(huán)的實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
隨著集成電路技術(shù)的不斷進(jìn)步,數(shù)字化應(yīng)用逐漸普及,在數(shù)字通信、電力系統(tǒng)自動(dòng)化等方面越來越多地運(yùn)用了數(shù)字鎖相環(huán)。它的好處在于免去了模擬器件的繁瑣,而且成本低、易實(shí)現(xiàn)、省資源。本文綜合以上考慮,在一片F(xiàn)PGA中以Quartus II為平臺(tái)用VHDL實(shí)現(xiàn)了一個(gè)全數(shù)字鎖相環(huán)功能模塊,構(gòu)成了片內(nèi)鎖相環(huán)。
數(shù)字鎖相環(huán)是一種相位反饋控制系統(tǒng)。在數(shù)字鎖相環(huán)中,由于誤差控制信號(hào)是離散的數(shù)字信號(hào)而不是模擬信號(hào),與之相對(duì)應(yīng),受控的輸出相位的改變是離散的而不是連續(xù)的;此外,環(huán)路組成的部件也全由數(shù)字電路實(shí)現(xiàn),故名“數(shù)字鎖相環(huán)”[1]。常用的數(shù)字鎖相環(huán)原理如圖1所示。
1 數(shù)字鎖相環(huán)的結(jié)構(gòu)及工作原理
如圖1所示,數(shù)字鎖相環(huán)主要由鑒相器、K變??赡嬗?jì)數(shù)器、脈沖加減器、N分頻器構(gòu)成。
鑒相器其實(shí)就是一個(gè)異或門,它將輸入信號(hào)Din與位同步脈沖輸出信號(hào)Dout相異或,比較它們之間的相位差,并輸出相位誤差信號(hào)作為K變??赡嬗?jì)數(shù)器的計(jì)數(shù)方向的控制信號(hào)CS。當(dāng)環(huán)路鎖定時(shí),這個(gè)控制信號(hào)為占空比是50%的方波。
K變??赡嬗?jì)數(shù)器根據(jù)相差信號(hào)CS的變化,向不同的方向計(jì)數(shù)。當(dāng)CS為邏輯“1”時(shí),計(jì)數(shù)器向下計(jì)數(shù),如果計(jì)到0,則輸出一個(gè)借位脈沖給脈沖加減器;當(dāng)CS為邏輯“0”時(shí),計(jì)數(shù)器向上計(jì)數(shù),如果計(jì)到模值,則輸出一個(gè)進(jìn)位脈沖給脈沖加減器。
脈沖加減器是根據(jù)K變??赡嬗?jì)數(shù)器輸出的進(jìn)位、借位脈沖來不斷地對(duì)本地時(shí)鐘進(jìn)行調(diào)整。當(dāng)有進(jìn)位脈沖時(shí),脈沖加減器就在本地時(shí)鐘上加入一個(gè)周期的時(shí)鐘信號(hào);當(dāng)有借位脈沖時(shí),脈沖加減器就在本地時(shí)鐘上扣除一個(gè)周期的時(shí)鐘信號(hào)。如此反復(fù)不斷地對(duì)本地時(shí)鐘進(jìn)行調(diào)整,最終達(dá)到準(zhǔn)確確定出輸入信號(hào)時(shí)鐘的目的,從而實(shí)現(xiàn)位同步[2]。
N分頻器是將脈沖加減器輸出的經(jīng)過調(diào)整以后的時(shí)鐘信號(hào)進(jìn)行分頻,以減小同步誤差。N值越大得到的同步誤差越小。
2 數(shù)字鎖相環(huán)各部分的VHDL實(shí)現(xiàn)
K變??赡嬗?jì)數(shù)器根據(jù)預(yù)設(shè)模值Kmode來設(shè)置對(duì)應(yīng)的模值寄存器的值,也即當(dāng)預(yù)設(shè)模值范圍在0~15變化時(shí),與之相對(duì)應(yīng)的Ktop的變化范圍為20~215。模值的大小直接決定了數(shù)字鎖相環(huán)鎖定時(shí)間的長短,模值越大鎖定時(shí)間越長,反之越小。但鎖定時(shí)間越長,鎖定時(shí)的相位誤差越小,反之越大。這部分的VHDL設(shè)計(jì)程序[3]如下:
有了K變??赡嬗?jì)數(shù)器產(chǎn)生的進(jìn)位、借位脈沖,脈沖加減器就可以按照這兩種脈沖對(duì)本地高頻時(shí)鐘進(jìn)行不斷地調(diào)整,如圖2所示。
N分頻器的設(shè)計(jì)相對(duì)簡(jiǎn)單,其功能是將脈沖加減器輸出的經(jīng)過了調(diào)整的本地時(shí)鐘進(jìn)行N分頻,以減小同步脈沖輸出誤差。本例暫時(shí)用32分頻代替,其VHDL設(shè)計(jì)程序如下:
按照?qǐng)D1數(shù)字鎖相環(huán)原理框圖的設(shè)計(jì)理念,設(shè)計(jì)出各個(gè)主要的功能塊,并將它們各自進(jìn)行仿真。在確認(rèn)無誤后再連接起來進(jìn)行綜合仿真,以驗(yàn)證設(shè)計(jì)的正確性。在綜合仿真的過程中一個(gè)最關(guān)鍵的問題就是分析各個(gè)功能塊的時(shí)序關(guān)系、頻率關(guān)系。
3 頻率關(guān)系、時(shí)序分析
假設(shè)輸入信號(hào)的頻率為fi=1 200 Hz,則位同步輸出信號(hào)頻率fo=1 200 Hz,脈沖加減器輸出信號(hào)頻率fm2=N×fo,則其時(shí)鐘頻率fm1=2×fm2;K變模可逆計(jì)數(shù)器工作時(shí)鐘可設(shè)為M fo。這里的M、N值一般均為2的整數(shù)次冪,他們之間的具體關(guān)系需根據(jù)fi確定。綜合仿真的時(shí)序圖如圖3所示。
由圖3可以看出,CS控制信號(hào)逐漸變成了占空比為50%的方波,這也從側(cè)面反映出了鎖定過程。當(dāng)鎖相環(huán)鎖定后,信號(hào)CODEIN出現(xiàn)連“0”和連“1”時(shí),也能準(zhǔn)確實(shí)現(xiàn)位同步。鎖定時(shí)間約為15.8 ms。通過以上仿真,驗(yàn)證了設(shè)計(jì)的正確性。對(duì)于不同的設(shè)計(jì),只需要計(jì)算好頻率關(guān)系、修改一下N分頻器的N值,就可以實(shí)現(xiàn)不同輸入信號(hào)的同步。
本文介紹的這種以VHDL語言實(shí)現(xiàn)的全數(shù)字鎖相環(huán),是在ALTERA公司的Cyclone系列FPGA—EP1C12Q240C8上實(shí)現(xiàn)的。它僅僅需要FPGA的95個(gè)邏輯單元,對(duì)于擁有12 060個(gè)邏輯單元的EP1C12來說,消耗的資源微乎其微,但卻是信號(hào)的差分相干解調(diào)過程中不可或缺的重要部分。通過以上方法介紹、仿真的實(shí)現(xiàn),再一次體現(xiàn)了用硬件描述語言在可編程器件中實(shí)現(xiàn)數(shù)字電路的優(yōu)越性。