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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4098|回复: 4

[求助] 计数器产生的门控时钟问题

[复制链接]
发表于 2011-7-20 08:04:42 | 显示全部楼层 |阅读模式

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

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

x
计数器产生的门控时钟问题
设计中需要由计数器产生一个时钟供后级电路使用,计数器将一个全局时钟rdy_60分频,当reg_zip=cnt时产生一个脉冲a,使用a做为时钟驱动后级!基本代码如下:

process(rdy_60,reg_zip)
begin
if(rdy_60'event and rdy_60='1')then
if(reg_zip=cnt)then
    cnt<="0000000000000001";
    a<='1';
   else
     cnt<=cnt+'1';
     a<='0';
   end if;
end if;  

由于a为门控时钟,直接使用a驱动后级电路会给后级电路带了很多不稳定的因素,因此将a做为触发器的使能端,来产生一个由全局时钟rdy_60得到的稳定时钟b,增加的代码如下:
if(rdy_60'event and rdy_60='1')then
if(a='1')then
    b<='1';
         else
         b<='0';
end if;
end if;

可能是我的第二个代码写法不对,b还是不稳定,求消除门控时钟的正解!!!
发表于 2011-7-20 09:31:51 | 显示全部楼层
1.这里的不稳定是什么意思?
2.b和a完全一样,也是门控时钟。
3.如果是FPGA,后段电路还是以rdy_60作为时钟,a作为使能端来用:
    if(rdy_60'event and rdy_60='1')then
      if(a='1')then
        ........
      end if;
    end if;
    如果是ASIC,把a的占空比调到接近50%,应该是没有问题的。
发表于 2011-7-20 09:58:39 | 显示全部楼层
不稳定是什么意思?你的主频是多少,是不是时序的问题。
发表于 2011-7-23 13:07:40 | 显示全部楼层
整不明白啥意思?不行就换个思路撒
发表于 2011-7-23 23:41:59 | 显示全部楼层
LZ的意思应该是想问用分频后的a直接作为后面寄存器的时钟是不是不稳定,
其实用分频后的a作为时钟也是可以的,但此时你的设计中就出现了两个时钟域,在做后面的流程时相对一个时钟域就会复杂一些,但这种设计方法肯定是可以的。
其实可以换个思路,还是用同一个时钟,只不过把a当作使能信号,这样的方法是不是更好些,可以给后端的流程带来很多的方便。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-23 05:27 , Processed in 0.020876 second(s), 8 queries , Gzip On, Redis On.

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