A <= 8'hFF; // A is a 8 bit vector
B <= 8'hF0; // B is a 8 bit vector
F <= ~(A^B); // F is a 9 bit vector
为什么输出9'h1F0
而不是9'h0F0
?
为什么输出9'h1F0而不是9'h0F0?
您将F定义为9位宽。因此,编译器会将任何参数的右侧参数扩展为9位。由于A和B都未签名,因此它们分别成为A = 9'h0FF, B=9'h0F0.
EXOR给出9'h00F。然后补数得到9'h1F0。请注意,如果将表达式放在{}之间,则不会发生宽度扩展:
F2 = {~(A^B)};
F2将是9'h0F0;