VHDL語言各種分頻器設(shè)計(jì)_第1頁
VHDL語言各種分頻器設(shè)計(jì)_第2頁
VHDL語言各種分頻器設(shè)計(jì)_第3頁
VHDL語言各種分頻器設(shè)計(jì)_第4頁
VHDL語言各種分頻器設(shè)計(jì)_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、專題二. 經(jīng)典模塊設(shè)計(jì)分頻器設(shè)計(jì)專題內(nèi)容:n1. 分頻器的原理n2. 二進(jìn)制分頻器的設(shè)計(jì)n3. 偶數(shù)分頻器的設(shè)計(jì)n4. 奇數(shù)分頻器的設(shè)計(jì)n5. 占空比可調(diào)的分頻器的設(shè)計(jì)n6. 小數(shù)分頻器的設(shè)計(jì)1. 分頻器的原理n分頻器就是對較高頻率的信號進(jìn)行分頻,得到較低頻率的信號。n常見的分頻器有二進(jìn)制分頻器、偶數(shù)分頻器、奇數(shù)分頻器、占空比可調(diào)的分頻器和小數(shù)分頻器。n分頻系數(shù)(倍率) rate=fin / fout2. 二進(jìn)制分頻器的設(shè)計(jì)n二進(jìn)制分頻就是對輸入時(shí)鐘進(jìn)行2的整數(shù)次冪分頻。n設(shè)計(jì)原理:(rate=2N,N是整數(shù))定義一個(gè)N位的計(jì)數(shù)器,對輸入的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),計(jì)數(shù)結(jié)果的第N-1位就是對輸入時(shí)鐘的

2、2的N次冪分頻。將相應(yīng)的位數(shù)取出即可得到分頻時(shí)鐘。二進(jìn)制分頻器的VHDL源程序nLibrary ieee;nUse ieee.std_logic_1164.all;nUse ieee.std_logic_unsigned.all;nUse ieee.std_logic_arith.all;nEntity fdiv isn generic(N: integer:=3); -rate=2N,N為正整數(shù)n port(n clkin: IN std_logic;n clkout: OUT std_logicn );nEnd fdiv;nArchitecture a of fdiv isn signal

3、 cnt: std_logic_vector(N-1 downto 0);nBeginn process(clkin)n beginn if(clkinevent and clkin=1) thenn cnt = cnt+1;n end if;n end process;n clkout = cnt(N-1);nEnd a;仿真結(jié)果n從波形圖可以看到,clkout是clkin的8分頻,也就是2的3次冪分頻。n如果要產(chǎn)生其他次冪分頻,直接修改generic類屬變量參數(shù)即可。3. 偶數(shù)分頻器的設(shè)計(jì)nrate=even(偶數(shù)),占空比50%n設(shè)計(jì)原理:定義一個(gè)計(jì)數(shù)器對輸入時(shí)鐘進(jìn)行計(jì)數(shù),在計(jì)數(shù)的前一半

4、時(shí)間里,輸出高電平,在計(jì)數(shù)的后一半時(shí)間里,輸出低電平,這樣輸出的信號就是占空比為50%的偶數(shù)分頻信號。例如,6分頻,計(jì)數(shù)值為02輸出高電平,計(jì)數(shù)值為35輸出低電平。偶數(shù)分頻器的VHDL源程序(1)nLibrary ieee;nUse ieee.std_logic_1164.all;nUse ieee.std_logic_unsigned.all;nUse ieee.std_logic_arith.all;nEntity fdiv isn generic(N: integer:=6); -rate=N,N是偶數(shù)n port(n clkin: IN std_logic;n clkout: OUT

5、std_logicn );nEnd fdiv;nArchitecture a of fdiv isn signal cnt: integer range 0 to n-1;nBeginn process(clkin) -計(jì)數(shù)n beginn if(clkinevent and clkin=1) thenn if(cntn-1) thenn cnt = cnt+1;n elsen cnt = 0;n end if;n end if;n end process;n n process(cnt) -根據(jù)計(jì)數(shù)值,控制輸出時(shí)鐘脈沖的高、低電平n beginn if(cntn/2) thenn clkou

