0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用FPGA設(shè)計(jì)一階全數(shù)字鎖相環(huán)的方法

電子設(shè)計(jì) ? 2018-10-25 09:17 ? 次閱讀

本文在說明全數(shù)字鎖相環(huán)的基礎(chǔ)上,提出了一種利用FPGA設(shè)計(jì)一階全數(shù)字鎖相環(huán)的方法,并給出了關(guān)鍵部件的RTL可綜合代碼,并結(jié)合本設(shè)計(jì)的一些仿真波形詳細(xì)描述了數(shù)字鎖相環(huán)的工作過程,最后對(duì)一些有關(guān)的問題進(jìn)行了討論。

引言

鎖相環(huán)(PLL)技術(shù)在眾多領(lǐng)域得到了廣泛的應(yīng)用。如信號(hào)處理,調(diào)制解調(diào),時(shí)鐘同步,倍頻,頻率綜合等都應(yīng)用到了鎖相環(huán)技術(shù)。傳統(tǒng)的鎖相環(huán)由模擬電路實(shí)現(xiàn),而全數(shù)字鎖相環(huán)(DPLL)與傳統(tǒng)的模擬電路實(shí)現(xiàn)的PLL相比,具有精度高且不受溫度和電壓影響,環(huán)路帶寬和中心頻率編程可調(diào),易于構(gòu)建高階鎖相環(huán)等優(yōu)點(diǎn),并且應(yīng)用在數(shù)字系統(tǒng)中時(shí),不需A/D及D/A轉(zhuǎn)換。隨著通訊技術(shù)、集成電路技術(shù)的飛速發(fā)展和系統(tǒng)芯片(SoC)的深入研究,DPLL必然會(huì)在其中得到更為廣泛的應(yīng)用。

這里介紹一種采用VERILOG硬件描述語言設(shè)計(jì)DPLL的方案。

DPLL結(jié)構(gòu)及工作原理

主要由鑒相器、K變??赡嬗?jì)數(shù)器、脈沖加減電路和除N計(jì)數(shù)器四部分構(gòu)成。K變模計(jì)數(shù)器和脈沖加減電路的時(shí)鐘分別為Mfc和2Nfc。這里fc是環(huán)路中心頻率,一般情況下M和N都是2的整數(shù)冪。本設(shè)計(jì)中兩個(gè)時(shí)鐘使用相同的系統(tǒng)時(shí)鐘信號(hào)。

鑒相器

常用的鑒相器有兩種類型:異或門(XOR)鑒相器和邊沿控制鑒相器(ECPD),本設(shè)計(jì)中采用異或門(XOR)鑒相器。異或門鑒相器比較輸入信號(hào)Fin相位和輸出信號(hào)Fout相位之間的相位差Фe=Фin-Фout,并輸出誤差信號(hào)Se作為K變??赡嬗?jì)數(shù)器的計(jì)數(shù)方向信號(hào)。環(huán)路鎖定時(shí),Se為一占空比50%的方波,此時(shí)的絕對(duì)相為差為90°。因此異或門鑒相器相位差極限為±90°。

K變??赡嬗?jì)數(shù)器

K變模可逆計(jì)數(shù)器消除了鑒相器輸出的相位差信號(hào)Se中的高頻成分,保證環(huán)路的性能穩(wěn)定。K變??赡嬗?jì)數(shù)器根據(jù)相差信號(hào)Se來進(jìn)行加減運(yùn)算。當(dāng)Se為低電平時(shí),計(jì)數(shù)器進(jìn)行加運(yùn)算,如果相加的結(jié)果達(dá)到預(yù)設(shè)的模值,則輸出一個(gè)進(jìn)位脈沖信號(hào)CARRY給脈沖加減電路;當(dāng)Se為高電平時(shí),計(jì)數(shù)器進(jìn)行減運(yùn)算,如果結(jié)果為零,則輸出一個(gè)借位脈沖信號(hào)BORROW給脈沖加減電路。

脈沖加減電路

脈沖加減電路實(shí)現(xiàn)了對(duì)輸入信號(hào)頻率和相位的跟蹤和調(diào)整,最終使輸出信號(hào)鎖定在輸入信號(hào)的頻率和信號(hào)上。

