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

[0] Índice de Mensajes

Ir a la versión completa