《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 解決方案 > 基于FPGA的數(shù)字分頻器設(shè)計

基于FPGA的數(shù)字分頻器設(shè)計

2017-09-04
作者:趙厲,,張志國,,唐芳福
關(guān)鍵詞: 歐比特 FPGA 分頻器

摘要:在設(shè)計數(shù)字電路過程中,,通常所需的頻率要根據(jù)給定的頻率進行分頻來得到。時鐘分頻又分為整數(shù)分頻和小數(shù)分頻,,有時還有會有分數(shù)分頻,。當(dāng)基準(zhǔn)時鐘與所需的頻率成整數(shù)倍關(guān)系時為整數(shù)分頻,,可以采用標(biāo)準(zhǔn)的計數(shù)器實現(xiàn),,也可以采用可編程邏輯器件實現(xiàn),。當(dāng)基準(zhǔn)時鐘與所需的頻率不成整數(shù)倍關(guān)系時為小數(shù)分頻,可以采用小數(shù)分頻器實現(xiàn)分頻,。本文通過XC2V1000-4FG456型號的FPGA對8192kHz的基準(zhǔn)時鐘進行分頻,,分別得到1024kHz、512kHz,、256kHz和1kHz的時鐘頻率,。設(shè)計中利用了VHDL硬件描述語言,通過ISE9.1邏輯設(shè)計工具和Modelsim6.5仿真工具完成了數(shù)字分頻器的設(shè)計,。

關(guān)鍵詞:分頻器,;FPGA;VHDL,;Modelsim6.5

中圖分類號:TP332文獻標(biāo)識碼:A         

文章編號:

Design of Digital Frequency Divider Based on the FPGA

Zhaoli,,Zhao Zhiguo,Tang Fangfu

Zhuhai Orbita Control Engineering Co.,Ltd., Zhuhai 519080, China

Abstract: In the process of designing a digital circuit, the frequency is usually required to be divided according to the given frequency. Clock frequency divided into integer and fractional frequency division, and sometimes there will be fractional frequency. When the reference clock and the integer times frequency relations for integer frequency division, can use the standard counter, can also be realized by using programmable logic devices.When the reference clock and the frequency of the required no integer times relationship for decimal frequency division, and the decimal frequency divider can be used to realize frequency division. In this paper, the 8192kHz reference clock is divided by the XC2V1000-4FG456 model FPGA to obtain the clock frequencies of 1024kHz, 512kHz, 256kHz and 1kHz respectively. The design uses the VHDL hardware description language, through the ISE9.1 logic design tools and Modelsim6.5 simulation tools to complete the design of digital frequency divider. 

Key words:Frequency Divider; FPGA; VHDL; Modelsim6.5

1. 概述

隨著集成電路技術(shù)的快速發(fā)展,,半導(dǎo)體存儲、微處理器等相關(guān)技術(shù)的發(fā)展得到了飛速發(fā)展,。FPGA以其可靠性強,、運行快、并行性等特點在電子設(shè)計中具有廣泛的意義,。作為一種可編程邏輯器件,,F(xiàn)PGA在短短二十年中從電子設(shè)計的外圍器件逐漸演變?yōu)閿?shù)字系統(tǒng)的核心,。伴隨著半導(dǎo)體工藝技術(shù)的進步,F(xiàn)PGA器件的設(shè)計技術(shù)取得了飛躍發(fā)展及突破,。

分頻器通常用來對某個給定的時鐘頻率進行分頻,,以得到所需的時鐘頻率。在設(shè)計數(shù)字電路中會經(jīng)常用到多種不同頻率的時鐘脈沖,,一般采用由一個固定的晶振時鐘頻率來產(chǎn)生所需要的不同頻率的時鐘脈沖的方法進行時鐘分頻,。

在FPGA的設(shè)計中分頻器是使用頻率較高的基本設(shè)計,在很多的設(shè)計中也會經(jīng)常用到芯片集成的鎖相環(huán)資源,,如用Xilinx的DLL以及Altera的PLL來進行時鐘的分頻,、倍頻與相移。在一些對時鐘精度不高的場合,,會經(jīng)常利用硬件描述語言來對時鐘源進行時鐘分頻,。