除N計(jì)數(shù)器

除N計(jì)數(shù)器對(duì)脈沖加減電路的輸出IDOUT再進(jìn)行N分頻,得到整個(gè)環(huán)路的輸出信號(hào)Fout。同時(shí),因?yàn)閒c=IDCLOCK/2N,因此通過改變分頻值N可以得到不同的環(huán)路中心頻率fc。

DPLL部件的設(shè)計(jì)實(shí)現(xiàn)

了解了DPLL的工作原理,我們就可以據(jù)此對(duì)DPLL的各部件進(jìn)行設(shè)計(jì)。DPLL的四個(gè)主要部件中,異或門鑒相器和除N計(jì)數(shù)器的設(shè)計(jì)比較簡(jiǎn)單:異或門鑒相器就是一個(gè)異或門;除N計(jì)數(shù)器則是一個(gè)簡(jiǎn)單的N分頻器。下面主要介紹K變模可逆計(jì)數(shù)器和脈沖加減電路的設(shè)計(jì)實(shí)現(xiàn)。

K變??赡嬗?jì)數(shù)器的設(shè)計(jì)實(shí)現(xiàn)

K變模可逆計(jì)數(shù)器模塊中使用了一個(gè)可逆計(jì)數(shù)器Count,當(dāng)鑒相器的輸出信號(hào)dnup為低時(shí),進(jìn)行加法運(yùn)算,達(dá)到預(yù)設(shè)模值則輸出進(jìn)位脈沖CARRY;為高時(shí),進(jìn)行減法運(yùn)算,為零時(shí),輸出借位脈沖BORROW。Count的模值Ktop由輸入信號(hào)Kmode預(yù)設(shè),一般為2的整數(shù)冪,這里模值的變化范圍是23-29。模值的大小決定了DPLL的跟蹤步長(zhǎng),模值越大,跟蹤步長(zhǎng)越小,鎖定時(shí)的相位誤差越小,但捕獲時(shí)間越長(zhǎng);模值越小,跟蹤步長(zhǎng)越大,鎖定時(shí)的相位誤差越大,但捕獲時(shí)間越短。

K變??赡嬗?jì)數(shù)器的VERILOG設(shè)計(jì)代碼如下(其中作了部分注釋,用斜體表示):
module KCounter(Kclock,reset,dnup,enable, Kmode,carry,borrow);
input Kclock; /*系統(tǒng)時(shí)鐘信號(hào)*/
input reset; /*全局復(fù)位信號(hào)*/
input dnup; /*鑒相器輸出的加減控制信號(hào)*/
input enable; /*可逆計(jì)數(shù)器計(jì)數(shù)允許信號(hào)*/
input [2:0]Kmode; /*計(jì)數(shù)器模值設(shè)置信號(hào)*/
output carry; /*進(jìn)位脈沖輸出信號(hào)*/
output borrow; /*借位脈沖輸出信號(hào)*/
reg [8:0]Count; /*可逆計(jì)數(shù)器*/
reg [8:0]Ktop; /*預(yù)設(shè)模值寄存器*/
/*根據(jù)計(jì)數(shù)器模值設(shè)置信號(hào)Kmode來設(shè)置預(yù)設(shè)模值寄存器的值*/
always @(Kmode)
begin
case(Kmode)
3'b001:Ktop<=7;
3'b010:Ktop<=15;
3'b011:Ktop<=31;
3'b100:Ktop<=63;
3'b101:Ktop<=127;
3'b110:Ktop<=255;
3'b111:Ktop<=511;
default:Ktop<=15;
endcase
end
/*根據(jù)鑒相器輸出的加減控制信號(hào)dnup進(jìn)行可逆計(jì)數(shù)器的加減運(yùn)算*/
always @(posedge Kclock or posedge reset)
begin
if(reset)
Count<=0;
else if(enable)
begin
if(!dnup)
begin
if(Count==Ktop)
Count<=0;
else
Count<=Count+1;
end
else
begin
if(Count==0)
Count<=Ktop;
else
Count<=Count-1;
end
end
end
/*輸出進(jìn)位脈沖carry和借位脈沖borrow*/
assign carry=enable&(!dnup) &(Count==Ktop);
assign borrow=enable&dnup& (Count==0);
endmodule

