You are on page 1of 23

Universidade Tecnológica Federal do Paraná – UTFPR Curso Superior de Tecnologia em Sistemas para a Internet

LD31A – Lógica Digital

Prof. Rogério Paulo Henrique A. Gonçalves Sabo
rogerioag@utfpr.edu.br phsabo@utfpr.edu.br

Aula 011
Instanciando e Testando Entidades VHDL GHDL

2

Em VHDL sistemas grandes também são criados pela interconexão de módulos mais simples  Isso é o modelo estrutural.HDL Modelo Estrutural Sistemas Lógicos Complexos são construídos pela combinação de portas lógicas e outras unidades básicas. estrutural Exemplo de Modelo Estrutural a b G1 X1 G3 c d G2 X2 f - unidade_a0 3 .

escolhe os componentes 2.HDL Modelo Estrutural Expressão do Circuito a b G1 X1 G3 c d G2 X2 f f = a.d X1 = a.d f = X1 + X2 unidade_a0 Em VHDL os modelos estruturais são construídos usandose blocos construtivos chamados de componentes Modelo Estrutural: 1.b X2 = c.b + c. descreve como os componentes são conectados 4 .

Entidade a b G1 X1 G3 f c d G2 X2 unidade_a0 5 .

Entidade Descrevemos as entidades componentes a b G1 X1 G3 f c d G2 X2 unidade_a0 Entidades identificadas: AN D OR 6 .

end and2. OR architecture logica of and2 is begin z <= x or y. y: in bit. end logica. 7 . entity or2 is port(x.Descrição de componentes Descrevemos as entidades componentes entity and2 is port(x. AN D architecture logica of and2 is begin z <= x and y. end or2. end logica. z: out bit). z: out bit). y: in bit.

