基于FPGA的全數(shù)字鎖相環(huán)路的設(shè)計(jì)
摘 要: 介紹了應(yīng)用VHDL技術(shù)設(shè)計(jì)嵌入式全數(shù)字鎖相環(huán)路的方法。詳細(xì)敘述了其工作原理和設(shè)計(jì)思想,并用可編程邏輯器件FPGA予以實(shí)現(xiàn)。
關(guān)鍵詞: VHDL語言 全數(shù)字鎖相環(huán)路(DPLL) 片上系統(tǒng)(SOC) FPGA
數(shù)字鎖相環(huán)路已在數(shù)字通信、無線電電子學(xué)及電力系統(tǒng)自動(dòng)化等領(lǐng)域中得到了極為廣泛的應(yīng)用。傳統(tǒng)的全數(shù)字鎖相環(huán)路(DPLL)是由中、小規(guī)模TTL集成電路構(gòu)成。這類DPLL工作頻率低,可靠性較差。隨著集成電路技術(shù)的發(fā)展,不僅能夠制成頻率較高的單片集成鎖相環(huán)路,而且可以把整個(gè)系統(tǒng)集成到一個(gè)芯片上去,實(shí)現(xiàn)所謂片上系統(tǒng)SOC(System on a chip)。因此,可以把全數(shù)字鎖相環(huán)路作為一個(gè)功能模塊嵌入SOC,構(gòu)成片內(nèi)鎖相環(huán)。下面介紹采用VHDL技術(shù)設(shè)計(jì)DPLL的一種方案。
1工作原理全數(shù)字鎖相環(huán)路的結(jié)構(gòu)框圖如圖1所示


當(dāng)環(huán)路瑣定時(shí),u1和u2正交,鑒相器的輸出信號(hào)ud為50%占空比的方波,此時(shí)定義相位誤差為零。在這種情況下,可逆計(jì)數(shù)器"加"與"減"的周期相同,只要可逆計(jì)數(shù)器的k值足夠大(k>M/4),其輸出端就不會(huì)產(chǎn)生進(jìn)位或借位脈沖。這時(shí),加/減脈沖控制器只對(duì)其時(shí)鐘2Nf0進(jìn)行二分頻,使u1和u2的相位保持正交。在環(huán)路未鎖定的情況下,若ud=0時(shí),它使可逆計(jì)數(shù)器向上加計(jì)數(shù),并導(dǎo)致進(jìn)位脈沖產(chǎn)生,進(jìn)位脈沖作用到加/減脈沖控制器的"加"控制端i,該控制器便在二分頻過程中加入半個(gè)時(shí)鐘周期。反之,若ud=1,可逆計(jì)數(shù)器減計(jì)數(shù),并將發(fā)出借位脈沖到加/減脈沖控制器的"減"輸入端d,于是,該控制器便在二分頻的過程中減去半個(gè)周期。這個(gè)過程是連續(xù)發(fā)生的。加/減脈沖控制器的輸出經(jīng)過除N計(jì)數(shù)器后,使得本地估算信號(hào)u2的相位受到調(diào)整控制,最終達(dá)到鎖定狀態(tài)。
2 環(huán)路部件的設(shè)計(jì)這里重點(diǎn)介紹數(shù)字環(huán)路濾波器的設(shè)計(jì)。數(shù)字環(huán)路濾波器是由變模可逆計(jì)數(shù)器構(gòu)成。在ud的控制下,當(dāng)j=0時(shí),對(duì)時(shí)鐘Mf0進(jìn)行"加"計(jì)數(shù);當(dāng)j=1時(shí),進(jìn)行"減"計(jì)數(shù)??赡嬗?jì)數(shù)器的計(jì)數(shù)容量(模數(shù)k)可以利用A、B、C、D四位進(jìn)行預(yù)置,從而方便地改變模數(shù)。其預(yù)置模數(shù)的范圍為,當(dāng)D、C、B、A在0001~1111取值時(shí),相應(yīng)模數(shù)的變化范圍是23~217??梢?,可逆計(jì)數(shù)器的長度能夠根據(jù)模數(shù)k值的大小來實(shí)現(xiàn)數(shù)字編程控制。取D、C、B、A為0001時(shí),K=23,計(jì)數(shù)器長度只有三級(jí),因而可以擴(kuò)大捕捉帶,縮短鎖定時(shí)間。在D、C、B、A取1111時(shí),K=217,計(jì)數(shù)器長度變?yōu)槭呒?jí),這時(shí)捕捉帶縮小,縮定時(shí)間延長。變??赡嬗?jì)數(shù)器的VHDL設(shè)計(jì)程序如下:
library ieee?
use ieee.std_logic_1164.a(chǎn)ll?
use ieee.std_logic_unsigned.a(chǎn)ll?
entity count_k is
port clk j en d c b a in std_logic
r1 r2 out std_logic ?
end?
architecture behave of count_k is
signal cq k mo std_logic_vector 16 downto 0 ?
signal cao1 cao2 std_logic?
signal instruction std_logic_vector 3 downto 0 ?
begin
instruction<=d & c & b & a?
with instruction select
mo <=″00000000000000111″ when ″0001″?
″00000000000001111″ when ″0010″?
″00000000000011111″ when ″0011″?
″00000000000111111″ when ″0100″?
″00000000001111111″ when ″0101″?
″00000000011111111″ when ″0110″?
″00000000111111111″ when ″0111″?
″00000001111111111″ when ″1000″?
″00000011111111111″ when ″1001″?
″00000111111111111″ when ″1010″?
″00001111111111111″ when ″1011″?
″00011111111111111″ when ″1100″?
″00111111111111111″ when ″1101″?
″01111111111111111″ when ″1110″?
″11111111111111111″ when ″1111″?
″00000000000000111″ when others?
process clk en j k cq
begin
if clk'event and clk='1' then
k<=mo?
if en='1' then
if j='0' then
if cq<k then cq<=cq+1?
else cq<=?others=>'0' ?
end if
else
if cq>0 then cq<=cq-1?
else cq<=k?
end if?
end if
else cq<=?others=>'0' ?
end if
end if
end process?
process en j cq k
begin
if en='1' then
if j='0' then
if cq=k then cao1<='1'?
else cao1<='0'?
end if
cao2<='0'?
else
if cq=″00000000000000000″then cao2<='1'?
else cao2<='0'?
end if
cao1<='0'?
end if
else cao1<='0'? cao2<='0'?
end if?
end process?
r1<=cao1? r2<=cao2?
end behave?
根據(jù)對(duì)其他環(huán)路部件的功能分析,也可以設(shè)計(jì)出相應(yīng)的VHDL程序。
本設(shè)計(jì)中全數(shù)字鎖相環(huán)路采用XILINX公司的Foundation 3.1版本進(jìn)行設(shè)計(jì),并用Spartan2系列的FPGA予以實(shí)現(xiàn)。下面分別給出變??赡嬗?jì)數(shù)器和加/減脈沖控制器的仿真波形如圖3、圖4所示。




