我想问一下将位向量 x[0:3] 中的一位例如 x[3] 切换为 1,如果它是零,或者如果它在 verilog 中是 1,则切换为零。所以如果 x=0101 它将变为 x=0100 .I尝试过与 not 连接,但它在 verilog 中出错。你能帮我这样做吗?我的代码在这里:http ://www.edaplayground.com/x/JAc 其中 x:input 和 y:x 变异后
提前致谢。
我想问一下将位向量 x[0:3] 中的一位例如 x[3] 切换为 1,如果它是零,或者如果它在 verilog 中是 1,则切换为零。所以如果 x=0101 它将变为 x=0100 .I尝试过与 not 连接,但它在 verilog 中出错。你能帮我这样做吗?我的代码在这里:http ://www.edaplayground.com/x/JAc 其中 x:input 和 y:x 变异后
提前致谢。
将一位更改为总线的一部分:
module bit_mangle(
input [3:0] x,
output [3:0] y
);
always @* begin
y = {x[3:1], ~x[0]} ;
end
endmodule
我已经在 EDA 操场上更新了您的代码副本,并修复了测试工具中的一些问题。 EDA Playground 上的工作模拟。
从 [SIZE-1:0] 定义总线更为常见。您的旧 Mutation 代码试图在两个地方驱动输入,而不是让上面的级别驱动值。
always_comb begin
x = 4'b0101 ;
x[3] = ~x[3] ; //overwrite x[3] with its complement
end
或者
always_comb begin
x = 4'b0101 ;
x[3] = x[3] ^ 1'b1 ; //XOR x[3] with 1
end