Haz una pregunta
  Foros de Electrónica » Temas de Interés » Software de Simulación y Diseño Electrónico
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

13/03/2011 #1

Avatar de johann7

duda vhdl y case when (xilinx)
tengo un problemita, espero me puedan ayudar por favor
es que con la declaración case when tengo que diseñar el cto 74ls245 y ya lo intente y no mas no me sale, tengo esto no se si este bien o no
entity CI_74LS245 is
Port ( E : in STD_LOGIC;
DIR : in STD_LOGIC;
A : inout STD_LOGIC_VECTOR (7 downto 0);
B : inout STD_LOGIC_VECTOR (7 downto 0));
end CI_74LS245;

architecture Behavioral of CI_74LS245 is
SIGNAL C: STD_LOGIC_VECTOR (7 DOWNTO 0);
SIGNAL EDIR: STD_LOGIC_VECTOR (1 DOWNTO 0);
begin
CI:PROCESS (E,DIR, A, B)
BEGIN
EDIR(1) <= E;
EDIR(0) <= DIR;
CASE EDIR IS
WHEN "00" => A <= B;
WHEN "01" => B <= A;
WHEN OTHERS => C <= "ZZZZZZZZ";
END CASE;
A <= C;
B <= C;
END PROCESS CI;

end Behavioral;

y me marca de advertencia

WARNING:Xst:646 - Signal <EDIR> is assigned but never used. This unconnected signal will be trimmed during the optimization process.

estoy usando el project navigator (ISE) de Xilinx 12.4
14/03/2011 #2


Prueba declarando EDIR como variable, dentro del proceso. Y luego haz la siguientes asignacion:
EDIR := E & DIR;
14/03/2011 #3

Avatar de Ferny

Yo lo dejaría así:

Código:
(.... entity, etc. ....)

architecture Behavioral of CI_74LS245 is
SIGNAL EDIR: STD_LOGIC_VECTOR (1 DOWNTO 0);
begin
EDIR <= E & DIR;
CI:PROCESS (EDIR, A, B)
BEGIN
  CASE EDIR IS 
    WHEN "00" =>
      A <= B;
      B <= (others => 'Z');
    WHEN "01" =>
      A <= (others => 'Z');
      B <= A;
    WHEN OTHERS =>
      A <= (others => 'Z');
      B <= (others => 'Z');
  END CASE;
END PROCESS CI;
Al ser las señales A y B bidireccionales, la señal que en un determinado caso no es asignada sino que es "leída", tienes que asignarle alta impedancia ('Z'), que es como funciona en la realidad.

La señal EDIR se puede sacar fuera del process. Por otro lado, lo que te sale es un warning y simplemente indica que durante la fase de optimización de las puertas lógicas en la FPGA, esa señal va a desaparecer ya que no es necesaria. Es muy típico que salgan este tipo de warnings, no te preocupes. En tu caso, fíjate que EDIR no es necesaria ya que podrías haber usado perfectamente E y DIR por separado, EDIR es una señal redundante.

Un saludo
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 Software de Simulación y Diseño Electrónico

Todo lo relacionado con estos programas.

Cerrar
Foros de Electrónica » Temas de Interés » Software de Simulación y Diseño Electrónico

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