2.2  Un inversor

El siguiente ejemplo es un inversor y su banco de pruebas. En el fichero inversor.vhdl está la entidad inversor:



library ieee;
use ieee.std_logic_1164.all; 

entity inversor is
  port (entrada : in std_logic;
        salida : out std_logic);
end inversor; 

architecture beh of inversor is
begin
  salida <= not entrada;
end beh;
 

y el banco de pruebas en el fichero tb_inversor.vhdl:


library ieee;

use ieee.std_logic_1164.all; 

entity tb_inv is
end tb_inv; 

architecture beh of tb_inv is

component inversor
  port (entrada : in std_logic;
        salida : out std_logic);
end component; 

signal entrada : std_logic:='0';
signal salida : std_logic; 

begin

INV: inversor port map (
                   entrada => entrada,
                   salida => salida);

-- Generar una senal cuadrada
-- por la entrada del inversor

  process
  begin
    wait for 100 ns;
    entrada<= not entrada;
  end process;

end beh;
 

Los pasos para realizar el análisis y la elaboración son:


$ ghdl -a inversor.vhdl tb_inversor.vhdl
$ ghdl -e tb_inv
 

Se genera el fichero tb_inv y al ejecutarlo comienza la simulación. Hay que especificar su duración y el archivo en el que se volcarán los resultados (fichero tb_inv.vcd):


$ ./tb_inv --stop-time=1000ns --vcd=tb_inv.vcd
./tb_inv:info: simulation stopped by -stop-time
 

Para visualizar los resultados usamos el programa GTKWAVE:


$ gtkwave tb_inv.vcd
 

Este programa nos permite seleccionar qué señales queremos visualizar, establecer el sistema de representación, buscar patrones, etc. Tenemos la opción de volcar los resultados a un fichero postcript para incluirlas en las documentaciones (figura[*]).

Figure: Resultado de la simulación del inversor

Juan Gonzalez 2004-10-01