6、t = 1;n elsen clkout = 0;n end if;n end process;nEnd a;偶數(shù)分頻器的VHDL源程序(2)nLibrary ieee;nUse ieee.std_logic_1164.all;nUse ieee.std_logic_unsigned.all;nUse ieee.std_logic_arith.all;nEntity fdiv isn generic(N: integer:=6); -rate=N,N是偶數(shù)n port(n clkin: IN std_logic;n clkout: OUT std_logicn );nEnd fdiv;nArc

7、hitecture a of fdiv isn signal cnt: integer range 0 to n/2-1;n signal temp: std_logic;nBeginn process(clkin)n beginn if(clkinevent and clkin=1) thenn if(cnt=n/2-1) thenn cnt = 0;n temp = NOT temp;n elsen cnt = cnt+1;n end if;n end if;n end process;n clkout = temp;nEnd a;仿真結(jié)果n從波形圖可以看到,clkout是clkin的6分

8、頻。n如果要產(chǎn)生其他分頻,直接修改generic類屬變量參數(shù)即可。4. 奇數(shù)分頻器的設(shè)計(jì)nrate=odd(奇數(shù)),占空比50%n設(shè)計(jì)原理:定義兩個(gè)計(jì)數(shù)器,分別對輸入時(shí)鐘的上升沿和下降沿進(jìn)行計(jì)數(shù),然后把這兩個(gè)計(jì)數(shù)值輸入一個(gè)組合邏輯,用其控制輸出時(shí)鐘的電平。這是因?yàn)橛?jì)數(shù)值為奇數(shù),占空比為50%,前半個(gè)和后半個(gè)周期所包含的不是整數(shù)個(gè)clkin的周期。例如,5分頻,前半個(gè)周期包含2.5個(gè)clkin周期,后半個(gè)周期包含2.5個(gè)clkin周期。奇數(shù)分頻器的VHDL源程序nLibrary ieee;nUse ieee.std_logic_1164.all;nUse ieee.std_logic_unsig

9、ned.all;nUse ieee.std_logic_arith.all;nEntity fdiv isn generic(N: integer:=5); -rate=N,N是奇數(shù)n port(n clkin: IN std_logic;n clkout: OUT std_logicn );nEnd fdiv;narchitecture a of fdiv isn signal cnt1, cnt2: integer range 0 to N-1;nbeginn process(clkin)n beginn if(clkinevent and clkin=1) then -上升沿計(jì)數(shù)n if

10、(cnt1N-1) thenn cnt1 = cnt1+1;n elsen cnt1 = 0;n end if;n end if;n end process;n process(clkin)n beginn if(clkinevent and clkin=0) then -下降沿計(jì)數(shù)n if(cnt2N-1) thenn cnt2 = cnt2+1;n elsen cnt2 = 0;n end if;n end if;n end process;n n clkout = 1 when cnt1(N-1)/2 or cnt2(N-1)/2 elsen 0;nend a;仿真結(jié)果n從波形圖可以看到

11、,clkout是clkin的5分頻。n如果要產(chǎn)生其他分頻,直接修改generic類屬變量參數(shù)即可。5. 占空比可調(diào)的分頻器的設(shè)計(jì)n占空比為m:nn設(shè)計(jì)原理:n定義一個(gè)計(jì)數(shù)器,對輸入時(shí)鐘脈沖進(jìn)行計(jì)數(shù)。根據(jù)計(jì)數(shù)值來判斷輸出高電平還是低電平。例如,占空比為3:10的偶數(shù)分頻器,當(dāng)計(jì)數(shù)值為02時(shí),輸出高電平;當(dāng)計(jì)數(shù)值為39時(shí),輸出低電平。占空比可調(diào)的分頻器VHDL源程序nLibrary ieee;nUse ieee.std_logic_1164.all;nUse ieee.std_logic_unsigned.all;nUse ieee.std_logic_arith.all;nEntity fdiv

12、 isn generic(n n: integer:=10; n m: integer:=3 -占空比m:n,rate=nn );n port(n clkin: IN std_logic;n clkout: OUT std_logicn );nEnd fdiv;narchitecture a of fdiv isn signal cnt: integer range 0 to n-1;nbeginn process(clkin)n beginn if(clkinevent and clkin=1) thenn if(cntn-1) thenn cnt = cnt+1;n elsen cnt =

