原创 错误使用派生时钟对逻辑时序的影响

2011-11-7 15:58 2437 21 28 分类: 消费电子

项目代码编译后打印如下信息:

Info: Clock "CLK48M" has Internal fmax of 67.47 MHz between source register "GLUE_LGC:glue|MCLK" and destination register "img_lgc:img|N2DSP" (period= 14.822 ns)

 

信号由MCLK到N2DSP这条通道限定了时针的最高速度只能到67.47MHz。

 

查看相关代码中存在如下代码段:

always @( posedge CLK48M )

         begin

                   CLKDIV <= CLKDIV + 1;                            //clock divider

         end

always @(posedge CLKDIV[5])       

         begin

                   MCLKB3 <= MCLK_EXT;

                   MCLKB2 <= MCLKB3;

                   MCLKB <= MCLKB2;

                   MCLK <= MCLKB | MCLKB2 | MCLKB3;

         End

 

该代码段是对MCLK_EXT做一个简单的防抖处理,相当于使用CLK48M衍生的一个时钟CLKDIV[5]。

 

MCLK在其它模块中又使用CLK48M系统时钟做了一次锁存,于是相当于在两个CLK48M时钟之间要完成CLKDIV[5]的转换,再用CLKDIV[5]的上升沿去触发MCLK的转换,再输出到目的寄存器。此过程占用时间较长,而CLKDIV[5]所耗的时间显然是多余的。

 

修改代码后如下:

always @( posedge CLK48M )

         begin

                   CLKDIV <= CLKDIV + 1;                            //clock divider

                   if (CLKDIV == 6'b100000)

                            begin

                                     MCLKB3 <= MCLK_EXT;

                                     MCLKB2 <= MCLKB3;

                                     MCLKB <= MCLKB2;

                                     MCLK <= MCLKB | MCLKB2 | MCLKB3;

                            end

         end

 

两个从逻辑功能上看是一样的,但修改后因为只使用CLK48M时钟,逻辑都是以CLK48M为触发时钟,省去了一级触发器的延时,于是大大缩短了从源到目的寄存器的延时。提高了最高时钟速率。编译后打印CLK48M系统时钟最高频率信息如下:

 

Info: Clock "CLK48M" has Internal fmax of 77.08 MHz between source register "img_lgc:img|DATABUF[13]" and destination register "img_lgc:img|CAM_D[6]" (period= 12.974 ns)

 

可以看到CLK48M最高频率可以达到77.08M,这个频率是由"img_lgc:img|DATABUF[13]"到"img_lgc:img|CAM_D[6]"之间的路径决定的。后面再继续针对该网络做优化。

 

这种使用衍生时钟的方法是很多人逻辑设计中存在的错误(因为对时序影响非常严重,所以这里称它为一个错误也不为过),因为比较有典型性,所以特意整理了一下,希望引起初级逻辑工程师的注意。

PARTNER CONTENT

文章评论7条评论)

登录后参与讨论

用户1454308 2016-6-2 09:04

Good

用户1678053 2016-5-31 09:49

看看

用户1187092 2012-2-10 16:12

要分频时钟用DCM

用户1482414 2011-11-11 11:33

要得到派生时钟最好采用专门的时钟模块(如Xilinx的DCM, Altera的PLL) 以报证时钟网络的路径均衡

用户1406868 2011-11-9 10:52

敏感列表内使用非时钟信号在一些老版本的综合工具内是直接判断为错误的

用户1602177 2011-11-7 16:01

谢谢分享,学习一下

用户1528479 2011-11-7 15:44

always @(posedge CLKDIV[5]) 一般来说,这样的用法在 时序要求比较高的逻辑设计中是应该禁止使用的。 不过,虽然不用这样方式可以在一定程度上缩短其“关键路径”,从而 可提高时钟频率,但这并不能作为禁止使用分频方式来产生时钟信号的主要 原因。主要原因还是:通过这种分频方式得来的“时钟”是非常不可 信(不可靠)的。
相关推荐阅读
张进东 2016-05-15 23:53
航程第一站抵达
我们惊帆科技第一次融资的所有资金已经到位,这对我们来说是一个里程碑式的节点,我们到达了航程中的第一个港口,目前物资补充结束,而且航船已经进行了修缮和扩建,船员也正在增加中。再进行一些必要的调整和补...
张进东 2016-03-26 09:28
E乱情迷(上)
第一次做电路板是读高中的时候,从每周20块钱的生活费里省下一半来买元器件和材料。那样纠结着做出了自己的第一块电路板。敷铜板,透明胶带,三氯化铁,松香,焊条,现在想来还带着那么一种让人难以释怀的亲热...
张进东 2016-03-21 11:16
永不停息的红舞步(二)-4
    2014年10月2日,是我和老婆第一个结婚纪念日,我们决定拿出5000元钱来启动这个项目,做一些学习板送给生活条件差些的在校生。后来我把想法发到博客里,得到40多位工程师和一些老板的支...
张进东 2016-03-21 11:12
永不停息的红舞步(二)-2
    2012年6月,我和两个同学在北京天通苑附近注册了一个公司,办公地点在主要做图像处理方面的项目开发,为规模较大而研发力量不足的公司提供方案或成品电路板。前面之所以说“清华的恩师”,是因为除...
张进东 2016-03-21 11:09
永不停息的红舞步(二)-1
    时光如白驹过隙,转眼就是六年。上次更新这篇文章还是在2010年初。之前提到我从2009年进入清华大学的实验室,协助实验室的老师实现研究成果的产品化。我是实验室里唯一做硬件的,主要负责硬件设...
张进东 2016-03-18 00:50
永不停息的红舞步(二)-3
我很庆幸,2014年,我遇到了仿佛冥冥中注定的“取经人”,开始了让自己甘愿为它付出一切的事业,也就是我们现在在做的智能健康监测。回顾以前,一直到现在,我想可以结合我做的事情介绍一下我对电子这个行业...
EE直播间
更多
我要评论
7
21
关闭 站长推荐上一条 /3 下一条