脈沖加減電路的設(shè)計(jì)實(shí)現(xiàn)

脈沖加減電路完成環(huán)路的頻率和相位調(diào)整,可以稱之為數(shù)控振蕩器。當(dāng)沒有進(jìn)位/借位脈沖信號(hào)時(shí),它把外部參考時(shí)鐘進(jìn)行二分頻;當(dāng)有進(jìn)位脈沖信號(hào)CARRY時(shí),則在輸出的二分頻信號(hào)中插入半個(gè)脈沖,以提高輸出信號(hào)的頻率;當(dāng)有借位脈沖信號(hào)BORROW時(shí),則在輸出的二分頻信號(hào)中減去半個(gè)脈沖,以降低輸出信號(hào)的頻率。VERILOG設(shè)計(jì)代碼如下:
module IDCounter(IDclock,reset,inc,dec,IDout);
input IDclock; /*系統(tǒng)時(shí)鐘信號(hào)*/
input reset; /*全局復(fù)位信號(hào)*/
input inc; /*脈沖加入信號(hào)*/
input dec; /*脈沖扣除信號(hào)*/
output IDout; /*調(diào)整后的輸出信號(hào)*/
wire Q1, Qn1, Q2, Qn2, Q3, Qn3;
wire Q4, Qn4, Q5, Qn5, Q6, Qn6;
wire Q7, Qn7, Q8, Qn8, Q9, Qn9;
wire D7, D8;
FFD FFD1(IDclock, reset, inc, Q1, Qn1);
FFD FFD2(IDclock, reset, dec, Q2, Qn2);
FFD FFD3(IDclock, reset, Q1, Q3, Qn3);
FFD FFD4(IDclock, reset, Q2, Q4, Qn4);
FFD FFD5(IDclock, reset, Q3, Q5,Qn5);
FFD FFD6(IDclock, reset, Q4, Q6,Qn6);
assign D7=((Q9 & Qn1 & Q3) | (Q9 & Q5 & Qn3));
assign D8=((Qn9 & Qn2 & Q4) | (Qn9 & Q6 & Qn4));
FFD FFD7(IDclock, reset, D7, Q7, Qn7 );
FFD FFD8(IDclock, reset, D8, Q8, Qn8);
JK FFJK(IDclock, reset, Qn7, Qn8, Q9, Qn9);
assign IDout = (!Idclock)|Q9;
endmodule
其中,F(xiàn)FD為D觸發(fā)器,JK為JK觸發(fā)器。

當(dāng)環(huán)路的四個(gè)主要部件全部設(shè)計(jì)完畢,我們就可以將他們連接成為一個(gè)完整的DPLL,進(jìn)行仿真、綜合、驗(yàn)證功能的正確性。

DPLL的FPGA實(shí)現(xiàn)

本設(shè)計(jì)中的一階DPLL使用XILINX公司的FOUNDATION4.1軟件進(jìn)行設(shè)計(jì)綜合,采用XILINX的SPARTAN2系列的XC2S15 FPGA器件實(shí)現(xiàn),并使用Modelsim5.5d軟件進(jìn)行了仿真。結(jié)果表明:本設(shè)計(jì)中DPLL時(shí)鐘可達(dá)到120MHz,性能較高;而僅使用了87個(gè)LUT和26個(gè)觸發(fā)器,占用資源很少。下面給出詳細(xì)描述DPLL的工作過程。

(1) 當(dāng)環(huán)路失鎖時(shí),異或門鑒相器比較輸入信號(hào)(DATAIN)和輸出信號(hào)(CLOCKOUT)之間的相位差異,并產(chǎn)生K變??赡嬗?jì)數(shù)器的計(jì)數(shù)方向控制信號(hào)(DNUP);

