Asignar binario en VHDL

1

Recibo un error de sintaxis cerca de data0_sim en el siguiente código: nuevo en vhdl y confuso, ya que creo que esto debería funcionar:

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

library unisim;
use unisim.vcomponents.all;


signal data0_sim     : std_logic_vector(8-1 downto 0);
data0_sim <= "00001111";
    
pregunta Ross W

2 respuestas

2

Solo podemos adivinar ya que no nos ha dicho el error de sintaxis, pero a partir del código publicado PUEDE ser:

signal data0_sim     : std_logic_vector(8-1 downto 0);
data0_sim <= "00001111";

Ahora hay dos cosas que podrías estar tratando de hacer aquí:

1) declara una señal y dale un valor inicial. La sintaxis correcta para eso es:

signal data0_sim : std_logic_vector(8-1 downto 0) := "00001111";

Tenga en cuenta que el inicializador utiliza la sintaxis de asignación de variables, para indicar que la semántica de asignación de señales (asignación pospuesta, generación de eventos) no se aplica.

2) declarar una señal y más tarde, asignarle un valor.

La sintaxis correcta para eso requiere más contexto: las declaraciones y declaraciones ocupan dos espacios diferentes en una unidad VHDL. Esto sigue lenguajes de programación como Ada, pero es bastante diferente de C.

En VHDL, el contexto puede ser una entidad / arquitectura como:

entity demo is
end demo;

architecture test of demo is
   -- declaration region : your signals, constants, types etc here
   signal data0_sim     : std_logic_vector(8-1 downto 0);
begin
   -- statement region : your code here
   data0_sim <= "00001111";
end test;
    
respondido por el Brian Drummond
1

¿Por qué no define un componente, es decir,

entity example_ent is
    port (data0_sim : out std_logic_vector(7 downto 0));
end example_ent

architecture example_arch of example_ent is
begin
    data0_sim <= "00001111";
end example_arch
    
respondido por el MiljanNC

Lea otras preguntas en las etiquetas