将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;
答案 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)]