Haz una pregunta
  Foros de Electrónica » Diseño digital » Interfaces y Programación
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

09/01/2010 #1


Problema básico VHDL
Hola:
Estoy diseñando un circuíto en VHDL y llevo dos días clavado por cual de unas señales que no se me reflejan en la salida de un comparador. Basicamente por más que busco no encuentro la solución. Lo que me ocurre es que con un código muy básico como el que os expongo a continuación la entrada del sistema se me modifica perfectamente pero la salida me sale en todo momento "undefined" (indefinida). ¿¿¿¿Alguien me puede decir a que se puede deber?.
PD. Os dejo a coninuación el código y el test bench que uso.

Código:

library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.NUMERIC_STD.all;

entity comparador is
port(cmsel:in unsigned (7 downto 0);
pent2: out unsigned(15 downto 0)
);
end comparador;


architecture COMP of comparador is
begin

comparacion:process
begin
if (cmsel=X"00") then --PREGUNTAR QUE REXISTRO DE COMPARACION VAMOS A UTILIZAR
pent2<=X"AAAA";
end if;
wait;
end process comparacion;
end comp;
Test bench:

--librerias
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.NUMERIC_STD.all;

entity comparador is
end comparador;

architecture COMP of comparador is
signal cmsel: unsigned (7 downto 0);
signal pent2: unsigned(15 downto 0);

component compar is
port(cmsel:in unsigned (7 downto 0); --selecciona o cm a utilizar
pent2: out unsigned(15 downto 0)
);
end component compar;

Begin
--INSTANCIACION
t_compar: compar port map (pent2 => pent2,cmsel=>cmsel);--,pcm=>pcm, cmsel=>cmsel,ent2l=>ent2l,ent2h=>ent2h,cml=>cml,cm h=>cmh,comp=>comp);

PCMSEL:process
Begin
cmsel<=X"01" , X"00" after 100 ns;
wait;
end process PCMSEL;

end COMP;
Muchas gracias
09/01/2010 #2

Avatar de Ferny

Respuesta: Problema básico VHDL
¿Si dejas el process así?

comparacion:process(cmsel)
begin
if (cmsel=X"00") then --PREGUNTAR QUE REXISTRO DE COMPARACION VAMOS A UTILIZAR
pent2<=X"AAAA";
end if;
end process comparacion;

- Cambio 1: tienes que poner alguna señal en la lista de sensibilidad del process, si no no se "ejecuta"
- Cambio 2: ¿para qué pones un wait dentro de ese process?
09/01/2010 #3


Respuesta: Problema básico VHDL
El wait lo puse para evitar poner la lista de sensibilidad de todos modos estoy probando sin el wait y poniendo cmsel en la lista de sensibilidad y sigue mostrando la salida "undefined". A lo mejor digo una tontería es que aun soy un poco novato en esto del vhdl
09/01/2010 #4

Avatar de Ferny

Respuesta: Problema básico VHDL
Puede ser que te falte el "else" del if, ya que para todo valor distinto de x"00" es cierto que no está definida la salida... Tendrás que ponerle un valor por defecto.

if (cmsel=X"00") then --PREGUNTAR QUE REXISTRO DE COMPARACION VAMOS A UTILIZAR
pent2<=X"AAAA";
else
pent2<=X"1234"
end if;
09/01/2010 #5


Respuesta: Problema básico VHDL
Nada sigue igual con indefinido en la salida :(. De todos modos si que ha sido una buena apreciación gracias
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Interfaces y Programación

Lenguajes de programación, gestión y manejo de puertos

Cerrar
Foros de Electrónica » Diseño digital » Interfaces y Programación

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.