打印

FPGA设计中的边沿检测问题

[复制链接]
1376|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tee.|  楼主 | 2012-5-21 11:06 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在同步电路设计中,边沿检测是必不可少的!

例如:在一个时钟频率16MHz的同步串行总线接收电路里,串行总线波特率为1Mbps。在串行总线的发送端是在同步时钟(1MHz)的上升沿输出数据,在接收端在同步时钟的下降沿对输入数据进行接收采样。在这个接收电路里检测同步时钟的下降沿是必不可少的。假设主时钟-clk,同步时钟-rck,同步数据-data。

有些人在边沿检测的时候就喜欢这样做:


但是大家忽略了一种情况,就是clk与rck之间比没有必然的同步关系,当rck的下降沿刚好略滞后于clk的上升沿(大概几个ns),这样就会使高电平 保持时间不足,就会发现在本时钟上升沿时还是rck_dly=‘1’ and rck=‘1’,而在下一个时钟的上升沿来的时候,就会出现rck_dly=‘0’ and rck=‘0’,所以就不会有rck_dly=‘1’ and rck=‘0’的情况出现!! 从而导致丢失数据。

如果用下面的方法就可以避免上面的情况,并且可以做到正确无误地接收数据:

不得不承认后一种方法所耗的资源要比前一种方法多(一个触发器),但是就可以大大提高可靠性,这绝对是物有所值!!

相关帖子

沙发
mr.king| | 2012-5-21 11:29 | 只看该作者
对于同步传送接收,,我的做法是不理会16M的时钟,直接用1M的同步时钟处理数据

使用特权

评论回复
板凳
梅花望青竹| | 2012-5-21 11:32 | 只看该作者
对于边沿的检测,可以采用信号与或非的样式,判断高电平的时候,才得到信号,并发处理,不耽误使用!

使用特权

评论回复
地板
GoldSunMonkey| | 2012-5-21 22:18 | 只看该作者
;P这几种方式都需要综合考虑使用的情况。

使用特权

评论回复
5
hawksabre| | 2012-8-2 18:43 | 只看该作者
需要综合考虑  根据实际情况来

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:有进步,嘿嘿。。

23

主题

1652

帖子

6

粉丝