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

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

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5212|回复: 27

[求助] full_sync是什么同步机制 急求

[复制链接]
发表于 2015-3-28 14:26:48 | 显示全部楼层 |阅读模式

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

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

x
看了一个模块,弄了个很复杂的同步机制, 大家帮看看这是什么同步原理,有相关资料么
input        clk1;
input        resetn1;
input        clk2;
input        resetn2;
input        set;
output        setout;
output         set2_reg2;
QQ截图20150328143101.png
 楼主| 发表于 2015-3-29 15:07:13 | 显示全部楼层
顶一下
发表于 2015-3-29 21:57:31 | 显示全部楼层
表示没看懂
发表于 2015-3-30 14:33:36 | 显示全部楼层
信息不足,无法分析
1. 前置逻辑关系是什么?圈起来的F里
2. 寄存器的Q、~Q输出,不清楚
 楼主| 发表于 2015-4-4 12:05:28 | 显示全部楼层
大家看看code吧
module        full_sync(
                                                clk1,
                                                resetn1,
                                                clk2,
                                                resetn2,
                                                set,        // set signal from clk1 domain
                                                set2_reg2,
                                                setout        // set output to clk2 domain
                                                );
input                clk1;
input                resetn1;
input                clk2;
input                resetn2;
input                set;
output                setout;
output                        set2_reg2;

wire                setout;
reg                        set_reg;
reg                        set2_reg1;
reg                        set2_reg2;
reg                        set2_reg3;
reg                        set1_reg1;
reg                        set1_reg2;

wire                zero;
assign        zero = set | set_reg & ~set1_reg2;
assign        setout = set2_reg2 & (~set2_reg3);        // output a pulse

always @(posedge clk1 or negedge resetn1)
begin
        if(~resetn1)
        begin
                set_reg <= 1'b0;
        end
        else
        begin
                set_reg <= zero;
        end
end

// clk2 sync set_reg
always @(posedge clk2 or negedge resetn2)
begin
        if(~resetn2)
        begin
                set2_reg1 <= 1'b0;
                set2_reg2 <= 1'b0;
        end
        else
        begin
                set2_reg1 <= set_reg;
                set2_reg2 <= set2_reg1;
        end
end

// clk1 sync set2_reg1
always @(posedge clk1 or negedge resetn1)
begin
        if(~resetn1)
        begin
                set1_reg1 <= 1'b0;
                set1_reg2 <= 1'b0;
        end
        else
        begin
                set1_reg1 <= set2_reg2;
                set1_reg2 <= set1_reg1;
        end
end
// clk1 delay set2_reg2
always @(posedge clk2 or negedge resetn2)
begin
        if(~resetn2)
        begin
                set2_reg3 <= 1'b0;
        end
        else
        begin
                set2_reg3 <= set2_reg2;
        end
end




endmodule
 楼主| 发表于 2015-4-4 16:26:32 | 显示全部楼层
马克一下,代码已出求指导
发表于 2015-4-4 21:33:30 | 显示全部楼层
没有必要这么复杂。2个FF同步,再加一个FF提取上升沿就足够了。
 楼主| 发表于 2015-4-7 19:05:55 | 显示全部楼层
回复 7# woodhorse


    这种写法应该是一个特有写法吧 ,实现特定功能。只是我不知道为啥这么写
发表于 2015-4-8 10:52:12 | 显示全部楼层
回复 8# 我擦泪


    也有可能作者一时想多了。这样的电路也不少。
发表于 2015-4-9 20:59:20 | 显示全部楼层
xuexiyixia
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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


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

GMT+8, 2024-11-22 13:16 , Processed in 0.022897 second(s), 10 queries , Gzip On, Redis On.

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