在verilog中将连线值转换为整数

| 我想将电线中的数据转换为整数。例如:
wire [2:0] w = 3\'b101;
我想要一个将其转换为\'5 \'并将其存储为整数的方法。我怎么能以比这更好的方式做到这一点:
j=1;
for(i=0; i<=2; i=i+1)
begin
  a=a+(w[i]*j);   
  j=j*2;
end
另外,一旦我拥有整数值,如何将其转换回二进制?这似乎很笨拙。谢谢。     
已邀请:
简单!如果分配给整数,verilog中的转换是自动的。在verilog中,所有数据类型都只是按位收集。
integer my_int;
always @( w )
    my_int = w;
    
正如Marty所说:位向量和整数之间的转换是自动的。 但是有很多陷阱。如果您牢记整数是32位有符号值,则它们很明显。 不要尝试分配例如将40位值转换为整数。 默认位向量是无符号的,因此32位向量为整数时可能变为负数。 反之亦然:负整数,例如-3将成为8向量,其值为8 \'b11111101 我不知道为什么要转换为整数然后返回。我只想指出,有符号和无符号位向量都完全支持算术运算。实际上,由于没有32位限制,它们更强大:
reg [127:0] huge_counter;
...
   always @(posedge clk)
      huge_counter <= huge_counter + 128\'h1;
还支持使用向量作为索引:
wire [11:0] address;
reg  [ 7:0] memory [0:4095];
...
   assign read_data = memory[address];
    

要回复问题请先登录注册