分频器的VHDL描述
2012-06-02
标签:

在数字电路中,常需要对较高频率的时钟进行分频操作,得到较低频率的时钟信号。我们知道,在硬件电路设计中时钟信号时非常重要的。

下面我们介绍分频器的VHDL描述,在源代码中完成对时钟信号CLK的2分频,4分频,8分频,16分频。

LIBRARYIEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYclkdivIS

PORT(clk: IN STD_LOGIC;

clk_div2: OUT STD_LOGIC;

clk_div4: OUT STD_LOGIC;

clk_div8: OUT STD_LOGIC;

clk_div16: OUT STD_LOGIC);

END clk_div;

ARCHITECTURE rtl OF clk_div IS

SIGNALcount : STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

PROCESS(clk)

BEGIN

IF (clk’event AND clk=’1’) THEN

IF(count=”1111”) THEN

Count <= (OTHERS =>’0’);

ELSE

Count <= count +1;

END IF ;

END IF ;

END PROCESS;

clk_div2 <= count(0);

clk_div4 <= count(1);

clk_div8 <= count(2);

clk_div16 <= count(3);

END rtl;

对于分频倍数不是2的整数次幂的情况,我们只需要对源代码中的计数器进行一下计数控制就可以了,如下面源代码描述一个对时钟信号进行6分频的分频器。

ENTITYclkdivIS

PORT(clk: IN STD_LOGIC;

clk_div6: OUT STD_LOGIC);

END clk_div;

ARCHITECTURE rtl OF clk_div IS

SIGNALcount: STD_LOGIC_VECTOR(1 DOWNTO 0);

SIGNALclk_temp: STD_LOGIC;

BEGIN

PROCESS(clk)

BEGIN

IF (clk’event AND clk=’1’) THEN

IF(count=”10”) THEN

count <= (OTHERS =>’0’);

clk_temp <=NOT clk_temp;

ELSE

count <= count +1;

END IF ;

END IF ;

END PROCESS;

clk_div6 <= clk_temp;

END rtl;

前面两个分频器的例子描述的将时钟信号进行分频,分频后得到的时钟信号的占空比为1:1。在进行硬件设计的时候,往往要求得到一个占空比不是1:1的分频信号,这时仍采用计数器的方法来产生占空比不是1:1的分频信号。下面源代码描述的是这样一个分频器:将输入的时钟信号进行16分频,分频信号的占空比为 1:15,也就是说,其中高电位的脉冲宽度为输入时钟信号的一个周期。

LIBRARYIEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYclkdivIS

PORT(clk: IN STD_LOGIC;

clk_div16: OUT STD_LOGIC);

END clk_div;

ARCHITECTURE rtl OF clk_div IS

SIGNALcount : STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

PROCESS(clk)

BEGIN

IF (clk’event AND clk=’1’) THEN

IF(count=”1111”) THEN

Count <= (OTHERS =>’0’);

ELSE

Count <= count +1;

END IF ;

END IF ;

END PROCESS;

PROCESS(clk)

BEGIN

IF (clk’event AND clk=’1’) THEN

IF(count=”1111”) THEN

Clk_div16 <= ‘1’;

ELSE

Clk_div <= ‘0’;

END IF ;

END IF ;

END PROCESS;

END rtl;

对于上述源代码描述的这种分频器,在硬件电路设计中应用十分广泛,设计人员常采用这种分频器来产生选通信号、中断信号和数字通信中常常用到的帧头信号等。

可能会用到的工具/仪表
相关文章
推荐文章
热门文章
章节目录
本站简介 | 意见建议 | 免责声明 | 版权声明 | 联系我们
CopyRight@2024-2039 嵌入式资源网
蜀ICP备2021025729号