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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

2、輸入時鐘的2的N次冪分頻。將相應的位數(shù)取出即可得到分頻時鐘。,二進制分頻器的VHDL源程序,Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Use ieee.std_logic_arith.all; Entity fdiv is generic(N: integer:=3); -rate=2N,N為正整數(shù) port( clkin: IN std_logic; clkout: OUT std_logic ); End fdiv;,Architecture a of fdiv is signal

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

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

5、ic ); End fdiv;,Architecture a of fdiv is signal cnt: integer range 0 to n-1; Begin process(clkin) -計數(shù) begin if(clkinevent and clkin=1) then if(cntn-1) then cnt = cnt+1; else cnt = 0; end if; end if; end process; process(cnt) -根據(jù)計數(shù)值,控制輸出時鐘脈沖的高、低電平 begin if(cntn/2) then clkout = 1; else clkout = 0; e

6、nd if; end process; End a;,偶數(shù)分頻器的VHDL源程序(2),Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Use ieee.std_logic_arith.all; Entity fdiv is generic(N: integer:=6); -rate=N,N是偶數(shù) port( clkin: IN std_logic; clkout: OUT std_logic ); End fdiv;,Architecture a of fdiv is signal cnt

7、: integer range 0 to n/2-1; signal temp: std_logic; Begin process(clkin) begin if(clkinevent and clkin=1) then if(cnt=n/2-1) then cnt = 0; temp = NOT temp; else cnt = cnt+1; end if; end if; end process; clkout = temp; End a;,仿真結果,從波形圖可以看到,clkout是clkin的6分頻。 如果要產(chǎn)生其他分頻,直接修改generic類屬變量參數(shù)即可。,4. 奇數(shù)分頻器的設計,

8、rate=odd(奇數(shù)),占空比50% 設計原理: 定義兩個計數(shù)器,分別對輸入時鐘的上升沿和下降沿進行計數(shù),然后把這兩個計數(shù)值輸入一個組合邏輯,用其控制輸出時鐘的電平。 這是因為計數(shù)值為奇數(shù),占空比為50%,前半個和后半個周期所包含的不是整數(shù)個clkin的周期。例如,5分頻,前半個周期包含2.5個clkin周期,后半個周期包含2.5個clkin周期。,奇數(shù)分頻器的VHDL源程序,Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Use ieee.std_logic_arith.all; Ent

9、ity fdiv is generic(N: integer:=5); -rate=N,N是奇數(shù) port( clkin: IN std_logic; clkout: OUT std_logic ); End fdiv;,architecture a of fdiv is signal cnt1, cnt2: integer range 0 to N-1; begin process(clkin) begin if(clkinevent and clkin=1) then -上升沿計數(shù) if(cnt1N-1) then cnt1 = cnt1+1; else cnt1 = 0; end if;

10、 end if; end process;,process(clkin) begin if(clkinevent and clkin=0) then -下降沿計數(shù) if(cnt2N-1) then cnt2 = cnt2+1; else cnt2 = 0; end if; end if; end process; clkout = 1 when cnt1(N-1)/2 or cnt2(N-1)/2 else 0; end a;,仿真結果,從波形圖可以看到,clkout是clkin的5分頻。 如果要產(chǎn)生其他分頻,直接修改generic類屬變量參數(shù)即可。,5. 占空比可調(diào)的分頻器的設計,占空比為m

11、:n 設計原理: 定義一個計數(shù)器,對輸入時鐘脈沖進行計數(shù)。根據(jù)計數(shù)值來判斷輸出高電平還是低電平。例如,占空比為3:10的偶數(shù)分頻器,當計數(shù)值為02時,輸出高電平;當計數(shù)值為39時,輸出低電平。,占空比可調(diào)的分頻器VHDL源程序,Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_unsigned.all; Use ieee.std_logic_arith.all; Entity fdiv is generic( n: integer:=10; m: integer:=3 -占空比m:n,rate=n ); port( cl

12、kin: IN std_logic; clkout: OUT std_logic ); End fdiv;,architecture a of fdiv is signal cnt: integer range 0 to n-1; begin process(clkin) begin if(clkinevent and clkin=1) then if(cntn-1) then cnt = cnt+1; else cnt = 0; end if; end if; end process; clkout = 1 when cntm else 0; end a;,仿真結果,從波形圖可以看到,clk

