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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4758|回复: 18

[求助] 诚心求教一个用延时的时钟采样的设计

[复制链接]
发表于 2015-2-27 10:23:07 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 xiaoyeah 于 2015-2-27 13:52 编辑

我做的项目里有这么一处特殊的设计,有一个spi端口的输入时钟sck,将这个sck延时了若干ns产生出了sck_d,用sck触发产生了信号A,A经过了一个组合逻辑产生信号B,这个信号B需要被sck_d相对于sck的同一个沿采样,想请教各位后端高手:
1.这个时钟的延时应该怎么实现呢?我尝试写了很多inverter,但综合时貌似被优化掉了
2.在做综合和STA时,应该怎么设置来检查timing,保证A经过组合逻辑后能被sck_d准确采样呢?或者说工具能不能检查这种特殊的采样呢


这个问题困扰我很久了,诚心求教,感激涕零!下图为该设计的时序图


时序.jpg
发表于 2015-2-27 11:21:28 | 显示全部楼层
在可约束设计中,是禁止这么去设计电路的
这里,有一个关键时钟sck_d,在约束文件里是很难被准确创建的,它相对于sck的相位延迟存在很大的不确定性
建议使用sck的上升沿产生信号A,然后再使用sck的下降沿去采用其逻辑输出
 楼主| 发表于 2015-2-27 14:00:04 | 显示全部楼层
回复 2# jun_dahai


   谢谢大神的回答!是这样的,那个sck的最后一拍是只有上升沿,没有下降沿的,所以只能用sck的delay来采样数据。
看了您的回复,觉得可能是没法通过工具来检查了。我打算在做STA的时候,把sck和sck_d设为false_path。然后在做CTS的时候,在sck和sck_d间插入尽可能多的buffer,您看这样可行吗?
发表于 2015-2-27 14:54:55 | 显示全部楼层
这些东西用数字逻辑实现很不稳定,不建议使用。
发表于 2015-2-27 15:52:24 | 显示全部楼层
回复 3# xiaoyeah


    如果你非要这么设计,在门级网表后期处理是可以的
    但是针对工艺的影响,建议留有更大的延迟余量,在sck和sck_d之间,进而提高产品良率
    不过作为一名严谨的研发人员,你这种设计方法不提倡
    结合我个人的经验,应该是存在别的方式,能够达到你的要求的,你不妨再仔细考虑一下
 楼主| 发表于 2015-2-27 16:02:53 | 显示全部楼层
回复 5# jun_dahai

多谢耐心的回答。该设计从纯逻辑角度来讲,确实很难有更好的办法。但我觉得您说的很对,用数字后端的方式去调节那个延时,确实存在不确定性。我在考虑将sck通过数字端口引出来,用模拟电路的方式去实现这个延时,然后再通过端口引回数字电路部分,不知这样是否能够更加可控?
谢谢!
发表于 2015-2-27 16:29:14 | 显示全部楼层
回复 6# xiaoyeah


    有一个折中的方法:
    比如,使用STDCell组合几组延迟单元,然后串联起来,同时设置一个选择端口,通过软配置可以选择多种组合
    使用这种结构去控制sck和sck_d的相位关系,有两种好处:
    1. 便于配置合适的相位关系;2. 便于加速测试;3. 缺点就是可能存在较多的冗余单元


     还有一种特定方式:
     如果该设计的有且只有一条路径,或者存在明显的关键路径,可以使用该路径作为参考路径。使用同样的单元,再增加一定的延迟单元作为sck->sck_d的传播路径。好处就是相位关系控制的较为准确,缺点就是实用面窄,并且需要分析关键路径(门级网表)
 楼主| 发表于 2015-2-27 16:42:54 | 显示全部楼层
回复 7# jun_dahai


  我觉得您提供的第一种方法非常好,增加了调试的灵活性,打算尝试一下。还想请教一下,我如果直接在rtl中调用工艺库里的standard cell,比如串联10个inverter,做综合的时候应该不会被优化掉的吧?
发表于 2015-2-27 16:46:42 | 显示全部楼层
你用的是FPGA吗?可以用DCM产生新的时钟sck_d,而且XILINX的FPGA还有IODELAY单元用来延时
发表于 2015-2-27 16:54:15 | 显示全部楼层
回复 8# xiaoyeah


   如果功能满足的话,为何不用异步FIFO,简单粗暴的解决问题。如果不能用,那么设置clk_d为generated clock from clk,这样工具应该能分析到FLOP B的时序是否满足吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

X

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

GMT+8, 2025-6-26 04:26 , Processed in 0.023539 second(s), 9 queries , Gzip On, MemCached On.

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