利用可编程器件实现小数分频

上一篇 / 下一篇  2006-08-22 08:08:18 / 天气: 晴朗 / 心情: 高兴 / 个人分类:Backup

   在数字电路中,分频器是一种基本电路。分频器通常用来对某个给定频率进行分频,得到所需的频率。整数分频器的实现非常简单,可采用标准的计数器,也可采用可编程逻辑器件设计实现。在某些场合下,时钟源与所需的频率不成整数倍关系,此时可采用小数分频器进行分频。


6Aa[6Ma(I2BS{+\zh0 

    例如:要实现分频系数为2.5的分频器,可采用以下方法:设计一个模为3的计数器,再设计一个脉冲扣除电路,加在模3计数器输出之后,每来两个脉冲就扣除一个脉冲,就可以得到分频系数为2.5的小数分频器。采用类似方法,可以设计分频系数为任意半整数的分频器。

EDA中国门户网站H1j|"T^k*AY
 

    小数分频的基本原理是:采用脉冲吞吐计数,设计两个不同分频比的整数分频器,通过控制单位时间内两种分频比出现的次数,从而获得所需的小数分频值。例如,设计一个分频系数为10.1的分频器,可以将分频器设计成9次10分频,1次11分频,这样总的分频值为:

EDA中国门户网站_+nM&m#}-\T2k_
 

    (9×10+1×11)/(9+1)=10.1   


x r1{!G0\r-R0 

    从这种实现方法的特点可以看出,由于分频器的分频值在不断改变,因此分频后得到的信号抖动大。

EDA中国门户网站 gKD;m5h
 

    当分频系数为N-0.5(N为整数)时,可控制扣除脉冲的时间,使输出为一个稳定的脉冲频率,而不是一次N分频,一次N-1分频。

EDA中国门户网站b~/L(XCS-m
 

    设需要设计一个分频系数为N-0.5的分频器,其电路可由一个模N计数器、二分频器和一个异或门组成,如图1所示:

EDA中国门户网站/X*C&i}U+[#Z^"vR
 

   


)~HY'en8~ \q0 

     图1:小数分频原理图


9F _D.j:x-}e0 

 


(f5tw)`;d$HUt)d0 

    在实现时,模N计数器可设计成带预置的计数器,这样就可以实现任意分频系数为N-0.5的分频器。  


s!L~7GRDv0 

    VHDL程序:


uvZjP/o L0 

    library ieee;


&Xz*Co*Df6s0 

    use ieee.std_logic_1164.all;

EDA中国门户网站0LGKSsoo
 

    use ieee.std_logic_unsigned.all;


$^ofp/gy"l0 

    use ieee.std_logic_arith.all;


:c;p3P@x0 

    entity fen25 is


T$]/O5]c#CG!qa0 

    port

EDA中国门户网站fZ6Y}fNMQ-?d%h
 

    (clk:in std_logic;


$Q3[E_(]@G?0 

     qout1:buffer std_logic; 

EDA中国门户网站cc0Z1l5~'i|-ix];h
 

     qout2:buffer std_logic; 

EDA中国门户网站 jUJr h L_e,B+uu
 

     clkout:out std_logic


^.u h#Sg(wyp0R0 

    );


,m$S9B u]:Z0 

    end fen25;


0lEujhn,D0 

    architecture behave of fen25 is


d T2v%pr4b0 

    constant counter_len:integer:=3;                 --模参数设置

EDA中国门户网站/~$|l~7G~rp\
 

    signal clk_tem:std_logic;

EDA中国门户网站rB;IV%o&V4j\#p
 

    begin


\~5l3Jso.~Ax*d0 

    qout1<=clk xor qout2;                          --异或  

EDA中国门户网站"w ogDM8z
 

    process(qout1)                                 --模为3的计数器

EDA中国门户网站n.]p @#b9N9h
 

    variable cnt:integer range 0 to counter_len-1; 

EDA中国门户网站ek9GF4x
 

    begin   

EDA中国门户网站 \J9D R"@ Np
 

      if qout1'event and qout1='1' then      

EDA中国门户网站0C.{hh7Fs
 

         if cnt=counter_len-1 then         


?9R W$wOT r$`2soI:M0 

            cnt:=0;         

EDA中国门户网站&H'HJ*g7U+c4k5M'J
 

            clk_tem<='1';         

EDA中国门户网站&J7~l^ SI
 

            clkout<='1';      

EDA中国门户网站H u!t"|m2j4o
 

         else         


qo-VsY;i:G#d)h(~0 

            cnt:=cnt+1;         

EDA中国门户网站9@Imq5R
 

            clk_tem<='0';         

EDA中国门户网站7L$\;B1G8Q"}Hl
 

            clkout<='0';      

EDA中国门户网站!F.f ?7o%cTt%o B$o5D0?hp
 

         end if;   


%dfKv~1T8GGV3SR0 

      end if; 


-]^B+P-r+U)l~D P0 

    end process;   

EDA中国门户网站a-i9C^:t0^2gK;dz
 

    process(clk_tem)                               --二分频器 


2Z+F+Q+fX#[9uq0 

    variable tem:std_logic; 


L"r!QlF l0 

    begin   


}Dgy |@7tN,I^F-s0 

      if clk_tem'event and clk_tem='1' then      

EDA中国门户网站 s[t!Weoio
 

         tem:=not tem;   

EDA中国门户网站l~T tVo
 

      end if;   


kAAJAG8X0 

      qout2<=tem; 

EDA中国门户网站} j6G]S a G
 

    end process;  

EDA中国门户网站#l\N bC d+MM
 

    end behave;


(qWhlv#U nky0 

   

EDA中国门户网站7W{h"_S W{
 

     图2:生成的图形文件


a"g0N9Zb;XH E4N)\0 

   

EDA中国门户网站2Pt9LZ0D-V^5J6CC
 

     图3:仿真波形


TAG: EDA

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-09-03  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 8633
  • 日志数: 96
  • 建立时间: 2006-08-07
  • 更新时间: 2007-06-30

RSS订阅

Open Toolbar