分頻器是一種基本電路,一般包括數(shù)字分頻器,、模擬分頻器和射頻分頻器,。根據(jù)不同設(shè)計的需要,有時還會要求等占空比,。數(shù)字分頻器采用的是計數(shù)器的原理,,權(quán)值為分頻系數(shù)。模擬分頻器就是一個頻率分配器,,用帶阻帶通實現(xiàn)(比如音箱上高中低喇叭的分配器),。射頻分頻器也是濾波器原理,用帶內(nèi)外衰減,,阻抗匹配實現(xiàn),。

隨著FPGA技術(shù)的發(fā)展,基于FPGA技術(shù)的硬件設(shè)計數(shù)字分頻器已成為數(shù)字系統(tǒng)設(shè)計的研究重點,。數(shù)字分頻器通常分為整數(shù)分頻器和小數(shù)分頻器,。在有些需求下還要分數(shù)分頻器。

本設(shè)計是基于FPGA的數(shù)字分頻器,,通過VHDL硬件設(shè)計語言,,在Modelsim6.5上對設(shè)計的分頻器進行仿真驗證。

2. 數(shù)字分頻器的設(shè)計

數(shù)字分頻器的設(shè)計與模擬分頻器的設(shè)計不同,,數(shù)字分頻器可以使用觸發(fā)器設(shè)計電路對時鐘脈沖進行時鐘分頻,。分頻器的一個重要指標(biāo)就是占空比,即在一個周期中高電平脈沖在整個周期中所占的比例,。占空比一般會有1:1,1: N等不同比例的要求,由于占空比的比例要求不一樣,,所以采用的時鐘分頻原理也各不同。在FPGA的數(shù)字分頻器設(shè)計中,,主要分為整數(shù)分頻器,、小數(shù)分頻器和分數(shù)分頻器?,F(xiàn)在分別介紹整數(shù)分頻器的設(shè)計、小數(shù)分頻器的設(shè)計和分數(shù)分頻器的設(shè)計,。

2.1 整數(shù)分頻器的設(shè)計

整數(shù)分頻器是指基準(zhǔn)時鐘與所需的時鐘頻率成整數(shù)倍關(guān)系,。整數(shù)分頻器的分頻種類一般包括奇數(shù)分頻和偶數(shù)分頻。雖然時鐘分頻原理會根據(jù)時鐘分頻的要求不同而不同,,但均可采用標(biāo)準(zhǔn)計數(shù)器原理來實現(xiàn),。

偶數(shù)分頻器的設(shè)計原理較為簡單,主要是利用計數(shù)器來實現(xiàn),。假設(shè)要進行n(n為偶數(shù))分頻,,設(shè)定一個在分頻時鐘上升沿觸發(fā)的計數(shù)器循環(huán)計數(shù)來實現(xiàn)。當(dāng)計數(shù)器值為0-((n/2)-1)時,,輸出時鐘信號進行翻轉(zhuǎn),,同時給計數(shù)器一個復(fù)位信號,使下一個時鐘上升沿到來時,,計數(shù)器重新開始計數(shù),,由此不斷循環(huán)。

奇數(shù)分頻器的設(shè)計原理與偶數(shù)分頻的設(shè)計方法很相似,,都是通過計數(shù)器來實現(xiàn)的,。如果要進行n(n為奇數(shù))分頻,直接設(shè)計n進制的計數(shù)器即可,。還有一種方法就是選擇兩個計數(shù)器cnt1和cnt2,,分別在時鐘上升沿和下降沿觸發(fā)計數(shù)。cnt1和cnt2均當(dāng)計數(shù)器值為0-((n/2)-1)時,,輸出時鐘信號進行翻轉(zhuǎn),,同時給計數(shù)器一個時鐘復(fù)位信號,使下一個時鐘上升沿到來時,,計數(shù)器重新開始計數(shù),,如此進行循環(huán)下去。由此可知,,計數(shù)器cnt1和cnt2的實現(xiàn)方法一樣,,只是翻轉(zhuǎn)邊沿不一樣,最終輸出的時鐘為clkout = clk1 + clk2,。

