Преобразование из VHDL в Verilog

Это следующий оператор VHDL из Testbench;

size_data <= to_unsigned(16,16); // data stream is 16 bits in size

Как преобразовать это в Verilog?

1 ответ

Verilog выполняет преобразование типов автоматически.

Это значение со знаком:
wire signed [4:0] I_am_signed; assign I_am_signed = 16;

Это без знака:
wire [4:0] I_am_unsigned; assign I_am_unsigned = 16;

Это идет не так:
wire signed [3:0] I_am_signed_but_too_small_for_16; assign I_am_signed_but_too_small_for_16= 16;

В последнем случае вы не гарантированно получите предупреждения или ошибки, но большинство компиляторов предоставят их. Однако это не будет иметь место, когда он не знает значений. Это может пойти ужасно неправильно:
assign I_am_signed_but_too_small_for_16 = I_am_signed;

Но это безопасный способ преобразования подписанного в неподписанное или наоборот:
assign I_am_unsigned = I_am_signed; assign I_am_signed = I_am_unsigned;

Другие вопросы по тегам