将整数转换为std_logic

Cpp*_*ner 5 vhdl

假设你有一个循环

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).也就是说,我的ij只能代表值{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)


Mar*_*son 6

我写了一个函数:

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)

  • 对我来说,这是一个比公认的更有用和准确的答案。 (2认同)

Cha*_*ler 5

您将需要使用无符号或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)