在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8655|回复: 20

正沿触发3分频电路

[复制链接]
发表于 2006-10-11 00:17:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
写了个只用正沿触发的3分频电路,不知道有没有问题,请大家给点建议。

下面是源代码和仿真波形:


library ieee;
use ieee.std_logic_1164.all;

entity div3 is port(
    clk  : in std_logic;
    rst  : in std_logic;
   
    clk3 : out std_logic);
end div3;

architecture struct of div3 is
    signal A   : std_logic;
    signal B   : std_logic;
    signal Ain : std_logic;
    signal Bin : std_logic;
begin
    Ain <= (not A) and (not B);
    Bin <= A;
     
    process(clk, rst)
    begin
        if (rst = '1') then
            A <= '0';
            B <= '0';
        else
            if (clk'event and clk = '1') then
                A <= Ain;
                B <= Bin;
            end if;
        end if;
    end process;
   
    process(clk, A, B)
    begin
        -- clk3 <= (clk and B and (not A)) or (A and (not B)); -- clk3 has glitch
        clk3 <= (clk and Bin and B and (not A)) or Bin or A;   -- clk3 no glitch
    end process;
end struct;


library ieee;
use ieee.std_logic_1164.all;

entity tb_div3 is
end tb_div3;

architecture behav of tb_div3 is
    component div3 port(
        clk : in std_logic;
        rst : in std_logic;
        
        clk3 : out std_logic);
    end component;
        
    constant TCLK : time := 20 ns;
   
    signal clk  : std_logic := '0';
    signal rst  : std_logic := '1';
    signal clk3 : std_logic;
begin
    process begin
        wait for TCLK/2;
        clk <= not clk;
    end process;

    rst <= '0' after TCLK*2;
   
    u1: div3 port map(
        clk  => clk,
        rst  => rst,
        clk3 => clk3);
end behav;

div3仿真波形

div3仿真波形
发表于 2006-10-11 08:14:09 | 显示全部楼层
从波形上看,输出clk3的下降沿是和输入clk的下降沿对齐的,
搞不懂你说的只用了上升延。
从实际应用上看,无论是否采用下降沿,这样的3分频电路都会有很多问题,
因为输入clock很可能并不是占空比1:1的,
那么即使用了下降沿也无法实现1:1的三分频电路。
发表于 2006-10-11 09:20:21 | 显示全部楼层

可以实现的

一般先在时钟正沿生产序列“100”,用负沿延迟半个时钟周期,将两个结果“and”生产输出。
 楼主| 发表于 2006-10-11 13:17:59 | 显示全部楼层
谢谢!
      
      所说只用正沿,是指只使用时钟的正沿触发实现3分频电路,主要是区别于既使用时钟正沿触发、又使用时钟负沿触发实现3分频电路的方法。探讨实现奇数及小数分频的各种方法。
发表于 2006-10-11 16:33:07 | 显示全部楼层
请教:我也没明白这个波形,只在模块内部有信号变化,没有输出波形,怎么回事?这个办法好像不是很好呀,还有小数怎么分频的呀,倍频不就好了
 楼主| 发表于 2006-10-11 17:51:09 | 显示全部楼层
fiats:

           clk3 有输出波形呀,我不知道你说哪个信号没有输出波形。

          主要想法如下:

1、利用LFSR替代通常的counter,为了节省资源;
2、利用clock信号的半周期补偿奇数分频的不均衡,达到1:1占空比,为了不使用时钟的下降沿。

         小数分频主要指:1.5,2.5,3.5...的分频。可能最好只能做到4:6或6:4的占空比。
发表于 2006-10-14 11:21:38 | 显示全部楼层
时钟f很低时才可能.
 楼主| 发表于 2006-10-16 10:12:08 | 显示全部楼层
谢谢!


     能否详细说一下高f时会出现什么问题?


     使用上升沿和下降沿实现奇数分频,可能遇到的问题是:保证上升沿和下降沿同时“很陡”是否容易?

     只使用上升沿可以避免上述问题,其它信号由时钟驱动,稍微“落后”于时钟,这样其它信号正半周和时钟的

正半周运算时会有一小部分“重合”,不会形成“负”glitch。
发表于 2006-11-15 11:16:15 | 显示全部楼层
很晕!!!!!!!!!!!!!!!!!!!!!
发表于 2006-11-15 11:19:49 | 显示全部楼层
三楼的说法我觉得是对的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 04:55 , Processed in 0.027234 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表