You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于always_ff与always_comb逻辑门映射差异的技术问询

关于always_comb与always_ff的逻辑生成机制疑问

我搞不懂always_ff在生成逻辑门网络时的工作机制。拿always_comb来说,我理解它是从上到下分析代码,最终生成对应输入输出的逻辑门组合,后续赋值会覆盖初始赋值;但老师说always_comb是“阻塞”的,always_ff则不是,我完全搞不懂这是什么意思——难道always_ff不会生成输入到输出的最终逻辑门结果吗?

参考的always_comb代码实例

实例1:格雷码编解码模块

module gray_koder_dekoder(i_data, i_oper, o_code);
    parameter LEN = 4;
    input logic [LEN-1:0] i_data;
    input logic             i_oper;
    output logic [LEN-1:0]  o_code;
    
    int i;
    always_comb
    begin
        o_code = '0;
        i = LEN-1;
        if (i_oper == 1'b1) // 1'b1 - 编码操作
        begin               
            o_code = i_data ^ (i_data >> 1);
        end
        else    // 其他值则执行解码
        begin   
            o_code = i_data;
            for (i=LEN-1; i>0; i=i-1)
            begin
                o_code[i-1] = o_code[i] 
                              ^  i_data[i-1];
            end
        end
    end
endmodule

实例2:格雷码解码模块

module gray_dekoder (i_gray, o_data);

    parameter LEN = 4;
    input  logic [LEN-1:0] i_gray;
    output logic [LEN-1:0] o_data;

    always_comb
    begin
        
        o_data = i_gray;

        for (int i=LEN-1; i>0; i=i-1)
            o_data[i-1] = o_data[i] ^ i_gray[i-1];    
    end

endmodule

实例3:位替换模块

module replace(i_a, i_b, o_replaced, o_error);
    parameter BITS = 4;
    input  logic signed [BITS-1:0] i_a, i_b;
    output logic signed [BITS-1:0] o_replaced;
    output logic o_error;

    int i;
    always_comb
    begin
        o_replaced = '0;
        if(i_b < 0 || i_b > BITS)
            begin
            o_error = 1;
            o_replaced = 'x;
            end
        else
            begin
            i = i_b;
            o_replaced = i_a;
            o_replaced[i-1] = 1;
            o_error = 0;
            end
    end
endmodule

具体疑惑点

  • 我对always_comb的覆盖逻辑仍有疑惑:比如第三个实例中,初始赋值o_replaced = '0在else分支里的执行流程中,是否真的未被覆盖?后续的赋值操作是如何覆盖初始值的?
  • 想明确always_ff的执行逻辑与逻辑门生成方式:它和always_comb的核心区别是什么?老师所说的“阻塞”和“非阻塞”具体指什么?它最终是否也会生成对应输入输出的逻辑门网络?

内容的提问来源于stack exchange,提问作者user331990

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:31:24