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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 4706|回复: 12

[求助] 两个时钟域使能信号的同步,求助

[复制链接]
发表于 2011-5-28 15:58:56 | 显示全部楼层 |阅读模式

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

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

x
假如时钟域CLK1的使能信号EN1在CLK1的第1,3,4个周期为高电平,如何将其同步到时钟域CLK2,使CLK2控制的一使能信号EN2在CLK2的第1,3,4个周期为高电平?先谢谢各位大侠的解答。
发表于 2011-5-28 16:47:12 | 显示全部楼层
always @(posedge clk2)
if()
begin
   a1 <= 0;
  a2 <= 0;
  end
else begin
   a1 <= en1;
  a2 <= a1;
  end
assign en2 = a1 & ~a2;
 楼主| 发表于 2011-5-29 16:31:59 | 显示全部楼层
回复 2# huanguestc002


    谢谢解答,但小弟不太明白,if()的控制信号是clk1还是?这里clk1和clk2的频率相差很大。
发表于 2011-5-29 21:43:52 | 显示全部楼层
if() 里的是个复位信号,en1是你在CLK1产生的使能信号,en2是en1同步到CLK2的信号。CLK1,CLK2那个是高频?上面的适合于en1的脉冲宽度大于CLK2的周期的情况.
发表于 2011-5-29 22:50:03 | 显示全部楼层
如果CLK1的频率是大于CLK2的话,完全做不了了
上述通过异步采样,然后生成脉冲的方式,至少保证CLK2的频率为CLK1的两倍
发表于 2011-5-30 10:49:21 | 显示全部楼层
这种需求的确比较奇怪,按照2楼的做法确实只能保证高频采到低频的
你可以尝试一下把时钟ck1的数据收集起来,比如8个周期的EN信号寄存寄存到8bit寄存器里面,然后把寄存器同步到CK2时钟,最后用8bit寄存器控制产生EN2信号。
你可以考虑一下这个能否满足你的需求。

从CK1到CK1,由于频率不同,所以肯定无法保证时时的吧EN信号传过来
发表于 2011-5-30 11:36:42 | 显示全部楼层
always @(posedge en1 or negedge reset)
if(reset)
  q1 <= 0;
else q1 <= 1;
assign reset = ~en1 & q3;
assign en2 =q3;
always @(posedge clk2)
begin
   q2 <= q1;
   q3 <= q2;
end
这个适合en1的宽度小于clk2的情况,高频->低频
 楼主| 发表于 2011-5-31 17:24:47 | 显示全部楼层
回复 6# warmheard


    谢谢解答,目前也只能想出这样的办法了,一级D FF存储EN1,再经过一级同步到时钟CLK2,通过MUX, DEMUX输入输出时钟。但这样同步延时比较大,也想不出更有效的方法。。。
 楼主| 发表于 2011-5-31 17:26:39 | 显示全部楼层
回复 4# huanguestc002


    谢谢你耐心解答~  这里CLK1和CLK2频率大小关系不定,所以比较纠结。
发表于 2011-6-1 11:04:38 | 显示全部楼层
CLK1 和 CLK2的关系如何? 没看懂你的问题。如果 CLK1的en 是被同步到 CLK2 的话,肯定是相对 CLK2 要有延迟的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-26 00:31 , Processed in 0.024263 second(s), 10 queries , Gzip On, Redis On.

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