2.2 小數(shù)分頻器的設(shè)計

小數(shù)分頻的基本原理是采用脈沖吞吐計數(shù)器和鎖相環(huán)技術(shù)先設(shè)計兩個不同分頻比的整數(shù)分頻器,,然后通過控制單位時間內(nèi)兩種分頻比出現(xiàn)的不同次數(shù)來獲得所需的小數(shù)分頻值,分頻系數(shù)為N-0.5(N為整數(shù))時,,可控制扣除脈沖的時間,,以使輸出成為一個穩(wěn)定的脈沖頻率,而不是一次N分頻,一次N-1分頻,。

小數(shù)分頻器有很多種設(shè)計方案,但其基本原理是一樣的,,都是在若干個分頻周期中采取某種方法使幾個周期多計一個數(shù)或少計一個數(shù),,從而在整個計數(shù)周期的總體平均意義上獲得一個小數(shù)分頻比。還有一種分頻方法就是,,利用狀態(tài)機和計數(shù)器,。假設(shè)時鐘信號的頻率為1khz,需要產(chǎn)生750khz的分頻信號,,其分頻系數(shù)為6/8,。基本設(shè)計思想是,,在8個時鐘信號中保留6個時鐘信號,。這種方法是需要預(yù)先設(shè)定狀態(tài)機的個數(shù),主要用于已經(jīng)知道需要使用哪一個小數(shù)分頻系數(shù)的情況下,。如果分頻系數(shù)發(fā)生變化,,則需要在程序內(nèi)部進行修改。

雙模前置小數(shù)分頻的設(shè)計方法是,,假設(shè)要進行m,,n時鐘分頻(其中m、n都是整數(shù),,且n<10),,因為只有一位小數(shù),所以總共要進行10次分頻,??偟囊?guī)律是:進行n次m+1分頻,10-n次m分頻,。例如,,設(shè)計一個分頻系數(shù)為3.6的分頻器,將小數(shù)部分的6按倍累加,,假設(shè)累加的值為a,,如果a<10,則進行3分頻,,如果a<10下一次則加上6,。此后,如果a>=10,,則進行4分頻,,4分頻過后再將累加值減去4后與10比較以決定下一次分頻是4分頻還是3分頻,這樣分頻器設(shè)計成6次4分頻,4次3分頻,,總的分頻值為(6×4+4×3)/(6+4) = 3.6,。

2.3 分數(shù)分頻器的設(shè)計

分數(shù)分頻器的數(shù)據(jù)輸入部分與小數(shù)分頻基本相同,差別僅在于數(shù)碼管顯示部分顯示三位分頻系數(shù),。由于分數(shù)在一定情況下可以轉(zhuǎn)化為小數(shù)進行計算,,所以分數(shù)分頻的設(shè)計思想與小數(shù)分頻的很相似。假設(shè)進行分頻,,總分頻數(shù)由分母m決定,,規(guī)律是進行n次j+1分頻和m-n次j分頻。兩種分頻交替進行的計算方法和小數(shù)分頻的很類似,。累加分結(jié)果是大于等于分母還是小于分母決定是進行j分頻還是j+1分頻,。

3. 數(shù)字分頻器的FPGA設(shè)計及仿真

利用FPGA對8192kHz的基準(zhǔn)時鐘進行時鐘分頻,分別得到1024kHz,、512kHz,、256kHz和1kHz的時鐘頻率,需要分別進行8分頻,、16分頻,、32分頻和8192分頻。在利用FPGA進行設(shè)計整數(shù)分頻器時,,通過VHDL硬件描述語言利用計數(shù)器方式來實現(xiàn),。

3.1 1024kHz時鐘分頻

