微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 计数器产生的门控时钟问题

计数器产生的门控时钟问题

时间:10-02 整理:3721RD 点击:
计数器产生的门控时钟问题
设计中需要由计数器产生一个时钟供后级电路使用,计数器将一个全局时钟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还是不稳定,求消除门控时钟的正解!

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%,应该是没有问题的。

不稳定是什么意思?你的主频是多少,是不是时序的问题。

整不明白啥意思?不行就换个思路撒

LZ的意思应该是想问用分频后的a直接作为后面寄存器的时钟是不是不稳定,
其实用分频后的a作为时钟也是可以的,但此时你的设计中就出现了两个时钟域,在做后面的流程时相对一个时钟域就会复杂一些,但这种设计方法肯定是可以的。
其实可以换个思路,还是用同一个时钟,只不过把a当作使能信号,这样的方法是不是更好些,可以给后端的流程带来很多的方便。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top