fpga系列 HDL:verilog 常见错误与注意事项 位宽不匹配+case 语句中没有覆盖所有情况

Verilog常见错误:位宽不匹配与case覆盖不全

位宽不匹配问题

  • 信号或操作数的位宽不匹配,可能导致仿真或综合错误。
module top (
    input wire [3:0] a,
    output wire [7:0] b
);

assign b = a; 
endmodule

在这里插入图片描述

case 语句中没有覆盖所有情况

module top (
    input wire [1:0] sel,
    input wire [7:0] a,
    input wire [7:0] b,
    input wire [7:0] c,
    output reg [7:0] y
);
    always @(*) begin
        case (sel)
            2'b00: y = a;
            2'b01: y = b;
            // 缺少默认分支,未定义的 sel 值会导致 y 的值不确定(可能为高阻态或保持旧值)。
			// 默认分支:覆盖所有未定义的情况	default: y = c; 
        endcase
    end
endmodule
  • case 语句中没有覆盖所有情况,如下图综合工具可能会推断出锁存器(Latch),以保持 y 的旧值,导致设计行为不符合预期。

在这里插入图片描述

  • 使用default:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值