end unidade_a0. y=>d. z: out bit). -. z=>x2). Descrição Estrutural a b G1 X1 G3 f c d G2 X2 unidade_a0 y=>b. z: out bit). d: in bit. portas e resultados. z=>f). component or2 port(x. begin g1: and2 port map(x=>a. y: in bit. y=>x2. z=>x1). g2: and2 port map(x=>c. f: out bit). y: in bit. 8 . end estrutural. c. architecture estrutural of unidade_a0 is component and2 port(x. g3: or2 port map(x=>x1. end component. signal x2: bit. b. end component.Descrição da Entidade entity unidade_a0 is port(a.sinais para ligar as signal x1: bit.

architecture estrutural of unidade_a0 is component and2 port(x. end unidade_a0. signal x2: bit.sinais para ligar as signal x1: bit. c. b. component or2 port(x. y: in bit. begin g1: and2 port map(x=>a. y=>d. z: out bit).Descrição da Entidade entity unidade_a0 is port(a. g3: or2 port map(x=>x1. f: out bit). d: in bit. portas e resultados. g2: and2 port map(x=>c. end component. 9 . z=>f). z=>x1). z: out bit). y=>x2. z=>x2). end component. -. Descrição Estrutural a b G1 X1 G3 f c d G2 X2 unidade_a0 y=>b. y: in bit. end estrutural.

g3: or2 port map(x=>x1. end unidade_a0. end estrutural. y=>d. Descrição Estrutural a b G1 X1 G3 f c d G2 X2 unidade_a0 y=>b. end component. y: in bit. z=>x1). d: in bit. portas e resultados. begin g1: and2 port map(x=>a. y=>x2. y: in bit. b. end component. 10 . z: out bit). f: out bit). -. z=>x2).Descrição da Entidade entity unidade_a0 is port(a. z: out bit). architecture estrutural of unidade_a0 is component and2 port(x.sinais para ligar as signal x1: bit. signal x2: bit. c. g2: and2 port map(x=>c. z=>f). component or2 port(x.

Descrição da Entidade entity unidade_a0 is port(a. b. z=>x2). z=>x1). y=>x2. portas e resultados. f: out bit). y=>d. signal x2: bit. end component. end estrutural. z=>f). g2: and2 port map(x=>c. y: in bit. begin g1: and2 port map(x=>a. g3: or2 port map(x=>x1. end unidade_a0. -. z: out bit). Descrição Estrutural a b G1 X1 G3 f c d G2 X2 unidade_a0 y=>b. d: in bit. architecture estrutural of unidade_a0 is component and2 port(x. 11 .sinais para ligar as signal x1: bit. end component. component or2 port(x. z: out bit). y: in bit. c.

Mapeamento de portas com os sinais Descrição Estrutural a b G1 X1 G3 f c d G2 X2 unidade_a0 y=>b. begin g1: and2 port map(x=>a. z=>f). y: in bit. y=>d. c. y: in bit. z=>x1). g3: or2 port map(x=>x1. d: in bit. architecture estrutural of unidade_a0 is component and2 port(x. end component.sinais para ligar as signal x1: bit. end estrutural. z=>x2). f: out bit). z: out bit). end component. z: out bit). y=>x2. portas e resultados. signal x2: bit. g2: and2 port map(x=>c. b. 12 . -.Descrição da Entidade entity unidade_a0 is port(a. end unidade_a0. component or2 port(x.

Temos nossa Entidade a b G1 X1 G3 f c d G2 X2 unidade_a0 13 .

Teste da Entidade Testebench a b G1 X1 G3 f c d G2 X2 unidade_a0 unidade_a0_tb 14 .

Teste da Entidade Testebench a b G1 X1 G3 f c d G2 X2 unidade_a0 unidade_a0_tb 15 .

Teste da Entidade Testebench t_a t_b t_c t_d a b G1 X1 G3 f t_f c d G2 X2 unidade_a0 unidade_a0_tb 16 .

Teste da Entidade Testebench t_a t_b t_c t_d a b G1 X1 G3 f t_f c d G2 X2 unidade_a0 unidade_a0_tb 17 .

component unidade_a0 port(a. for unidade_a0_0: unidade_a0 use entity work. 18 . c => t_c. d => t_d. architecture estrutural of unidade_a0_tb is -. t_c. d: in bit. signal t_a. end component. c. b => t_b. -. b.Instanciação do Componente. t_b.Descrição da Entidade de Teste entity unidade_a0_tb is end unidade_a0_tb. t_d. f => t_f).unidade_a0. unidade_a0_0: unidade_a0 port map (a => t_a. f: out bit). t_f: bit. begin -.Declaração do componente.Especifica qual entidade está vinculada com o componente.

entradas. -. z.Um registro é criado com as entradas e saídas da entidade. x. f : bit.Descrição da Entidade de Teste process -.saídas. type pattern_type is record -. 19 . y. end record. t: bit.

'1'. '0'. '1'. '0'). Descrição da Entidade de Teste 20 . ('0'. '1'). '1'. '0'. '0'. ('1'. '1'). '0'. '0'. '0'. ('1'. ('0'. ('1'. '0'. ('1'. '0'). '1'. ('0'. '1'. '0'. '0'). '0'. '1'. '1'. constant patterns : pattern_array := (('0'. ('1'. '0'. '0'). '1') ). '1'. ('0'. '1'. '0'. '0'. ('1'. '0').Os padrões de entrada são aplicados (injetados) às entradas. '0'. ('0'. '1'. '0'). '1'. '1'. '0'. '1'.-. '1'). '1'. '0'. '0'. ('0'. '1'. '1'). '1'). '1'. '0'. '0'. '1'. '0'. '0'. '0'). type pattern_array is array (natural range <>) of pattern_type. '1'). ('0'. '1'. '1'. '0'). '1'. '1'. '0'). '1'. '0'. '1'. '1'. '0'. '0'. ('1'. '0'. ('1'.

-.Wait forever.Injeta as entradas. -.z." severity error. for i in patterns'range loop -.f report "Valor de t_f não confere com o resultado esperado. end estrutural.t. Descrição da Entidade de Teste 21 . assert t_f = patterns(i).Aguarda os resultados.Checagem de padrões. t_b <= patterns(i). -. end process. assert false report "Fim do teste." severity note.x. wait.begin -. t_a <= patterns(i). t_d <= patterns(i).Checa o resultado com a saída esperada no padrão. wait for 1 ns. t_c <= patterns(i).y. Isto finaliza a simulação. end loop.

Diagrama de Tempo 22 .

Resumo da Aula de Hoje Tópicos mais importantes: Linguagem de Descrição de Hardware (HDL) Entregar folha com: Nome Registro ou Matrícula Data de Hoje Resumo 23 .