Convert Integer to Std_Logic

Suppose you have a loop

for i in 1 downto 0 loop
    for j in 1 downto 0 loop
        tS0 <= i;

But I need to convert the integer (which is natural) to std_logic. tS0 is declared as std_logic. I am only doing it one bit (0 or 1). That is, my i and j can only represent the value {0,1}.

I think I am heading to the wrong approach here. Can someone please tell me what should I do instead?

I don't think std_logic has to_unsigned method. i tried letting tS0 to be a vector (1 down to 0), and assigned like tS0(0) <= i, and etc. But it still didn't work out.

Thank you very much!

1

5 Answers

There is no need to convert from integers. You can just iterate over the std_logic datatype:

for i in std_logic range '0' to '1' loop
   ts0 <= i;
end loop;
1

I'd write a function:

function to_std_logic(i : in integer) return std_logic is
begin
    if i = 0 then
        return '0';
    end if;
    return '1';
end function;

then use:

ts0 <= to_std_logic(i);
1

You will need to use a vector, either unsigned or std_logic, but it can be one bit long. ie:

signal tS0 : unsigned (0 downto 0);
...
tS0 <= to_unsigned(i, tS0'length);

...or...

signal tS0: std_logic_vector(0 downto 0);
...
tS0 <= std_logic_vector(to_unsigned(i,tS0'length);
0

You can do it like this. It looks a little simplier.

ts0 <= std_logic(to_unsigned(i, 1)(0));

You will build a unsigned vector by using the to_unsigned function. Then you grap the lowest bit and convert it to std_logic and then you assign it to the signal.

This is how it works fine :-).

Improving on a previous answer, you could write:

ts0 <= to_unsigned(i, 1)(0);

Provided you include the "numeric_std" library, in which that function is defined:

library IEEE;
use IEEE.numeric_std.all;

You can skip the explicit cast to "std_logic" type because the return type of "to_unsigned()" is an array of "std_logic" itself:

type UNSIGNED is array (NATURAL range <>) of STD_LOGIC;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Sophia Al-Mansoor

Sophia Al-Mansoor

Global Business & E-Commerce Reporter

Sophia analyzes international trade, startup ecosystems, retail transformation, and supply chain logistics for modern digital publications.

Share this article
Twitter Facebook Pinterest