(2) K變模可逆計(jì)數(shù)器根據(jù)計(jì)數(shù)方向控制信號(hào)(DNUP)調(diào)整計(jì)數(shù)值,DNUP為高進(jìn)行減計(jì)數(shù),并當(dāng)計(jì)數(shù)值到達(dá)0時(shí),輸出借位脈沖信號(hào)(BORROW);為低進(jìn)行加計(jì)數(shù),并當(dāng)計(jì)數(shù)值達(dá)到預(yù)設(shè)的K模值時(shí),輸出進(jìn)位脈沖信號(hào)(CARRY);

(3) 脈沖加減電路則根據(jù)進(jìn)位脈沖信號(hào)(CARRY)和借位脈沖信號(hào)(BORROW)在電路輸出信號(hào)(IDOUT)中進(jìn)行脈沖的增加和扣除操作,來調(diào)整輸出信號(hào)的頻率;

(4) 重復(fù)上面的調(diào)整過程,當(dāng)環(huán)路進(jìn)入鎖定狀態(tài)時(shí),異或門鑒相器的輸出DNUP為一占空比50%的方波,而K變??赡嬗?jì)數(shù)器則周期性地產(chǎn)生進(jìn)位脈沖輸出CARRY和借位脈沖輸出BORROW,導(dǎo)致脈沖加減電路的輸出IDOUT周期性的加入和扣除半個(gè)脈沖.

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1625

    文章

    21620

    瀏覽量

    601239
  • 鎖相環(huán)
    +關(guān)注

    關(guān)注

    35

    文章

    583

    瀏覽量

    87657
  • pll
    pll
    +關(guān)注

    關(guān)注

    6

    文章

    774

    瀏覽量

    135010
  • 數(shù)字鎖相環(huán)

    關(guān)注

    3

    文章

    33

    瀏覽量

    13412
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    全數(shù)字鎖相環(huán)的設(shè)計(jì)及分析

    設(shè)計(jì)。同時(shí),在理論分析的基礎(chǔ)上,建立了全數(shù)字鎖相環(huán)一階數(shù)學(xué)模型,從而可以根據(jù)具體的設(shè)計(jì)要求定量的計(jì)算參數(shù),簡(jiǎn)化了ADPLL的設(shè)計(jì)。
    發(fā)表于 03-16 10:56

    如何實(shí)現(xiàn)基于VHDL語言的全數(shù)字鎖相環(huán)?

     隨著集成電路技術(shù)的不斷進(jìn)步,數(shù)字化應(yīng)用逐漸普及,在數(shù)字通信、電力系統(tǒng)自動(dòng)化等方面越來越多地運(yùn)用了數(shù)字鎖相環(huán)。它的好處在于免去了模擬器件的繁瑣,而且成本低、易實(shí)現(xiàn)、省資源。本文綜合以上
    發(fā)表于 10-10 06:12

    如何采用VHDL實(shí)現(xiàn)全數(shù)字鎖相環(huán)電路的設(shè)計(jì)?

    全數(shù)字鎖相環(huán)由那幾部分組成?數(shù)字鎖相環(huán)的原理是什么?如何采用VHDL實(shí)現(xiàn)全數(shù)字鎖相環(huán)電路的設(shè)計(jì)?
    發(fā)表于 05-07 06:14

    全數(shù)字鎖相環(huán)的設(shè)計(jì)

    智能全數(shù)字鎖相環(huán)的設(shè)計(jì) 摘要: 在FPGA片內(nèi)實(shí)現(xiàn)全數(shù)字
    發(fā)表于 08-14 22:12 ?56次下載

    智能全數(shù)字鎖相環(huán)的設(shè)計(jì)

    智能全數(shù)字鎖相環(huán)的設(shè)計(jì):在FPGA片內(nèi)實(shí)現(xiàn)全數(shù)字鎖相環(huán)用途極廣。本文在集成數(shù)字
    發(fā)表于 06-25 23:32 ?72次下載

    基于FPGA全數(shù)字鎖相環(huán)設(shè)計(jì)

    基于FPGA全數(shù)字鎖相環(huán)設(shè)計(jì):
    發(fā)表于 06-26 17:30 ?141次下載
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>全數(shù)字</b><b class='flag-5'>鎖相環(huán)</b>設(shè)計(jì)

    種基于FPGA實(shí)現(xiàn)的全數(shù)字鎖相環(huán)

    鎖相環(huán)被廣泛應(yīng)用于電力系統(tǒng)的測(cè)量和控制中。介紹了種新型的基于比例積分控制邏輯的全數(shù)字鎖相環(huán)。通過對(duì)其數(shù)學(xué)模型的分析,闡述了該鎖相環(huán)的各項(xiàng)性
    發(fā)表于 07-02 16:54 ?30次下載

    基于CPLD的低頻信號(hào)全數(shù)字鎖相環(huán)設(shè)計(jì)

    本文在分析商用全數(shù)字鎖相環(huán)的常用技術(shù)和低頻信號(hào)的特點(diǎn)后,提出種適用于低頻信號(hào)的基于CPLD的鎖相環(huán)實(shí)現(xiàn)方法。
    發(fā)表于 08-06 14:39 ?118次下載

    智能全數(shù)字鎖相環(huán)的設(shè)計(jì)

    摘要: 在FPGA片內(nèi)實(shí)現(xiàn)全數(shù)字鎖相環(huán)用途極廣。本文在集成數(shù)字鎖相環(huán)74297的基礎(chǔ)上進(jìn)行改進(jìn),設(shè)計(jì)了
    發(fā)表于 06-20 12:39 ?1566次閱讀
    智能<b class='flag-5'>全數(shù)字</b><b class='flag-5'>鎖相環(huán)</b>的設(shè)計(jì)

    FPGA實(shí)現(xiàn)數(shù)字鎖相環(huán)

    Xilinx FPGA工程例子源碼:FPGA實(shí)現(xiàn)數(shù)字鎖相環(huán)
    發(fā)表于 06-07 15:07 ?38次下載

    詳解FPGA數(shù)字鎖相環(huán)平臺(tái)

    、設(shè)計(jì)目標(biāo) 基于鎖相環(huán)的理論,以載波恢復(fù)環(huán)為依托搭建數(shù)字鎖相環(huán)平臺(tái),并在FPGA中實(shí)現(xiàn)
    發(fā)表于 10-16 11:36 ?18次下載
    詳解<b class='flag-5'>FPGA</b><b class='flag-5'>數(shù)字</b><b class='flag-5'>鎖相環(huán)</b>平臺(tái)

    如何使用FPGA實(shí)現(xiàn)高性能全數(shù)字鎖相環(huán)的設(shè)計(jì)

    本文提出了種適用范圍廣泛的全數(shù)字鎖相環(huán)(ADPLL)實(shí)現(xiàn)方法.在鎖相環(huán)輸入頻率未知的情況下,實(shí)現(xiàn)鎖相
    發(fā)表于 01-26 15:03 ?65次下載
    如何使用<b class='flag-5'>FPGA</b>實(shí)現(xiàn)高性能<b class='flag-5'>全數(shù)字</b><b class='flag-5'>鎖相環(huán)</b>的設(shè)計(jì)

    如何使用FPGA實(shí)現(xiàn)高性能全數(shù)字鎖相環(huán)的設(shè)計(jì)

    本文提出了種適用范圍廣泛的全數(shù)字鎖相環(huán)(ADPLL)實(shí)現(xiàn)方法.在鎖相環(huán)輸入頻率未知的情況下,實(shí)現(xiàn)鎖相
    發(fā)表于 01-26 15:03 ?18次下載
    如何使用<b class='flag-5'>FPGA</b>實(shí)現(xiàn)高性能<b class='flag-5'>全數(shù)字</b><b class='flag-5'>鎖相環(huán)</b>的設(shè)計(jì)

    基于FPGA的高性能全數(shù)字鎖相環(huán)

    基于FPGA的高性能全數(shù)字鎖相環(huán)
    發(fā)表于 06-08 11:09 ?45次下載

    基于VHDL的全數(shù)字鎖相環(huán)的設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于VHDL的全數(shù)字鎖相環(huán)的設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 11-10 09:47 ?0次下載
    基于VHDL的<b class='flag-5'>全數(shù)字</b><b class='flag-5'>鎖相環(huán)</b>的設(shè)計(jì)