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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
楼主: 杰克淡定

[原创] Verilog基本电路设计之二(时钟无缝切换)

[复制链接]
 楼主| 发表于 2017-6-29 08:59:19 | 显示全部楼层
回复 60# thundersnark


   你可以学习楼上的做法,把这个设计和你认为正确的设计,仿真一下,对着仿真波形就很容易理解了,光这么疑惑纠结也没用啊
发表于 2017-6-29 09:54:21 | 显示全部楼层
回复 59# capcomwf

clk_o 和 clk_o1是什么关系

你说的第一次工作,指的是selb第一次由0变1
发表于 2017-6-29 11:00:05 | 显示全部楼层
回复 62# haimo


    不好意思,我那个回复里面没有说清楚:
    clk_o是用sel_clka_dly3和sel_clkb_dly3门控时钟的输出,clk_o1是用sel_clka_dly1和sel_clkb_dly1门控时钟的输出。可以发现在时钟从慢速切换到高速时使用sel_clka_dly1和sel_clkb_dly1确实可以让切换的间隔更加大一点,但是使用sel_clka_dly3和sel_clkb_dly3产生混叠的情况我这边没有发现,请问可否帮忙解答一下。
   我说的第一次切换的确是sel_clkb第一次由0变1时由于初值设置,可能出现时钟混叠。
发表于 2017-6-29 11:20:28 | 显示全部楼层
回复 63# capcomwf
那么你看看当第二次selb从低到高切换的情况,最好能贴个图
发表于 2017-6-29 11:43:28 | 显示全部楼层
回复 63# capcomwf

这个原因是因为时钟在rst_n后不久,就进行selb的切换了

如果你将clka和clkb的频率差拉大,比如一个10M,一个200M,看看会不会交叠
 楼主| 发表于 2017-6-29 13:45:05 | 显示全部楼层
回复 63# capcomwf

正如haimo所说,你所说的第一次出现的混叠是由于复位后马上进行了切换,而设计中sel_clka_*与sel_clkb_*的复位值全部使用的是0,所以出现了你看到的情况。你的解法也是合理的,可以根据输入信号sel_clkb的复位初始值,来设定sel_clka_*与sel_clkb_*的复位值分别为0或者1,从而避免这种情况。

另外,使用sel_clka_dly3以及sel_clkb_dly3做gating,可能出现的混叠,你可以加大clka和clkb的频率差,比如200M和30K再仿真看看是不是就出现问题了
发表于 2017-6-29 14:18:30 | 显示全部楼层
本帖最后由 capcomwf 于 2017-6-29 14:21 编辑

回复 65# haimo
确实会有混叠出现,问题的本质是切换的持续时间太短造成:
混叠.jpg

每次切换的时间如果大于5倍以上(因为代码中使用的DFF的级数)的较慢的那个时钟的周期则不会出现这个状况,这个条件应该说在实际应用中还是不难实现的,时钟切换不可能过于频繁.至于使用sel_clka_dly3/sel_clkb_dly3还是sel_clka_dly1/sel_clkb_dly1似乎并不影响混叠出现与否,中间的分别只是把gap从一边移到另一边.
下面这个波形是满足切换时间足够长的情况下的仿真结果,由此可以看到,初始条件的互斥其实也可以归到切换时间这类原因中去:
不混叠.jpg
只要复位到首次切换的时间足够长,就不会有混叠出现.所以楼主的代码在实际应用中应该是没问题的.
发表于 2017-6-29 14:30:18 | 显示全部楼层
补充一点:在上面那一层回复第一张图中,我们可以看到使用sel_clka_dly1/sel_clkb_dly1作为时钟门控,如果切换时间太短,一样会有混叠出现(如clk_o1所示)
发表于 2017-6-29 15:10:45 | 显示全部楼层
这就是说根据自己的实际应用,可以灵活增减dff的级数,
而且也不一定要用同一层级的dff输出作为gate信号,根据两个信号的频率差
可以用sel_clka_dly1和和sel_clkb_dly3作为gate信号也是可以的。
设计中通过验证来灵活设置。
发表于 2017-6-29 15:25:53 | 显示全部楼层
回复 69# haimo

其实,细细看来,这个切换时间的限制,在楼主在19楼的答复中已经涵盖到了:



回复 17# 07048097

是的,在切换过程中,会有一段时间没有时钟输出。增加的DFF级数越多,切换过程花更长的时间来完成,也就是带来gap段更大,这是增加DFF级数的弊端。无缝切换,你是希望切换过程更安全,还是追求切换快速完成,这就是矛盾。所以大家才需要根据自己的实际应用条件,对part2和part4部分进行灵活增减处理。
杰克淡定 发表于 2016-6-18 10:28



用的DFF级数越多,切换过程也许要更长时间来完成,如果实际给的sel_clkb切换时间不够,那就出现混叠。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-12-18 21:58 , Processed in 0.022408 second(s), 8 queries , Gzip On, Redis On.

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