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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 8479|回复: 14

麻烦各路高手不吝赐教!!!有关门控时钟和行波时钟

[复制链接]
发表于 2009-8-5 15:02:16 | 显示全部楼层 |阅读模式

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

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

x
麻烦各位指点一下:
我的设计中做了一个分频器,时钟分频后送输出管脚,其它硬件电路送时钟,但是在分频器编译过程中说产生了门控时钟或着行波时钟,
我查资料说,门控时钟影响系统稳定性,前级分频不能做后级的时钟,但是我的分频是直接输出了,
请问我这样做,如果不对这个门控时钟处理的话,会不会影响系统可靠性呢????????????


设计是采用altera的EP2C8T144,开发环境Q7.0,目的是输入时钟12M,锁相环倍频后24M,在通过计数器产生CCD所需各种时序,送给AD的像元时钟DATACLK,该时钟为1M,在分频过程中产生了门控时钟。
 楼主| 发表于 2009-8-5 15:10:03 | 显示全部楼层

补充:

下面DATACLK产生代码,两个计数器cnt_1M和cnt_LS都是通过24M分频至8M(采用时钟使能设计),再通过8M计数产生。
     DATACLKS:process(clk24M,rst_state)
      begin
      if clk24M'event and clk24M='1' then
         if rst_state='0' then
            DATACLK<='0';
           else
                if MODE="00" then
                   if ((cnt_total>="0000000000000") and (cnt_total<"0000000000000"+1120)) then
                       DATACLK<='1';
                   elsif cnt_1M="000" or cnt_1M="001" or cnt_1M="010" or cnt_1M="011" then
                       DATACLK<='0';
                   else
                       DATACLK<='1';
                   end if;
                elsif MODE="01" then
                   if ((cnt_total>="0000000000000") and (cnt_total<"0000000000000"+880)) then
                      DATACLK<='0';
                   elsif cnt_LS="1100" or cnt_LS="1101" or cnt_LS="1110" or cnt_LS="1111" then
                      DATACLK<='1';
                   else
                      DATACLK<='0';
                   end if;
                elsif MODE="10" then
                   if ((cnt_total>="00000000000000") and (cnt_total<"00000000000000"+1640)) then
                       DATACLK<='1';
                   elsif cnt_1M="000" or cnt_1M="001" or cnt_1M="010" or cnt_1M="011" then
                       DATACLK<='0';
                   else
                       DATACLK<='1';
                   end if;
                elsif MODE="11" then
                   if ((cnt_total>="00000000000000") and (cnt_total<"00000000000000"+1840)) then
                      DATACLK<='0';
                   elsif cnt_LS="1100" or cnt_LS="1101" or cnt_LS="1110" or cnt_LS="1111" then
                      DATACLK<='1';
                   else
                      DATACLK<='0';
                   end if;
               end if;
          end if;
     end if;
end process DATACLKS;


这是warning:Warning: Found 1 node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew
Info: Detected ripple clock "CCD_Driver:inst|DATACLK" as buffer
发表于 2009-8-5 15:59:29 | 显示全部楼层
我也很水,只会verilog,
弱弱的问一句, 你以上的条件表达式中的条件判断‘=’表示相等还是赋值?
我知道verilog是‘==’
 楼主| 发表于 2009-8-5 16:10:58 | 显示全部楼层
“=”是相等的意思,信号赋值用<=,变量赋值用:=
发表于 2009-8-5 16:11:02 | 显示全部楼层
分频后的信号在综合时不走全局时钟网络,只会把它当成信号来处理,如果用作时钟的话就会产生时钟歪斜。

一般不要用自己写的分频程序产生的信号作为其它模块的时钟。

你的频率不是很高,可以先不管警告,直接调试看看。

如果要解决这个问题你可以用PLL模块做,如果没有(如一些CPLD)就用时钟使能方式实现吧。
 楼主| 发表于 2009-8-5 16:13:52 | 显示全部楼层


原帖由 skytang007 于 2009-8-5 16:11 发表
分频后的信号在综合时不走全局时钟网络,只会把它当成信号来处理,如果用作时钟的话就会产生时钟歪斜。

一般不要用自己写的分频程序产生的信号作为其它模块的时钟。

你的频率不是很高,可以先不管警告,直接调 ...




您好!
我的分频后的时钟直接送到输出脚了,而没有钟控其它模块,请问这样的话,也会影响系统的可靠性吗??
发表于 2009-8-5 16:30:52 | 显示全部楼层
不是时钟怎么会报时钟的warning,你再看看电路图中的那条路径呢?
 楼主| 发表于 2009-8-5 16:53:46 | 显示全部楼层
这是有关DATACLK走线的RTL图,两张图左右拼接就行了,

rf

rf
 楼主| 发表于 2009-8-5 16:56:01 | 显示全部楼层
该图接上图左侧
2.JPG
 楼主| 发表于 2009-8-5 16:58:08 | 显示全部楼层
上图的触发器ENA端接的是总时钟24M
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-23 21:06 , Processed in 0.050065 second(s), 10 queries , Gzip On, Redis On.

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