收藏 分销(赏)

VHDL实现分频器.doc

上传人:快乐****生活 文档编号:4310313 上传时间:2024-09-05 格式:DOC 页数:3 大小:28.01KB 下载积分:5 金币
下载 相关 举报
VHDL实现分频器.doc_第1页
第1页 / 共3页
VHDL实现分频器.doc_第2页
第2页 / 共3页


点击查看更多>>
资源描述
在数字电路中,常需要对较高频率的时钟进行分频操作,得到较低频率的时钟信号。我们知道,在硬件电路设计中时钟信号时非常重要的。     下面我们介绍分频器的VHDL描述,在源代码中完成对时钟信号CLK的2分频,4分频,8分频,16分频。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY clkdiv IS          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       SIGNAL count : 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分频的分频器。 ENTITY clkdiv IS          PORT(clk        : IN STD_LOGIC;      clk_div6    : OUT STD_LOGIC); END clk_div; ARCHITECTURE rtl OF clk_div IS       SIGNAL count     : STD_LOGIC_VECTOR(1 DOWNTO 0);       SIGNAL clk_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,也就是说,其中高电位的脉冲宽度为输入时钟信号的一个周期。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY clkdiv IS          PORT(clk        : IN STD_LOGIC;      clk_div16   : OUT STD_LOGIC); END clk_div; ARCHITECTURE rtl OF clk_div IS       SIGNAL count : 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;
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服