<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 基于FPGA的數(shù)字分頻器設(shè)計

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

          作者: 時間:2017-09-07 來源:網(wǎng)絡(luò) 收藏

            1. 概述

          本文引用地址:http://www.ex-cimer.com/article/201709/364018.htm

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

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

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

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

            隨著FPGA技術(shù)的發(fā)展,基于FPGA技術(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è)計電路對時鐘脈沖進行時鐘分頻。分頻器的一個重要指標就是占空比,即在一個周期中高電平脈沖在整個周期中所占的比例。占空比一般會有1:1,1: N等不同比例的要求,由于占空比的比例要求不一樣,所以采用的時鐘分頻原理也各不同。在FPGA的數(shù)字分頻器設(shè)計中,主要分為整數(shù)分頻器、小數(shù)分頻器和分數(shù)分頻器?,F(xiàn)在分別介紹整數(shù)分頻器的設(shè)計、小數(shù)分頻器的設(shè)計和分數(shù)分頻器的設(shè)計。

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

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

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

            奇數(shù)分頻器的設(shè)計原理與偶數(shù)分頻的設(shè)計方法很相似,都是通過計數(shù)器來實現(xiàn)的。如果要進行n(n為奇數(shù))分頻,直接設(shè)計n進制的計數(shù)器即可。還有一種方法就是選擇兩個計數(shù)器cnt1和cnt2,分別在時鐘上升沿和下降沿觸發(fā)計數(shù)。cnt1和cnt2均當計數(shù)器值為0-((n/2)-1)時,輸出時鐘信號進行翻轉(zhuǎn),同時給計數(shù)器一個時鐘復位信號,使下一個時鐘上升沿到來時,計數(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個時鐘信號。這種方法是需要預先設(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的基準時鐘進行時鐘分頻,分別得到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得知,當8192kHz的晶振時鐘輸入8個時鐘,系統(tǒng)輸出1個時鐘,即一個1024kHz頻率的時鐘。程序設(shè)計中采用計數(shù)器來實現(xiàn),當計數(shù)器值為0-((n/2)-1)=-3時,輸出時鐘信號進行翻轉(zhuǎn),同時給計數(shù)器一個復位信號,使下一個時鐘上升沿到來時,計數(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得知,當8192kHz的晶振時鐘輸入16個時鐘,系統(tǒng)輸出1個時鐘,即一個512kHz頻率的時鐘。程序設(shè)計中采用計數(shù)器來實現(xiàn),當計數(shù)器值為0-((n/2)-1)=-7時,輸出時鐘信號進行翻轉(zhuǎn),同時給計數(shù)器一個復位信號,使下一個時鐘上升沿到來時,計數(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得知,當8192kHz的晶振時鐘輸入32個時鐘,系統(tǒng)輸出1個時鐘,即一個256kHz頻率的時鐘。程序設(shè)計中采用計數(shù)器來實現(xiàn),當計數(shù)器值為0-((n/2)-1)=-15時,輸出時鐘信號進行翻轉(zhuǎn),同時給計數(shù)器一個復位信號,使下一個時鐘上升沿到來時,計數(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得知,當8192kHz的晶振時鐘輸入8個時鐘,系統(tǒng)輸出1個時鐘,即一個1kHz頻率的時鐘。程序設(shè)計中采用計數(shù)器來實現(xiàn),當計數(shù)器值為0-((n/2)-1)=-4095時,輸出時鐘信號進行翻轉(zhuǎn),同時給計數(shù)器一個復位信號,使下一個時鐘上升沿到來時,計數(shù)器重新開始計數(shù),不斷循環(huán)下去。

            4. 結(jié)束語

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



          關(guān)鍵詞: FPGA 數(shù)字分頻器

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();