1、单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,基于,VHDL,的分频电路,分频电路介绍,CPLD/FPGA,与单片机相比,一个明显得优势就在于它的高速性。但很多外围器件的驱动都需要低频的时钟(若时钟频率太高,则键盘扫描就会出错,七段数码管会闪烁和不稳定就是最好的例子),所以经常需要用到分频电路。常见的分频电路为偶数倍分频和奇数倍分频两种。下面对,8,分倍分频电路用,VHDL,做简单介绍。,方案设计,如果系统有一个,200KHz,的时钟,系统要求将其分为,100KHz,,,50KHz,,,25KHz,,并且在这,4,个频率时钟中选择一个作为输出。下面给出
2、两种设计方案:,1.,设计一个,2,分频电路、一个,4,分频电路、一个,8,分频电路,直接从,200KHz,分频到所需要的几个频率的时钟信号(如图,1,所示)。,2.,只设计一个,2,分频电路,用,3,个,2,分频电路级联的方式,从,200KHz,逐级分出所需要的时钟信号(如图,2,所示)。,图,1,图,2,下面用,VHDL,设计一个,2,分频电路:,library ieee;,use ieee.std_logic_1164.all;,entity FreDevider is,port,(clock:in std_logic;,clockout:out std_logic,);,end;/,元
3、件端口,architecture behavior of FreDevider is /,元件行为描述,signal clk:std_logic;,begin,process(clock),begin,if rising_edge(clock)then,clk=not clk;,end if;,end process;,clockout=clk;,end;,library ieee;,use ieee.std_logic_1164.all;,entity fredevider2 is,port(,clock:in std_logic;,clockout:out std_logic,);,end;,architecture dcider of fredevider2 is,constant N:integer:=3;,signal counter:integer range 0 to N;,signal clk:std_logic;,begin,process(clock),begin,if rising_edge(clock)then,if counter=N then,counter=0;,clk=not clk;,else,counter=counter+1;,end if;,end if;,end process;,clockout=clk;,end;,