根據(jù)所需的時鐘頻率為1024kHz的時鐘,而晶振時鐘的頻率為8192kHz,,晶振時鐘與所需的時鐘頻率恰巧是8倍的整數(shù)倍關(guān)系,,因此需要對8192kHz的晶振時鐘進行8分頻來獲得所需要的時鐘。根據(jù)整數(shù)倍分頻器的設(shè)計方法原理,,通過ISE9.1邏輯設(shè)計工具,,利用VHDL硬件描述語言來進行8分頻的分頻器設(shè)計。然而8又是偶數(shù),,所以需要設(shè)計的是偶數(shù)分頻器,。對設(shè)計的內(nèi)容通過Modelsim6.5仿真軟件進行仿真驗證,結(jié)果如圖3-1所示,。

圖片1.png

圖3-1 1024kHz時鐘分頻

由圖3-1得知,,當(dāng)8192kHz的晶振時鐘輸入8個時鐘,系統(tǒng)輸出1個時鐘,,即一個1024kHz頻率的時鐘,。程序設(shè)計中采用計數(shù)器來實現(xiàn),當(dāng)計數(shù)器值為0-((n/2)-1)=-3時,,輸出時鐘信號進行翻轉(zhuǎn),,同時給計數(shù)器一個復(fù)位信號,,使下一個時鐘上升沿到來時,計數(shù)器重新開始計數(shù),,不斷循環(huán)下去,。

3.2 512kHz時鐘分頻

根據(jù)所需的時鐘頻率為512kHz的時鐘,而晶振時鐘的頻率為8192kHz,,晶振時鐘與所需的時鐘頻率恰巧是16倍的整數(shù)倍關(guān)系,,因此需要對8192kHz的晶振時鐘進行16分頻來獲得所需要的時鐘。根據(jù)整數(shù)倍分頻器的設(shè)計方法原理,,通過ISE9.1邏輯設(shè)計工具,利用VHDL硬件描述語言來進行16分頻的分頻器設(shè)計,。然而16又是偶數(shù),,所以需要設(shè)計的是偶數(shù)分頻器。對設(shè)計的內(nèi)容通過Modelsim6.5仿真軟件進行仿真驗證,,結(jié)果如圖3-2所示,。

圖片2.png

圖3-2 512kHz時鐘分頻

由圖3-2得知,當(dāng)8192kHz的晶振時鐘輸入16個時鐘,,系統(tǒng)輸出1個時鐘,,即一個512kHz頻率的時鐘。程序設(shè)計中采用計數(shù)器來實現(xiàn),,當(dāng)計數(shù)器值為0-((n/2)-1)=-7時,,輸出時鐘信號進行翻轉(zhuǎn),同時給計數(shù)器一個復(fù)位信號,,使下一個時鐘上升沿到來時,,計數(shù)器重新開始計數(shù),不斷循環(huán)下去,。

3.3 256kHz時鐘分頻

根據(jù)所需的時鐘頻率為256kHz的時鐘,,而晶振時鐘的頻率為8192kHz,晶振時鐘與所需的時鐘頻率恰巧是32倍的整數(shù)倍關(guān)系,,因此需要對8192kHz的晶振時鐘進行32分頻來獲得所需要的時鐘,。根據(jù)整數(shù)倍分頻器的設(shè)計方法原理,通過ISE9.1邏輯設(shè)計工具,,利用VHDL硬件描述語言來進行32分頻的分頻器設(shè)計,。然而32又是偶數(shù),所以需要設(shè)計的是偶數(shù)分頻器,。對設(shè)計的內(nèi)容通過Modelsim6.5仿真軟件進行仿真驗證,,結(jié)果如圖3-3所示。

圖片3.png

圖3-3 256kHz時鐘分頻

由圖3-3得知,,當(dāng)8192kHz的晶振時鐘輸入32個時鐘,,系統(tǒng)輸出1個時鐘,即一個256kHz頻率的時鐘。程序設(shè)計中采用計數(shù)器來實現(xiàn),,當(dāng)計數(shù)器值為0-((n/2)-1)=-15時,,輸出時鐘信號進行翻轉(zhuǎn),同時給計數(shù)器一個復(fù)位信號,,使下一個時鐘上升沿到來時,,計數(shù)器重新開始計數(shù),不斷循環(huán)下去,。

