李荃 項(xiàng)順祥 黃麟舒
摘要:本文介紹了一種數(shù)字鎖相環(huán)的FPGA實(shí)現(xiàn),簡(jiǎn)單介紹了鎖相環(huán)的基本原理,并對(duì)每一模塊的FPGA實(shí)現(xiàn)的設(shè)計(jì)進(jìn)行了介紹,最后通過(guò)仿真驗(yàn)證了其性能。
關(guān)鍵詞:數(shù)字鎖相環(huán);FPGA;ModelSim
中圖分類(lèi)號(hào):TM764 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2018)02-0083-02
隨著科技的發(fā)展,產(chǎn)品的信息化數(shù)字化程度越來(lái)越高,數(shù)字電路的應(yīng)用也是越來(lái)越廣泛,而鎖相環(huán)是絕大部分?jǐn)?shù)字電路的必備模塊,信號(hào)的運(yùn)算、傳輸、存儲(chǔ)都應(yīng)用到了鎖相環(huán)技術(shù),因此鎖相環(huán)設(shè)計(jì)的好壞,直接對(duì)產(chǎn)品整體性能產(chǎn)生影響。從1965年第一片集成電路鎖相環(huán)誕生,廣泛應(yīng)用于廣播電視領(lǐng)域,當(dāng)時(shí)的鎖相環(huán)是純模擬電路,利用模擬乘法器實(shí)現(xiàn)鑒相,隨著數(shù)字電路技術(shù)的發(fā)展,在20世紀(jì)70年代慢慢出現(xiàn)了數(shù)字鎖相環(huán),因其在數(shù)字化、集成化以及低功耗方面的優(yōu)勢(shì),得以迅速發(fā)展。本文介紹了一種數(shù)字鎖相環(huán)的FPGA實(shí)現(xiàn)。
1 鎖相環(huán)基本原理
鎖相環(huán)(Phase Locked Loop,PLL)本質(zhì)上是一個(gè)閉環(huán)相位負(fù)反饋控制系統(tǒng),針對(duì)不同的應(yīng)用場(chǎng)合,鎖相環(huán)的實(shí)際電路可能是多種多樣的,但是一個(gè)典型的鎖相環(huán)電路都應(yīng)包含這如圖1所示三個(gè)模塊:鑒相器(Phase Detector,PD),環(huán)路濾波器(Loop Filter,LF)、壓控振蕩器(Voltage Controlled Oscillator,VCO)[1]。
鑒相器將輸入的周期信號(hào)與壓控振蕩器輸出的信號(hào)的相位進(jìn)行比較,鑒相器輸出一個(gè)與相位誤差成正比例關(guān)系的電壓信號(hào),誤差電壓信號(hào)輸入到環(huán)路濾波器,輸出一個(gè)直流的控制電壓來(lái)對(duì)壓控振蕩器的輸出頻率進(jìn)行控制,通過(guò)反饋電路使輸入信號(hào)和輸出信號(hào)的相位差控制在一個(gè)比較小的區(qū)間。
2 數(shù)字鎖相環(huán)各模塊的FPGA實(shí)現(xiàn)
2.1 數(shù)字鑒相器的FPGA實(shí)現(xiàn)
鑒相器可以有多種設(shè)計(jì)方案,本文采用如圖2所示一個(gè)乘法器和一個(gè)低通濾波器串聯(lián)構(gòu)成。
設(shè)乘法器的相乘系數(shù)為Km,則輸入信號(hào)與反饋信號(hào)的輸出為:
其中Ud為鑒相器最大輸出電壓,θe(t)為誤差相位。
對(duì)于乘法器的實(shí)現(xiàn),直接可以用FPGA中的乘法器來(lái)進(jìn)行實(shí)現(xiàn),對(duì)于低通濾波器常用的數(shù)字濾波器有FIR和IIR兩種,本設(shè)計(jì)選用FIR來(lái)作為鑒相器中的濾波器,原因主要有以下幾點(diǎn)[2]:
(1)只要當(dāng)FIR濾波器系數(shù)選取恰當(dāng)(具有對(duì)稱(chēng)性)的時(shí)候其具有嚴(yán)格的線性相位特性;(2)FIR濾波器為有限脈沖響應(yīng)濾波器,必為問(wèn)題系統(tǒng),其單位脈沖為有限長(zhǎng),受限于寄存器長(zhǎng)度有限、計(jì)算精度有限的影響較小。而IIR極點(diǎn)在圓內(nèi)才能穩(wěn)定受限于有限字長(zhǎng),運(yùn)算誤差較大;(3)FIR濾波器進(jìn)行的是卷積運(yùn)算,可以使用快速傅里葉變換等快速算法得到,易于實(shí)現(xiàn)。
實(shí)踐中FIR濾波器我們使用Quartus II中提供的FIR Compiler IP核來(lái)實(shí)現(xiàn),但我們要對(duì)其系數(shù)進(jìn)行設(shè)置,為了得到我們所需要性能的濾波器系數(shù),我們?cè)贛ATLAB中進(jìn)行仿真,得到最優(yōu)濾波器設(shè)計(jì)[3]。仿真結(jié)果如圖3所示。最后對(duì)得到的系數(shù)進(jìn)行量化轉(zhuǎn)換成二進(jìn)制,進(jìn)而對(duì)FPGA中FIR Compiler IP核進(jìn)行配置。
2.2 數(shù)控振蕩器的FPGA實(shí)現(xiàn)
數(shù)控振蕩器可以將數(shù)字處理延續(xù)到正交調(diào)制之后或正交解調(diào)之前,濾波器和增益控制就可以用數(shù)字方法實(shí)現(xiàn)。Quartus II中提供的NCO 核功能十分強(qiáng)大,可以進(jìn)行多種算法的運(yùn)算,本文選用使用較為廣泛的,最為直接的CORDIC迭代算法作為迭代算法。這也是通過(guò)FPGA來(lái)實(shí)現(xiàn)較為有優(yōu)勢(shì)的一種算法。我們?cè)趯?duì)一些參數(shù)進(jìn)行設(shè)置就可以完成數(shù)控振蕩器的配置。
2.3 頂層模塊設(shè)計(jì)
頂層模塊(主模塊)是對(duì)整個(gè)系統(tǒng)進(jìn)行設(shè)計(jì),簡(jiǎn)單點(diǎn)說(shuō)就是將各個(gè)功能子模塊的管腳進(jìn)行定義,將各個(gè)模塊進(jìn)行組合連接。頂層文件的部分程序代碼如下:
wire signed[19:0] pd_mult_out; //鑒相乘法器輸出;
wire fir_filter_rst_n; //鑒相濾波器接口;
wire fir_filter_sink_valid;
wire fir_filter_source_ready;
wire fir_filter_source_valid_nc;
wire signed [29:0]fir_ filter_out; //鑒相濾波輸出
接下來(lái)我們就可以對(duì)整個(gè)系統(tǒng)進(jìn)行綜合,圖4為進(jìn)過(guò)編譯綜合后的RTL原理圖。
3 ModelSim仿真測(cè)試
針對(duì)上述設(shè)計(jì),使用Verilog HDL語(yǔ)音實(shí)現(xiàn)了該數(shù)字鎖相環(huán)的FPGA實(shí)現(xiàn),并通過(guò)Modesim進(jìn)行仿真測(cè)試。測(cè)試當(dāng)中我們使用的輸入信號(hào)采用MATLAB來(lái)進(jìn)行得到,方法是產(chǎn)生一個(gè)單頻信號(hào),然后對(duì)其進(jìn)行量化處理,并將其轉(zhuǎn)換為2進(jìn)制存儲(chǔ)在工程目錄中。編寫(xiě)對(duì)應(yīng)的激勵(lì)文件,進(jìn)行仿真,我們得到了如圖5所示的仿真結(jié)果:
仿真結(jié)果顯示,通過(guò)一定的捕捉時(shí)間,環(huán)路成功鎖定,鑒相器的輸出很快的收斂為一條平滑的直線。通過(guò)對(duì)輸入信號(hào)和輸出信號(hào)的局部放大如圖6所示,我們可以看到,環(huán)路鎖定后,輸入信號(hào)和輸出信號(hào)頻率和相位都相同。實(shí)現(xiàn)了鎖相環(huán)的功能。
4 結(jié)語(yǔ)
本文介紹了一種數(shù)字鎖相環(huán)的FPGA實(shí)現(xiàn)的設(shè)計(jì),對(duì)鎖相環(huán)的基本工作原理進(jìn)行了闡述,并對(duì)相關(guān)模塊的FPGA實(shí)現(xiàn)設(shè)計(jì)進(jìn)行了說(shuō)明。通過(guò)仿真實(shí)現(xiàn)表明,該數(shù)字鎖相環(huán),結(jié)構(gòu)簡(jiǎn)單,性能優(yōu)良。
參考文獻(xiàn)
[1]張厥盛,鄭繼禹,萬(wàn)心平.鎖相技術(shù)[M].西安:西安電子科技大學(xué)出版社,2012.
[2]鞠芳,馬昕,田嵐.基于FPGA的數(shù)字乘法器性能比較[J].電子器件,2011,(06):718-722.
[3]郭勇,楊歡.基于IP核FIR濾波器的設(shè)計(jì)與FPGA實(shí)現(xiàn)[J].無(wú)線電工程,2017,(01):79-82.