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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7920|回复: 29

[求助] 异步时钟域的问题

[复制链接]
发表于 2011-10-12 17:16:25 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 shxr 于 2011-10-13 11:10 编辑

在一个时钟域里计数产生的计数值用于另一个时钟域时必须同步么?
如下例:
always @(posedge clk_32k or negedge rstn)begin
         if((!rstn)
                 cnt=8'b0;
         else   if(cnt==8'd128)
                  cnt=8'b0;
         else
                  cnt=cnt+8'b1;
end

always @(posedge clk_1M or negedge rstn)
begin
     if(rstn)

            en1   <= 1'b0;
     else if(cnt==8'd100)   

            en1    <= 1'b1;
     else if(cnt==8'd104)   

            en1    <= 1'b0;

end

这样的设计会不会有风险
发表于 2011-10-12 17:44:10 | 显示全部楼层
你用频率快的时钟采频率慢的时钟,应该能采得到吧!
发表于 2011-10-12 20:05:24 | 显示全部楼层
快的采慢的,数据不会有遗漏,但要做异步过度,不然可能会采到亚稳态的数据。
而且你要过度的是8比特的总线信号,要做总线异步过度电路。
发表于 2011-10-13 07:19:39 | 显示全部楼层
功能上应该不会有问题,不过最好是先同步了在使用。
发表于 2011-10-13 08:05:44 | 显示全部楼层
做个格雷码吧,然后再打两拍 。。。 你这样设计有风险的。。
发表于 2011-10-13 08:57:29 | 显示全部楼层
设计成clk_en,而不是clk. 同步设计模块应该使用同一个时钟。当然系统太大的时候使用全局异步(多个时钟域),局部同步(一个时钟域),互联专门处理CDC.
 楼主| 发表于 2011-10-13 09:44:29 | 显示全部楼层

RE: 异步时钟域的问题

回复 3# orlye


   总线异步过度电路是什么?也是寄存器打拍么
发表于 2011-10-13 10:14:18 | 显示全部楼层
clk_32时钟域定义两个新信号
wire set_ en_32k,clr_en_32k;
set_en_32k == (cnt==8'd100);   
clr_en_32k == (cnt==8'd104);
写一个结绳模块将这两个信号结绳到1M时钟域,假设新信号名为set_en_1M,  clr_en_1M
用结绳过来的信号控制en1
always @(posedge clk_1M or negedge rstn)
begin
     if(rstn)
        en1   <= 1'b0;
     else if(set_en_1M)   
        en1    <= 1'b1;
     else if(clr_en_1M)   
        en_cnt    <= 1'b0;
end
 楼主| 发表于 2011-10-13 11:13:36 | 显示全部楼层
回复 8# skytang007


   谢谢楼上的详细回复,所谓的结绳模块实际上也是寄存器打拍么
发表于 2011-10-13 23:41:39 | 显示全部楼层
结绳可以把一个周期宽度的脉冲信号从一个时钟域同步到另一个时钟域(低到高或者高到低都可以)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

×

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

GMT+8, 2024-5-3 01:43 , Processed in 0.031235 second(s), 8 queries , Gzip On, Redis On.

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