3.4 1kHz時鐘分頻

根據(jù)所需的時鐘頻率為1kHz的時鐘,,而晶振時鐘的頻率為8192kHz,晶振時鐘與所需的時鐘頻率恰巧是8192倍的整數(shù)倍關(guān)系,,因此需要對8192kHz的晶振時鐘進行8192分頻來獲得所需要的時鐘,。根據(jù)整數(shù)倍分頻器的設(shè)計方法原理,通過ISE9.1邏輯設(shè)計工具,,利用VHDL硬件描述語言來進行8192分頻的分頻器設(shè)計,。然而8192又是偶數(shù),所以需要設(shè)計的是偶數(shù)分頻器,。對設(shè)計的內(nèi)容通過Modelsim6.5仿真軟件進行仿真驗證,,結(jié)果如圖3-4所示。

圖片4.png

圖3-4 1kHz時鐘分頻

由圖3-4得知,,當(dāng)8192kHz的晶振時鐘輸入8個時鐘,,系統(tǒng)輸出1個時鐘,即一個1kHz頻率的時鐘,。程序設(shè)計中采用計數(shù)器來實現(xiàn),,當(dāng)計數(shù)器值為0-((n/2)-1)=-4095時,輸出時鐘信號進行翻轉(zhuǎn),,同時給計數(shù)器一個復(fù)位信號,,使下一個時鐘上升沿到來時,計數(shù)器重新開始計數(shù),,不斷循環(huán)下去,。

4. 結(jié)束語

本文給出了基于FPGA的數(shù)字分頻器設(shè)計方法。采用計數(shù)器設(shè)計方法實現(xiàn)了對8192kHz的基準(zhǔn)時鐘進行分頻,,分別得到1024kHz,、512kHz、256kHz和1kHz的時鐘頻率,。其他的偶數(shù)倍分頻也可采用類似的方法分頻的到需要的頻率時鐘,。通過在Modelsim6.5仿真工具驗證了設(shè)計的正確性。

參考文獻

[1] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計教程[M].北京航空航天大學(xué)出版社,,2008

[2] (美)Parag K.Lala著,,喬廬峰等譯.現(xiàn)代數(shù)字設(shè)計與VHDL  [M].電子工業(yè)出版社,,2010

[3] 潘松,黃繼業(yè),,潘明.EDA技術(shù)實用教程[M].科學(xué)出版社,,2010

[4] 張奇惠,武超,,王二萍,,蔣俊華,張偉風(fēng).基于VerilogHDL的分頻器的優(yōu)化設(shè)計[J].河南大學(xué)學(xué)報(自然科學(xué)出版).2007,,37(4):343

[5] 王世元,,謝開明,石亞偉,,陳孟鋼,,龍正吉.一種新的可控分頻器的FPGA實現(xiàn)[J].西南大學(xué)學(xué)報(自然科學(xué)版)2007,29(1):89-93

[6] 劉亞海,林爭輝.基于FPGA的小數(shù)分頻器的實現(xiàn)[J].現(xiàn)代電子技術(shù),,2008,28(3):113-117

[7] 蔡曉燕,F(xiàn)PGA數(shù)字邏輯設(shè)計[M].清華大學(xué)出版社,,2013

[8] 徐志軍,,徐光輝.CPLD/FPGA的開發(fā)與應(yīng)用[M].電子工業(yè)出版社,2002

[9] 王誠,,薛小剛,,鐘信潮.FPGA/CPLD設(shè)計工具[M].人民郵電出版社,2003

[10] 李秋生.一種改進的小數(shù)分頻器設(shè)計方法[J].現(xiàn)代電子技術(shù).2009,08:43-46

[11] 徐德成.任意數(shù)分頻設(shè)計方法[J].科技廣場.2007,(11):219-220

[12] 古良玲,,楊永明,,郭巧惠.基于FPGA的半整數(shù)及整數(shù)分頻器的參數(shù)化設(shè)計[J].電子器件,2005,28(2): 404-406


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。