5
\$\begingroup\$

Is it possible to set a STD_LOGIC_VECTOR(6 DOWNTO 0) with a constant like so:

signal s1: std_logic_vector(6 downto 0);
s1 <= 12;

Or do I have to define it as a set of bits?

\$\endgroup\$

2 Answers 2

6
\$\begingroup\$

You can do it, but not directly. Something like this should work:

s1 <= std_logic_vector(to_unsigned(12,7));

or

s1 <= std_logic_vector(to_unsigned(12,s1'length)); 

Of course at the begining of your file you should declare:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
\$\endgroup\$
1
  • \$\begingroup\$ And of course, if you are representing numbers, you should be using either the un/signed vector types, or an integer type. \$\endgroup\$ Jan 31, 2014 at 14:51
3
\$\begingroup\$

wzab's answer is precisely what you asked. So I'll just remind that you can go the other way round. You could declare s1 as an integer, say:

signal s1: integer range 0 to 127;

and that will keep your code free from type conversions, at least until you have to push the signals out of the chip. Depending on the amount of operations, this can make your code significantly cleaner.

\$\endgroup\$

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.