13、out是clkin的10分頻,且占空比為3:10。 如果要產(chǎn)生其他分頻,直接修改generic類屬變量參數(shù)即可。,6. 小數(shù)分頻器的設計,時鐘源與用戶所需的頻率不成整數(shù)倍關系,此時可采用小數(shù)分頻器進行分頻。 比如,分頻系數(shù)為2.5、3.5等半整數(shù)分頻器。 設計原理: 先設計兩個不同分頻比的整數(shù)分頻器,然后通過控制單位時間內(nèi)兩種分頻比出現(xiàn)的不同次數(shù)來獲得所需要的小數(shù)分頻值。 例如,10.1分頻,可以設計出9次10分頻,1次11分頻,這樣總的分頻值為: F = (910+111) / (9+1) = 10.1 這種實現(xiàn)方法,由于分頻器的分頻值不斷改變,因此分頻后得到的信號抖動較大,實際應用中不常用

14、。 而當分頻系數(shù)為N-0.5時,可控制扣除脈沖的時間,而不是一次N分頻,一次N-1分頻,這樣可以得到一個穩(wěn)定的脈沖頻率。,半整數(shù)分頻器(N-0.5)的設計框圖,分頻系數(shù)為N-0.5的半整數(shù)分頻器電路可由一個異或門、一個模N計數(shù)器和一個二分頻組成。,半整數(shù)分頻器VHDL源程序,library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; ENTITY fdiv IS generic(N: integer:=5); -分頻系數(shù)N-0.5 PORT(

15、clkin: IN STD_LOGIC; -時鐘源 clkout: BUFFER STD_LOGIC -輸出時鐘 ); END fdiv;,ARCHITECTURE a OF fdiv IS SIGNAL clk, div2: STD_LOGIC; SIGNAL count: integer range 0 to N-1; BEGIN clk = clkin XOR div2;-clkin與div2異或后作為模N計數(shù)器的時鐘 PROCESS(clk) BEGIN IF(clkevent AND clk=1) THEN IF(count=0) THEN count = N-1;-置整數(shù)分頻值N

16、clkout = 1; ELSE count = count-1;-模N計數(shù)器減法計數(shù) clkout = 0; END IF; END IF; END PROCESS;,PROCESS(clkout) BEGIN IF(clkoutevent AND clkout=1) THEN div2 = NOT div2;-輸出時鐘二分頻 END IF; END PROCESS; END a;,仿真結果,從波形圖可以看到,clkout是clkin的4.5分頻。 如果要產(chǎn)生其他分頻,直接修改generic類屬變量參數(shù)即可。,任意整數(shù)分頻,LIBRARY IEEE; USE IEEE.STD_LOGIC_1

17、164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PULSE IS PORT ( CLK : IN STD_LOGIC; D : IN STD_LOGIC_VECTOR(7 DOWNTO 0); FOUT : OUT STD_LOGIC ); END; ARCHITECTURE one OF PULSE IS SIGNAL FULL : STD_LOGIC;中間信號,溢出標志信號FULL BEGIN P_REG: PROCESS(CLK) VARIABLE CNT8 : STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN IF CLKEVENT AND CLK = 1 THEN IF CNT8 = 11111111 THEN CNT8 := D; -當CNT8計數(shù)計滿時,輸入數(shù)據(jù)D被同步預置給計數(shù)器CNT8 FULL = 1; -同時使溢出標志信號FULL輸出為高電平 ELSE CNT8 := CNT8 + 1; -否則繼續(xù)作加1計數(shù) F

溫馨提示

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

評論

0/150

提交評論