Programación Específica > Lenguaje de Descripción de Hardware VHDL
Duda Con La Sentencia Case
(1/1)
Geo:
Qué tal, recién empiezo un curso en el que usaremos VHDL, por ahora estoy comenzando a leer y ojalá puedan ayudarme con un par de ejercicios.
En el libro que estoy leyendo (en el capítulo dedicado a las setencias secuenciales), se pide implementar un multiplexor 2-1 utilizando la sentencia CASE. Ya hice el multiplexor con una sentencia when en una asignación, pero no logro que me funcione usando la sentencia case, tengo esto:
--- Código: Text --- library ieee;use ieee.std_logic_1164.all; entity multiplexor is port( entrada0, entrada1: in std_logic; selector: in std_logic; salida: out std_logic );end multiplexor; architecture comp_multiplexor of multiplexor isbegin -- con esto funciona -- salida <= entrada0 when selector = '0' else entrada1; -- pero aquí no case selector is when '0' => null; when '1' => null; end case;end data_flow;
¿Qué es lo que estoy haciendo mal? No sé si no pueda usar '0' y '1' para las selecciones, me gustaría que me comentaran al respecto. Por ahora estoy usando el simulador Simili Sonata 3.
También, tengo problemas con otro ejercicio, pero estoy seguro que la solución es la misma, se trata de un decodificador 2x4 implementado también con una sentencia case (y con una if), no sé si se pueda hacer esto:
--- Código: Text --- entity dec24 isport( entrada: in std_logic_vector( 1 downto 0 ); salida: out std_logic_vector( 3 downto 0 ); ... );end dec24; architecture arch of dec24 isbegin...case entrada is when B"00" => ... when B"01" =>end case;...end arch; Me refiero a las opciones B"00" y B"01", ¿es correcto hacerlo?
En este mismo ejemplo, ¿esta instrucción será válida?
--- Código: Text --- salida <= ( 0 => '1', others => '0' ); La pretendo usar para poner en 1 el bit deseado y los demás en 0 explícitamente.
Gracias de antemano por cualquier comentario.
Saludos,
José Jorge (Geo).
Geo:
Pues nada, que ya se cuál era mi error en el primer código, las sentencias case DEBEN ir dentro de una process.
Para lo segundo, si funciona, pero me falta simularlo pues el programa que estoy usando no me deja alterar los valores de las entradas ni guardar los mapas de tiempos (formas de onda).
Saludos,
José Jorge (Geo).
Navegación
Ir a la versión completa