Преобразование из 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;