13、 0;n end if;n end if;n end process;n n clkout = 1 when cntm elsen 0;nend a;仿真結(jié)果n從波形圖可以看到,clkout是clkin的10分頻,且占空比為3:10。n如果要產(chǎn)生其他分頻,直接修改generic類屬變量參數(shù)即可。6. 小數(shù)分頻器的設(shè)計(jì)n時(shí)鐘源與用戶所需的頻率不成整數(shù)倍關(guān)系,此時(shí)可采用小數(shù)分頻器進(jìn)行分頻。 比如,分頻系數(shù)為2.5、3.5等半整數(shù)分頻器。n設(shè)計(jì)原理:先設(shè)計(jì)兩個(gè)不同分頻比的整數(shù)分頻器,然后通過控制單位時(shí)間內(nèi)兩種分頻比出現(xiàn)的不同次數(shù)來獲得所需要的小數(shù)分頻值。 例如,10.1分頻,可以設(shè)計(jì)出9次10分頻,

14、1次11分頻,這樣總的分頻值為: F = (910+111) / (9+1) = 10.1這種實(shí)現(xiàn)方法,由于分頻器的分頻值不斷改變,因此分頻后得到的信號抖動較大,實(shí)際應(yīng)用中不常用。而當(dāng)分頻系數(shù)為N-0.5時(shí),可控制扣除脈沖的時(shí)間,而不是一次N分頻,一次N-1分頻,這樣可以得到一個(gè)穩(wěn)定的脈沖頻率。半整數(shù)分頻器(N-0.5)的設(shè)計(jì)框圖n分頻系數(shù)為N-0.5的半整數(shù)分頻器電路可由一個(gè)異或門、一個(gè)模N計(jì)數(shù)器和一個(gè)二分頻組成。異或門模N計(jì)數(shù)器f0/(N0.5)二分頻器f0/(2N1)f0半整數(shù)分頻器VHDL源程序nlibrary ieee;nuse ieee.std_logic_1164.all;nus

15、e ieee.std_logic_unsigned.all;nuse ieee.std_logic_arith.all;nENTITY fdiv ISn generic(N: integer:=5); -分頻系數(shù)N-0.5n PORT(n clkin: IN STD_LOGIC; -時(shí)鐘源n clkout: BUFFER STD_LOGIC -輸出時(shí)鐘n );nEND fdiv; nARCHITECTURE a OF fdiv ISn SIGNAL clk, div2: STD_LOGIC;n SIGNAL count: integer range 0 to N-1;nBEGINn clk =

16、 clkin XOR div2;-clkin與div2異或后作為模N計(jì)數(shù)器的時(shí)鐘n PROCESS(clk)n BEGINn IF(clkevent AND clk=1) THENn IF(count=0) THENn count = N-1;-置整數(shù)分頻值Nn clkout = 1;n ELSEn count = count-1;-模N計(jì)數(shù)器減法計(jì)數(shù)n clkout = 0;n END IF;n END IF;n END PROCESS; n PROCESS(clkout)n BEGINn IF(clkoutevent AND clkout=1) THENn div2 = NOT div2;

17、-輸出時(shí)鐘二分頻n END IF;n END PROCESS;nEND a;仿真結(jié)果n從波形圖可以看到,clkout是clkin的4.5分頻。n如果要產(chǎn)生其他分頻,直接修改generic類屬變量參數(shù)即可。任意整數(shù)分頻nLIBRARY IEEE;nUSE IEEE.STD_LOGIC_1164.ALL;nUSE IEEE.STD_LOGIC_UNSIGNED.ALL;nENTITY PULSE ISn PORT ( CLK : IN STD_LOGIC;n D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);n FOUT : OUT STD_LOGIC );nEND;nARC

18、HITECTURE one OF PULSE ISn SIGNAL FULL : STD_LOGIC;中間信號,溢出標(biāo)志信號FULLnBEGINn P_REG: PROCESS(CLK)n VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0);n BEGIN n IF CLKEVENT AND CLK = 1 THENn IF CNT8 = 11111111 THEN n CNT8 := D; -當(dāng)CNT8計(jì)數(shù)計(jì)滿時(shí),輸入數(shù)據(jù)D被同步預(yù)置給計(jì)數(shù)器CNT8 n FULL = 1; -同時(shí)使溢出標(biāo)志信號FULL輸出為高電平 n ELSE CNT8 := CNT8 + 1; -否則繼續(xù)作加1計(jì)數(shù)n FULL =

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論