¿Es posible establecer un STD_LOGIC_VECTOR(6 DOWNTO 0)
con una constante como esta:
signal s1: std_logic_vector(6 downto 0);
s1 <= 12;
¿O tengo que definirlo como un conjunto de bits?
¿Es posible establecer un STD_LOGIC_VECTOR(6 DOWNTO 0)
con una constante como esta:
signal s1: std_logic_vector(6 downto 0);
s1 <= 12;
¿O tengo que definirlo como un conjunto de bits?
Puedes hacerlo, pero no directamente. Algo como esto debería funcionar:
s1 <= std_logic_vector(to_unsigned(12,7));
o
s1 <= std_logic_vector(to_unsigned(12,s1'length));
Por supuesto, al comienzo de su archivo debe declarar:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
La respuesta de wzab es precisamente lo que preguntaste. Así que solo les recuerdo que pueden ir al revés. Podría declarar s1 como un entero, por ejemplo:
signal s1: integer range 0 to 127;
y eso mantendrá su código libre de conversiones de tipo, al menos hasta que tenga que empujar las señales fuera del chip. Dependiendo de la cantidad de operaciones, esto puede hacer que su código sea mucho más limpio.
Lea otras preguntas en las etiquetas vhdl