唐家博
1 前言
分頻器是FPGA設(shè)計(jì)中使用頻率非常高的基本設(shè)計(jì)之一,盡管在目前大部分設(shè)計(jì)中,廣泛使用芯片廠家集成的鎖相環(huán)資源,如altera 的PLL,Xilinx的DLL.來進(jìn)行時(shí)鐘的分頻,倍頻以及相移。但是對(duì)于時(shí)鐘要求不高的基本設(shè)計(jì),通過語(yǔ)言進(jìn)行時(shí)鐘的分頻相移仍然非常流行,首先這種方法可以節(jié)省芯片內(nèi)部的鎖相環(huán)資源,再者,消耗不多的邏輯單元就可以達(dá)到對(duì)時(shí)鐘操作的目的。另一方面,通過語(yǔ)言設(shè)計(jì)進(jìn)行時(shí)鐘分頻,可以看出設(shè)計(jì)者對(duì)設(shè)計(jì)語(yǔ)言的理解程度。
本文將介紹三種分頻方式,這三種分頻方式包括:基本2分頻法、脈沖計(jì)數(shù)法、相位偏移法,通過這三種方式將能夠?qū)崿F(xiàn)絕大部分的分頻需求,也能夠大大節(jié)約FPGA芯片的鎖相環(huán)資源。
2 信號(hào)分頻的分類
一般地,通常的信號(hào)分頻方式分類包括占空比為50%的分類和占空比不為50%的分類,由于在用verilog HDL語(yǔ)言對(duì)FPGA編程的過程中無法同時(shí)在一個(gè)進(jìn)程中對(duì)信號(hào)的上升沿和下降沿同時(shí)進(jìn)行監(jiān)測(cè),所以在技術(shù)的實(shí)現(xiàn)方式上還存在偶次分頻和奇次分頻的差異。在本文中,將從基本的2分頻講到占空比不為50%的奇次分頻的具體實(shí)現(xiàn)的策略,以及部分規(guī)律的總結(jié)。
3 各種分頻策略以及其適用的范圍
3.1 基本2分頻法
我們采用一個(gè)always進(jìn)程對(duì)clk時(shí)鐘信號(hào)進(jìn)行監(jiān)測(cè),每當(dāng)clk上升沿或下降沿時(shí)我們?nèi)》匆淮蝟ut(輸出信號(hào))的取值。這樣我們就能夠?qū)崿F(xiàn)對(duì)clk的2分頻。
本方法可以進(jìn)行迭代,我們可以取out1做中間變量對(duì)clk進(jìn)行2分頻,然后再對(duì)out1進(jìn)行同樣的2分頻,這樣就可以得到我們需要的4分頻。
我們可以得到結(jié)論,,我們通過對(duì)clk的2分頻的n次迭代,我們就可以得到2^n次分頻。
3.2 脈沖計(jì)數(shù)法
利用2分頻我們能夠得到一些我們需要的偶次分頻,但是沒法實(shí)現(xiàn)所有的偶次分頻,比如6分頻、30分頻等。我們?cè)趯?shí)現(xiàn)這一類分頻的時(shí)候我們需要采用上升沿(下降沿)計(jì)數(shù)的方式對(duì)clk進(jìn)行分頻。
我們?cè)诰幊虝r(shí)需要定義一個(gè)寄存器類型的變量count進(jìn)行計(jì)數(shù),如果我們需要進(jìn)行2n次分頻,那么我們就在count計(jì)數(shù)到n時(shí)把輸出信號(hào)out取反并且把count清零并重新計(jì)數(shù)。比如6分頻的具體代碼實(shí)現(xiàn)如下:
3.3 相位偏移法
由于在FPGA的編程實(shí)現(xiàn)中,無法同時(shí)在一個(gè)進(jìn)程內(nèi)對(duì)上升沿和下降沿進(jìn)行監(jiān)測(cè),所以在占空比為50%的奇次分頻的實(shí)現(xiàn)上需要不同的解決方案。通常采用兩個(gè)相位上相差半個(gè)時(shí)鐘周期的2n次分頻的中間信號(hào)變量相或得到,這就是利用相位偏移法實(shí)現(xiàn)的分頻策略。
經(jīng)過總結(jié)我們能夠得到以下的規(guī)律:
我們把半個(gè)時(shí)鐘周期當(dāng)做一個(gè)單位長(zhǎng)度,那么2n+1次分頻的信號(hào)里就有4n+2個(gè)單位長(zhǎng)度,而我們需要把4n+2分為兩個(gè)2n+1,那么我們就需要兩個(gè)相位上相差一個(gè)單位長(zhǎng)度的,并且占空比為2n/(4n+2)的2n+1次分頻信號(hào)相或來得到,而該信號(hào)可以由上述的脈沖計(jì)數(shù)法得到。
利用上文的規(guī)律,以占空比為50%的5分頻為例,我們需要兩個(gè)占空比為(2*2)/(4*2+2)的5分頻信號(hào)進(jìn)行合成,其中這兩個(gè)信號(hào)可以利用脈沖計(jì)數(shù)法得到,并且保持相位相差半個(gè)時(shí)5鐘周期,我們會(huì)發(fā)現(xiàn)這兩個(gè)信號(hào)相或的結(jié)果就是我們需要的占空比為40%的5分頻。具體實(shí)現(xiàn)如下:
在實(shí)現(xiàn)奇數(shù)次分頻的基礎(chǔ)上,我們可以繼續(xù)實(shí)現(xiàn)n次分頻的占空比為x/2n的信號(hào),與脈沖計(jì)數(shù)法不同的是,這里的x可以是1到2n-1的任意整數(shù)。
我們把兩個(gè)偏移信號(hào)命名為sgn1和sgn2,兩個(gè)信號(hào)由于偏移會(huì)有一部分重疊的長(zhǎng)度,設(shè)該長(zhǎng)度為y,則通過與運(yùn)算能夠得到占空比為y/2n的信號(hào),如果通過或運(yùn)算則能得到占空比為(2n-y)/2n的信號(hào)。
4 結(jié)束語(yǔ)
利用基本2分頻法、脈沖計(jì)數(shù)法、相位偏移法,就基本足夠目前工程上所需要的各種分頻的實(shí)現(xiàn),并且每種方法的適用范圍各有不同,相位偏移法適用范圍最廣,同時(shí)也最消耗內(nèi)部資源,相對(duì)的基本2分頻法適用范圍最窄,也是最省資源。合理利用這些分頻策略將可以為我們的工程中為我們解決實(shí)際問題提供不少的幫助。
參考文獻(xiàn)
[1]高培軍.基于FPGA的多種形式分頻的設(shè)計(jì)與實(shí)現(xiàn) 可編程技術(shù)專題 2004年第六期:30-31
[2]潘松 黃繼業(yè) 潘明 《EDA技術(shù)實(shí)用教程》(第四版) 科學(xué)出版社 2010年
[3]林海波.基于CPLD/FPGA的半整數(shù)分頻器的設(shè)計(jì) 國(guó)外電子元器件 2003年第九期:68-70