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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1986|回复: 7

[求助] 写了个时钟切换代码。。。希望前辈指教

[复制链接]
发表于 2021-1-15 17:40:45 | 显示全部楼层 |阅读模式

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

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

x
如题,今天网上看了时钟切换的博客,它分成的5parts,一看感觉头皮发麻,就先自己写了一个。
modelsim波形模拟完,波形没什么问题,也放大看过了。但是总感觉有隐患,希望前辈看看,指出错误:
//sel==1 for clka, sel==0 for clkb

module cs1(

    input clka,
    input clkb,
    input sel,
    input reset,
    output reg selout);
    reg sel2;

always@(*)begin
    if(reset) selout<=0;
    else begin
        sel2<=sel;
        if(sel==sel2)begin
            if(sel==1'b1) selout<=clka;
            else if(sel==1'b0) selout<=clkb;
            else selout<=sel?clka:clkb;
        end
    end
end

endmodule
捕获.PNG

发表于 2021-1-15 18:04:00 | 显示全部楼层
发表于 2021-1-15 20:47:09 | 显示全部楼层
if(sel==1'b1) selout<=clka;
            else if(sel==1'b0) selout<=clkb;
           else selout<=sel?clka:clkb;
        end
重复了吧???
if(sel==1'b1) selout<=clka;
else
selout<=clkb;
end

发表于 2021-1-15 21:24:57 | 显示全部楼层


要你命3000 发表于 2021-1-15 04:04
glitch free clock mux
https://vlsitutorials.com/glitch-free-clock-mux/


最后一个用到两个 DFF 做同步器 synchronizer 的电路,貌似经典,其实是由缺陷的。
同步器的输出 sync1_o 相对于时钟有个延时。 如果这个延时先对于时钟的 skew 稍微大一些,换言之 AND 的两个输入相对 skew 稍微大一些, AND 的第一个时钟输出仍有可能是个窄脉冲 glitch。 这个情况在高速时钟时尤为明显。
当然,有人会说,后端做得好就不会发生这种问题。 是的,同意。 但这是把烫山芋扔给了后端。

发表于 2021-1-16 09:30:25 | 显示全部楼层


jake 发表于 2021-1-15 21:24
最后一个用到两个 DFF 做同步器 synchronizer 的电路,貌似经典,其实是由缺陷的。
同步器的输出 sync1_ ...


你好,想请教一下,那现在的无毛刺时钟切换主要用什么技术呢?
发表于 2021-1-16 10:32:06 | 显示全部楼层


FPGAduowan 发表于 2021-1-15 19:30
你好,想请教一下,那现在的无毛刺时钟切换主要用什么技术呢?


很朴素的思想:
先把当前选用的时钟“关掉”,用 clock gate or ICG (integrated clock gate) 实现。
再把希望选择的时钟“打开”, 同样用 ICG 实现。
ICG 有 timing。工具会自动查 ICG timing。 满足 timing 后,ICG 的输出是干净的。

我自己有个基于 ICG 的原创电路,整理完了会贴到日志里。

 楼主| 发表于 2021-1-16 14:30:14 | 显示全部楼层


jake 发表于 2021-1-15 21:24
最后一个用到两个 DFF 做同步器 synchronizer 的电路,貌似经典,其实是由缺陷的。
同步器的输出 sync1_ ...


你好,请问我这个设计会有什么问题?是不是高速时钟就会出错?谢谢
发表于 2021-1-16 21:17:46 | 显示全部楼层


Blando 发表于 2021-1-16 00:30
你好,请问我这个设计会有什么问题?是不是高速时钟就会出错?谢谢


纯组合逻辑搭的时钟切换有个硬伤,那就是输出会有毛刺。  多跑几个仿真,把两个时钟,选择信号的相位变化一下,就可以观察到。
时钟上的毛刺是兵家大忌。
http://blog.eetop.cn/blog-1592-6946135.html



时钟切换这类关键电路,是应该例化搭起来实现的,避免综合工具翻译。

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

本版积分规则

关闭

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

×

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

GMT+8, 2024-5-18 16:05 , Processed in 0.025387 second(s), 8 queries , Gzip On, Redis On.

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