本文由面包板社区博主“sunyzz”原创,未经许可不得转载!
了解详情,请撮→2017面包板社区博客大赛!第一季开赛!
博客大赛奖项设置:
特等奖(1名):3000元 + 奖杯
一等奖(2名):1500元 + 奖杯
二等奖(3名):800元 + 奖杯
三等奖(5名):500元
博客链接:https://www.mianbaoban.cn/blog,手动输入网址前往开博参赛!
时钟同步问题讲完了,下面就开始讲讲soc中另一种常见的情况,有时为了考虑到功耗,性能的问题,某个模块可能在某一种情况下工作在一个频率,另一种情况下工作在另一种频率,这个时候就需要进行mux的切换,有的人就会说了,哪简单啊,加个mux啊,可事实真的如此吗?
如上图,大家会很自然而想到的一种时钟切换电路,可是,你仔细分析,你会发现该电路会出现如下的问题,毛刺!这个毛刺无论对于clk0还是clk1都不是好事,它不属于任何一个时钟域,它的脉宽根本无法确定,你切换的点会影响毛刺的宽度。
那么该如何消除毛刺,进而消除后面可能带来的问题呢,见下图,加入反馈电路。
反馈是为了确保时钟真正被关闭了,例如,select从0切换到1,也就是选择clk1,但是这时要确保clk0被完全关闭了,所以通过clk0时钟域的DFF反馈回来的1(如果能反馈1说明0已经进入到clk0时钟域的DFF中了)与clk1时钟域的select进行相与。
另外,为了解决跨时钟域的问题(select毕竟是不同于clk0,clk1时钟域的),通常还会加入1-2级的DFF。
另外,这几个电路使用时需要注意一点的是两个clk都必须要震荡起来后才可以进行select,否则进行切换可能导致select不能被正确的传送到最后一级的与门上,这样消除毛刺的功能可能就无效。
以下全文来自面包板社区https://www.mianbaoban.cn/blog/post/204600
本文转载自网络,如涉版权请联系我们删除
看完本文有收获?请分享给更多人
回复关键词有干货:电路设计丨电容丨三极管丨PCB丨接地‧‧‧‧‧‧
长按二维码识别关注
阅读原文可一键关注+历史信息