Как сказал Марти: преобразование между битовыми векторами и целыми числами происходит автоматически.Но есть ряд подводных камней.Они очевидны, если учесть, что целое число - это 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];