将VHDL翻译成Verilog

时间:2014-12-16 22:05:44

标签: translation vhdl verilog

将VHDL转换为Verilog时遇到问题。 它是我在VHDL上的源代码的一部分。 I / O我以某种方式理解,但是有一些问题要翻译这个字符串

ib1 <= std_logic_vector(to_unsigned(i,ib1'length));

到verilog?

COMPONENT GenerateModel
PORT(
     ib1 : IN  std_logic_vector(3 downto 0);
    );
END COMPONENT;
--Inputs
signal ib1 : std_logic_vector(3 downto 0) := (others => '0');
 BEGIN
uut: GenerateModel PORT MAP (
      ib1 => ib1,
    );
process
begin
    for i in 0 to 15 loop
        ib1 <= std_logic_vector(to_unsigned(i,ib1'length));
        wait for 10 ns;
    end loop;
end process;
end;

1 个答案:

答案 0 :(得分:1)

从Paebbels扩展到Verilog&#39;注释,您正在查看的行是从循环变量i的类型到端口变量ib1的显式转换。在Verilog中,不需要显式转换,您可以直接分配端口变量。因此,例如(在Verilog IEEE 1364-1995兼容中):

integer i;

...

for (i = 0; i < 16; i = i + 1) begin
  ib1 = i; // <-- The line
  #10; // -- Assume 1 step is 1 ns, can specific timescale if needed
end

如果需要,您甚至可以直接遍历变量,如果它的类型为reg(即不是网络):

for (ib1 = 0; ib1 < 15; ib1 = ib1 + 1) begin
  #10;
end
#10;

[注意,正如Greg所提到的,你需要确保你不创建无限循环,好像ib1是4位宽,它总是小于16,因此我将上面的例子修复为循环直到ib1为15(4&#39; b1111)]