0

我想问一下将位向量 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 变异后

提前致谢。

4

2 回答 2

1

将一位更改为总线的一部分:

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 代码试图在两个地方驱动输入,而不是让上面的级别驱动值。

于 2014-11-19T08:42:38.523 回答
0
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
于 2014-11-18T22:48:09.253 回答