其中圖5是取k=25時(shí)的系統(tǒng)仿真波形,由圖中可見,u1和u2達(dá)到鎖定狀態(tài)時(shí)的仿真時(shí)間是175μs。圖6是取k=28時(shí)的系統(tǒng)仿真波形,在這種情況下,u1和u2達(dá)到鎖定狀態(tài)時(shí)的仿真時(shí)間是1.04ms。顯然,模k愈大,環(huán)路進(jìn)入鎖定狀態(tài)的時(shí)間愈長。
值得指出的是,在環(huán)路鎖定狀態(tài)下,由于可逆計(jì)數(shù)器的連續(xù)計(jì)數(shù),或在噪聲的干擾下,會(huì)產(chǎn)生進(jìn)位和借位脈沖。如果k值取得太小,則可逆計(jì)數(shù)器因頻繁地循環(huán)計(jì)數(shù)而產(chǎn)生進(jìn)位或借位脈沖,這就導(dǎo)致了在環(huán)路的輸出端出現(xiàn)相位抖動(dòng)。為了減少這種相位抖動(dòng),k值必須取大于M/4。
由以上分析可知,模k的取值要適當(dāng)。k取得大,對(duì)抑制噪聲、減少相位抖動(dòng)有利,但同時(shí)又加大了環(huán)路進(jìn)入鎖定狀態(tài)的時(shí)間。反之,k取得小,可以加速環(huán)路的鎖定,而對(duì)噪聲的抑制能力卻隨之降低。
采用VHDL設(shè)計(jì)全數(shù)字鎖相環(huán)路,具有設(shè)計(jì)靈活、修改方便和易于實(shí)現(xiàn)的優(yōu)點(diǎn),并能夠制成嵌入式片內(nèi)鎖相環(huán)。該類數(shù)字鎖相環(huán)路中計(jì)數(shù)器的模數(shù)可以隨意修改。這樣,就能夠根據(jù)不同情況最大限度地、靈活地設(shè)計(jì)環(huán)路。
1 孟憲元.可編程ASIC設(shè)計(jì)及應(yīng)用.成都:電子科技大學(xué)出版社,2000.11
2 胡華春,石 玉.?dāng)?shù)字鎖相環(huán)路原理與應(yīng)用.上海:上??萍汲霭嫔纾?990
3TTLdatasheethttp://www.dzsc.com/datasheet/TTL_1174409.html.
來源:零八我的愛0次