Establecer STD_LOGIC_VECTOR con entero constante

4

¿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?

    
pregunta Dean

2 respuestas

5

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;
    
respondido por el wzab
3

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.

    
respondido por el rick

Lea otras preguntas en las etiquetas