假设你有一个循环
for i in 1 downto 0 loop
for j in 1 downto 0 loop
tS0 <= i;
Run Code Online (Sandbox Code Playgroud)
但我需要将整数(这是自然的)转换为std_logic.tS0声明为std_logic.我只做了一点(0或1).也就是说,我的i和j只能代表值{0,1}.
我想我在这里采取了错误的做法.有人可以告诉我该怎么办?
我不认为std_logic有to_unsigned方法.我试着让tS0成为一个向量(1下降到0),并指定像tS0(0)<= i,等等.但它仍然无法解决.
非常感谢你!
Phi*_*ppe 10
无需转换整数.您可以迭代std_logic数据类型:
for i in std_logic range '0' to '1' loop
ts0 <= i;
end loop;
Run Code Online (Sandbox Code Playgroud)
我写了一个函数:
function to_std_logic(i : in integer) return std_logic is
begin
if i = 0 then
return '0';
end if;
return '1';
end function;
Run Code Online (Sandbox Code Playgroud)
然后使用:
ts0 <= to_std_logic(i);
Run Code Online (Sandbox Code Playgroud)
您将需要使用无符号或std_logic的向量,但它可以是一位长.即:
signal tS0 : unsigned (0 downto 0);
...
tS0 <= to_unsigned(i, tS0'length);
Run Code Online (Sandbox Code Playgroud)
...要么...
signal tS0: std_logic_vector(0 downto 0);
...
tS0 <= std_logic_vector(to_unsigned(i,tS0'length);
Run Code Online (Sandbox Code Playgroud)