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

基于4位加法器的8位selectAdd8仿真输出全为不定态X问题求助

问题定位与修正说明
  • 变量位宽定义错误:sumL(低位4位加法器的和输出,位宽应为4bit)、sum0(低位进位为0时高位4位加法器的和输出,位宽4bit)、sum1(低位进位为1时高位4位加法器的和输出,位宽4bit)被错误定义为1bit的reg,位宽不匹配导致信号采样异常。
  • 低位加法器端口连接错误:add_lower实例的输出端口错误连接到了最终输出sum、cout,而这两个输出同时被后续always块赋值,产生多驱动冲突,是输出不定态的直接原因;同时你定义的coutL没有被任何信号驱动,始终为x态,导致always块的判断逻辑完全失效。
  • 高位进位输出逻辑错误:最终进位输出cout需要根据低位进位结果选择高位加法器的进位输出cout0或cout1,直接写死为0或1会导致高位溢出时进位输出错误。
修正后selectAdd8模块代码
module selectAdd8(
    input [7:0] a,
    input [7:0] b,
    input cin,
    output reg [7:0] sum,
    output reg cout
    );
        
        reg coutL, cout0, cout1;
        reg [3:0] sumL, sum0, sum1;

        add4 add_lower(a[3:0],b[3:0],cin,sumL,coutL);
        add4 add4_0(a[7:4],b[7:4],0,sum0,cout0);
        add4 add4_1(a[7:4],b[7:4],1,sum1,cout1);
        
        always @ (*) begin
            if (coutL==1) begin
                sum = {sum1, sumL};
                cout = cout1;
            end else begin
                sum = {sum0, sumL};
                cout = cout0;
            end
        end
        
endmodule

修正后重新编译仿真即可得到正确的计算结果,不会出现不定态输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:36:03