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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

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

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

[复制链接]
发表于 2017-5-2 13:48:39 | 显示全部楼层
请问一下楼主是用什么工具做的?
是工具中包含gating cell?
发表于 2017-5-2 21:15:22 | 显示全部楼层
真好速度啊
发表于 2017-5-23 15:21:53 | 显示全部楼层
回复 11# 杰克淡定


解释的无法理解,就算增加在多级数也没有价值。
发表于 2017-5-23 15:26:49 | 显示全部楼层
回复 32# 杰克淡定


  你的这个电路经过工程验证过?
 楼主| 发表于 2017-5-26 15:40:40 | 显示全部楼层
回复 38# novel_qin


   回头仔细看了你的回复,发现了原设计中一个笔误,会导致你说的问题。
// part5
clk_gate_xxx clk_gate_a ( .CP(clka), .EN(sel_clka_dly1), .Q(clka_g)  .TE(1'b0) );
clk_gate_xxx clk_gate_b ( .CP(clkb), .EN(sel_clkb_dly1), .Q(clkb_g)  .TE(1'b0) );
//assign clka_g = clka & sel_clka_dly1 ;
//assign clkb_g = clkb & sel_clkb_dly1 ;


这部分要使用*dly1的信号,而不是*dly3,*dly1相比*dly3会将两个时钟切换gap变大避免毛刺,part4用的dly寄存器越多,*dly1就把切换点gap越大。帖子这么久没有其他人提出这个疑问,看起来只有你拿去仿真验证了
发表于 2017-6-14 17:15:23 | 显示全部楼层
回复 55# 杰克淡定


这样也可以吧。
clk_gate_xxx clk_gate_a ( .CP(clka), .EN(sel_clka_d1), .Q(clka_g)  .TE(1'b0) );
clk_gate_xxx clk_gate_b ( .CP(clkb), .EN(sel_clkb_d1), .Q(clkb_g)  .TE(1'b0) );
 楼主| 发表于 2017-6-14 17:19:57 | 显示全部楼层
回复 56# haimo


   目前主贴中的错误已经更正过来了,与你这个一致
发表于 2017-6-15 09:29:13 | 显示全部楼层
回复 57# 杰克淡定

您用的是sel_clka_dly1,我用的是sel_clka_d1,
   

sel_clka_dly1 <= sel_clka_d1;

但我觉得都行

我之前也发现这个问题,采用的方法是加多part2/4的级数的方法,这样gap就大了
发表于 2017-6-26 17:41:01 | 显示全部楼层
本帖最后由 capcomwf 于 2017-6-26 22:47 编辑

回复 55# 杰克淡定
我这边RTL仿真的结果:
电路第一次工作时会出现第一次的混叠,可能由
sel_clka_dly1 <= 1'b0;
sel_clka_dly2 <= 1'b0;
sel_clka_dly3 <= 1'b0;

sel_clkb_dly1 <= 1'b0;
sel_clkb_dly2 <= 1'b0;
sel_clkb_dly3 <= 1'b0;
初值互斥引起.
混叠2.jpg

只要将切换的初始状态赋对(即默认输出clka)
sel_clka_d0 <= 1'b1;
sel_clka_d1 <= 1'b1;
sel_clka_dly1 <= 1'b1;
sel_clka_dly2 <= 1'b1;
sel_clka_dly3 <= 1'b1;
即可.
混叠3.jpg

另外,本题的切换的电平持续最短时间是要至少维持较长周期的5倍才可在慢时钟到快时钟切换时正确输出较快的那一个.
至于38楼及55楼楼主提到的频率混叠情况,是否可以给个波形图看看?我这边没有太理解....
发表于 2017-6-28 10:08:25 | 显示全部楼层
回复 55# 杰克淡定


   楼主您好,看了您的帖子,我把这部分电路推理了一遍,有点不理解的地方想向楼主请教,从楼主的代码中可以看到,楼主的MUX采用“与门+或门”的结构来实现,而后级采用“与门+或门”的时候,用于输出"与门"的门控信号的寄存器一定要下降沿触发       “3、如果part5部分希望使用注释掉的两行“与”逻辑实现时钟gating,此时part1与part3使用正相或者反相时钟都可以,但是必须把part2和part4部分改为注释掉的反相时钟实现,目的是初步从RTL设计上避免“与”逻辑的毛刺”         您在第三点中也说明了,这一点,那么为啥在代码中采用“clk_gate_xxx clk_gate_a ( .CP(clka), .EN(sel_clka_dly1), .Q(clka_g)  .TE(1'b0) );
clk_gate_xxx clk_gate_b ( .CP(clkb), .EN(sel_clkb_dly1), .Q(clkb_g)  .TE(1'b0) );”的时候可以采用上升沿触发?按道理来讲,clk_gate不就是一个与门吗?如果想要采用全上升沿触发,那么就应该是原始时钟上升沿触发‘控制原始时钟的触发器’,关断原始时钟,锁定输出到高电平,目的时钟上升沿后触发‘目的时钟的触发器
’,开启目的时钟,从而在高电平完成时钟切换,要达到这个目的,后级的MUX的实现方法,应该是采用“或门+与门”的结构,而不是楼主代码里的"与门+或门"的结构吧?还请楼主不吝赐教,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

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

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