不是Verilog中的运算符

问题描述 投票:0回答:2
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

verilog
2个回答
0
投票

为什么输出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;

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.