查看: 673|回复: 0

[经验] 错误使用派生时钟对逻辑时序的影响

[复制链接]

该用户从未签到

发表于 2020-12-24 22:54:20 | 显示全部楼层 |阅读模式
分享到:

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

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

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

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

  1. <p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">always @( posedge CLK48M )</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">         begin</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">                   CLKDIV<= CLKDIV + 1;                            //clock divider</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">         end</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">always @(posedge CLKDIV[5])        </p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">         begin</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">                   MCLKB3<= MCLK_EXT;</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">                   MCLKB2<= MCLKB3;</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">                   MCLKB<= MCLKB2;</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">                   MCLK<= MCLKB | MCLKB2 | MCLKB3;</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">         End</p>
复制代码

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

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

修改代码后如下:

  1. <p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">always @( posedge CLK48M )</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">         begin</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">                   CLKDIV<= CLKDIV + 1;                            //clock divider</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">                   if(CLKDIV == 6'b100000)</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">                            begin</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">                                     MCLKB3<= MCLK_EXT;</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">                                     MCLKB2<= MCLKB3;</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">                                     MCLKB<= MCLKB2;</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">                                     MCLK<= MCLKB | MCLKB2 | MCLKB3;</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">                            end</p><p style="line-height: 28px; color: rgb(51, 51, 51); font-family: " microsoft="" yahei";"="">         end</p>
复制代码

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

Info: Clock "CLK48M" has Internalfmax 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]"之间的路径决定的。后面再继续针对该网络做优化。

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


回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

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



手机版|小黑屋|与非网

GMT+8, 2024-11-23 08:27 , Processed in 0.114625 second(s), 15 queries , MemCache On.

ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

苏公网安备 32059002001037号

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.