Verilog 多位与一位 进行异或

遇到一个有意思的问题

module t(
input [31:0]a,
input b,
output [31:0]c,
output [31:0]d
);

assign c = a^b;
assign d = b?~a:a;
endmodule

a与b进行异或得到的结果到底是什么?
在这里插入图片描述我不信,就去试了试在这里插入图片描述
这似乎和上面的结论不同

查资料,新增了一个e端口

module t(
input [31:0]a,
input b,
output [31:0]c,
output [31:0]d,
output [31:0]e
);

assign c = a^b;
assign d = b?~a:a;
assign e = {
    
    32{
    
    b}}^a;
endmodule

看来是进行了算数移位再进行异或
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Harry_CHL/article/details/120472874
今日推荐