29
Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos.

Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

Embed Size (px)

Citation preview

Page 1: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

Descrição de Circuitos Combinacionais em VHDL

Exemplos:• Porta XOR;• Mux;• Codificador de prioridade;• Decodificador para mostrador de 7

segmentos.

Page 2: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

• Uma porta XOR é descrita em três estilos (modelos) diferentes: comportamental, lógico e estrutural.

• A descrição estrutural usa o fato de que A XOR B = A.B + A.B, como mostrado no esquemático da função lógica XOR:

Porta XOR

Page 3: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

Porta XOR

• Entidade xorgate:

LIBRARY ieee;USE ieee.STD_LOGIC_1164.ALL;-- A declaração "library work;" já é implícita e não-- precisa ser incluída

USE work.components.ALL; -- Somente p/ a versão estrutural-- Torna visíveis as declarações de componentes em components.vhd

(versão estrutural)

ENTITY xorgate IS PORT (a, b: IN STD_LOGIC; c: OUT STD_LOGIC);END xorgate;

Page 4: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

• Primeiro precisam ser compilados os componentes da descrição estrutural da porta XOR, as funções NOT, AND e OR. Suas descrições em VHDL estão mostradas a seguir:

Inversor (arquivo inverter.vhd):

LIBRARY ieee;USE ieee.STD_LOGIC_1164.ALL;

ENTITY inverter IS PORT (a: IN STD_LOGIC; an: OUT STD_LOGIC);END inverter;

ARCHITECTURE logic_not OF inverter ISBEGIN an <= NOT a AFTER 5 ns; -- Este atraso é ignorado na sínteseEND logic_not;

Porta XOR Estrutural

Page 5: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

Porta AND (arquivo and2.vhd):

LIBRARY ieee;

USE ieee.STD_LOGIC_1164.ALL;

ENTITY my_and2 IS

PORT (a,b: IN STD_LOGIC;

s: OUT STD_LOGIC);

END my_and2;

ARCHITECTURE logic OF my_and2 IS

BEGIN

s <= a AND b AFTER 10 ns;

-- Este atraso é ignorado na síntese

END logic;

Porta XOR Estrutural

Porta OR (arquivo or2.vhd):

LIBRARY ieee;USE ieee.STD_LOGIC_1164.ALL;

ENTITY my_or2 IS PORT (a,b: IN STD_LOGIC; s: OUT STD_LOGIC);END my_or2;

ARCHITECTURE logic OF my_or2 ISBEGIN s <= a OR b AFTER 8 ns; -- AFTER é ignorado na sínteseEND logic;

Page 6: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

• Todos os blocos de nível hierárquico inferior utilizados na descrição estrutural de um circuito têm que ser previamente validados (simulados corretamente) e sintetizados, o que foi feito para as entidades inverter, my_and2 e my_or2.

• A seguir é mostrado um pacote com as declarações dos componentes, permitindo que os mesmos possam ser reaproveitados em diversas unidades de projeto.

• Depois declara-se a entidade de nível superior xorgate e suas três arquiteturas.

Construindo a hierarquia

Page 7: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

LIBRARY ieee;USE ieee.STD_LOGIC_1164.ALL;-- Este arquivo contém as declarações de componentes dentro -- do package "components". Ao ser compilado, -- este package vai para a biblioteca work, por default.

PACKAGE components IS COMPONENT inverter PORT (a: IN STD_LOGIC; an: OUT STD_LOGIC); END COMPONENT;

COMPONENT my_and2 PORT (a,b: IN STD_LOGIC; s: OUT STD_LOGIC); END COMPONENT;

COMPONENT my_or2 PORT (a,b: IN STD_LOGIC; s: OUT STD_LOGIC); END COMPONENT;END components;

Construindo a hierarquia

Page 8: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

• A primeira arquitetura descreve a função ou-exclusivo utilizando uma atribuição condicional de sinal;

• A segunda arquitetura também é comportamental, porém utiliza um processo para descrever o ou-exclusivo;

• A terceira arquitetura utiliza o operador lógico XOR que é parte integrante da linguagem VHDL;

• E a quarta constrói a porta lógica XOR a partir dos componentes AND, OR e NOT criados anteriormente.

Arquiteturas para xorgate

Page 9: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

-- Porta lógica OU-Exclusivo

-- modelada no estilo comportamental concorrente.

ARCHITECTURE behav OF xorgate IS

BEGIN

c <= '0' WHEN a = '0' AND b = '0' ELSE

'1' WHEN a = '0' AND b = '1' ELSE

'1' WHEN a = '1' AND b = '0' ELSE

'0' WHEN a = '1' AND b = '1' ELSE

'X' ;

END behav;

Arquiteturas para xorgate

Page 10: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

-- Porta lógica OU-Exclusivo -- modelada no estilo comportamental sequencial.ARCHITECTURE behav2 OF xorgate ISBEGIN

PROCESS(a,b) BEGIN

IF a = b THEN c <= '0'; ELSE

c <= '1'; END IF;

END PROCESS;END behav2;

Arquiteturas para xorgate

Page 11: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

-- Porta lógica OU-Exclusivo modelada no estilo lógico ou RTL.

ARCHITECTURE logic OF xorgate IS

BEGIN

c <= a XOR b;

END logic;

Arquiteturas para xorgate

Page 12: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

-- Porta lógica OU-Exclusivo modelada no estilo estruturalARCHITECTURE structural OF xorgate IS SIGNAL na, nb, nab, anb: STD_LOGIC;-- Os componentes foram declarados no package (VHDL'93)-- Uma configuração pode ser inserida na área declarativa de uma arquitetura FOR u1,u2: inverter USE ENTITY work.inverter(logic_not); -- library_name.entity_name(architecture_name) FOR u3,u4: my_and2 USE ENTITY work.my_and2(logic); FOR u5: my_or2 USE ENTITY work.my_or2(logic);

BEGINu1: inverter PORT MAP (a, na);u2: inverter PORT MAP (b, nb);u3: my_and2 PORT MAP (na, b, nab);u4: my_and2 PORT MAP (a, nb, anb);u5: my_or2 PORT MAP (nab, anb, c);

END structural;

Arquiteturas para xorgate

Page 13: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

• O procedimento adotado para a descrição estrutural, de declarar os componentes em um pacote e depois incluir o pacote no arquivo da entidade final (xorgate), sem declarar os componentes na arquitetura, somente é aceito na versão VHDL '93.

Arquiteturas para xorgate

Page 14: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

• Exemplo de configuração:

CONFIGURATION parts OF xorgate IS

FOR logic -- nome da arquitetura selecionada para

-- simulação/síntese

END FOR;

END parts;

• A configuração chamada parts é associada com a entidade de nível superior (xorgate) na hierarquia do projeto, nomeando também a arquitetura de nível superior (logic).

• A configuração parts seleciona qual das quatro arquiteturas disponíveis para a entidade xorgate será utilizada na simulação e na síntese. Os resultados serão obtidos para a arquitetura logic.

Arquiteturas para xorgate

Page 15: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

• A síntese de xorgate para um mesmo FPGA da Altera (família MAX3000) forneceu resultados idênticos para as quatro arquiteturas, com o mesmo consumo de recursos internos e mesmo tempo de atraso.

Resultados para xorgate

Page 16: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

• Um multiplexador ou mux é um circuito combinacional de n entradas de informação, uma saída y e m (= log2n) entradas de seleção.

• Será descrito, simulado e sintetizado um MUX 2x1 (duas entradas e uma saída), no qual as entradas e a saída são barramentos de 8 bits de largura, enquanto o sinal S possui 1 bit de comprimento.

Multiplexador 2 X 1

MUX 2x1 com 8 bits de largura:

Page 17: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

LIBRARY ieee;USE ieee.STD_LOGIC_1164.ALL;

ENTITY mux2to1 IS PORT(s: IN STD_LOGIC; zero, one: IN STD_LOGIC_VECTOR(7 DOWNTO 0); y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END mux2to1;

ARCHITECTURE behavior OF mux2to1 ISBEGIN y <= one WHEN s='1' ELSE zero;END behavior;

Multiplexador 2 x 1: modelo VHDL

Page 18: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

• A entidade mux2to1 define a interface externa para o modelo.

• A especificação de faixa no tipo STD_LOGIC_VECTOR define a largura do sinal:

– STD_LOGIC_VECTOR (n2 DOWNTO n1) – define uma palavra binária cujo primeiro bit da esquerda para a direita é o mais significativo (com índice n2 > n1).

– STD_LOGIC_VECTOR (n1 TO n2) – define uma palavra binária cujo primeiro bit da esquerda para a direita é o menos significativo (com índice n1 < n2).

Multiplexador 2 X 1

Page 19: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

• A síntese mostra que o MUX de dois canais com 8 bits de largura é implementado por 8 blocos MUX de dois canais de um bit de largura, em paralelo.

• A figura mostra um exemplo de simulação, para um dispositivo da família MAX7000B. O mux 2x1 ocupou 25% das LC's desse FPGA, e o tpd máximo foi de 3,5 ns.

Multiplexador 2 X 1

Page 20: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

• Um codificador de prioridade é um circuito que possui uma hierarquia nas suas entradas, a qual determina o valor que será apresentado na saída.

• A saída será o valor em binário correspondente à entrada de endereço mais alto que estiver ativa.

• Se nenhuma entrada estiver ativa, é codificado o valor “000” no vetor de saída, definindo o nível de prioridade mais baixo (implícito).

Codificador de Prioridade de 8 Níveis (Octal-Binário)

Page 21: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

Codificador de Prioridade de 8 Níveis (Octal-Binário)

Codificador com oito níveis de prioridade

Page 22: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

LIBRARY ieee;USE ieee.STD_LOGIC_1164.ALL;

ENTITY priority IS PORT (y1,y2,y3,y4,y5,y6,y7: IN STD_LOGIC;

vec: OUT STD_LOGIC_VECTOR(2 DOWNTO 0) );END priority;

ARCHITECTURE behavior OF priority ISBEGIN vec <= "111" WHEN y7='1' ELSE "110" WHEN y6='1' ELSE "101" WHEN y5='1' ELSE "100" WHEN y4='1' ELSE "011" WHEN y3='1' ELSE "010" WHEN y2='1' ELSE "001" WHEN y1='1' ELSE "000"; END behavior;

Codificador de Prioridade de 8 Níveis (Octal-Binário)Código VHDL

Page 23: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

• Uma atribuição condicional é muito adequada para descrever o comportamento do codificador.

• Na figura estão ilustradas as formas de onda da simulação do codificador de prioridade de 8 níveis descrito em VHDL.

• O dispositivo utilizado para a síntese foi um FPGA da família MAX3000. O tpd máximo foi de 4,5 ns, e a ocupação de LC's do CI foi de 9%.

Codificador de Prioridade de 8 Níveis (Octal-Binário)

Page 24: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

• Um decodificador para mostrador de 7 segmentos é descrito, com duas arquiteturas (comportamentos) possíveis:– Entrada em BCD;– Entrada em binário de 4 bits.

Decodificador para Mostrador de 7 Segmentos

LIBRARY ieee;USE ieee.std_logic_1164.ALL;

-- decodificador para mostrador de 7 segmentos

ENTITY decod_7seg ISPORT (entrada: IN INTEGER RANGE 0 TO 15; abcdefg: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));

END decod_7seg;

Page 25: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

ARCHITECTURE BCD OF decod_7seg ISBEGIN -- abcdefg abcdefg <= "1111110" WHEN entrada = 0 ELSE

"0110000" WHEN entrada = 1 ELSE"1101101" WHEN entrada = 2 ELSE"1111001" WHEN entrada = 3 ELSE"0110011" WHEN entrada = 4 ELSE"1011011" WHEN entrada = 5 ELSE"1011111" WHEN entrada = 6 ELSE"1110000" WHEN entrada = 7 ELSE"1111111" WHEN entrada = 8 ELSE"1110011" WHEN entrada = 9 ELSE"XXXXXXX";

END BCD;

Decodificador para Mostrador de 7 Segmentos

Page 26: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

Decodificador de BCD para Mostrador de 7 Segmentos

Page 27: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

ARCHITECTURE binario OF decod_7seg ISBEGIN WITH entrada SELECT -- abcdefg

abcdefg <= "1111110" WHEN 0, "0110000" WHEN 1, "1101101" WHEN 2, "1111001" WHEN 3, "0110011" WHEN 4, "1011011" WHEN 5, "1011111" WHEN 6, "1110000" WHEN 7, "1111111" WHEN 8, "1111011" WHEN 9, "1110111" WHEN 10, "0011111" WHEN 11, "1001110" WHEN 12, "0111101" WHEN 13, "1001111" WHEN 14,

"1000111" WHEN 15; END binario;

Decodificador para Mostrador de 7 Segmentos

Page 28: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

Decodificador para Mostrador de 7 Segmentos

Page 29: Descrição de Circuitos Combinacionais em VHDL Exemplos: Porta XOR; Mux; Codificador de prioridade; Decodificador para mostrador de 7 segmentos

• Uma configuração seleciona a arquitetura a sintetizar e simular.

CONFIGURATION options OF decod_7seg IS

FOR binario -- nome da arquitetura selecionada para

-- simulação/síntese

END FOR;

END options;

Decodificador para Mostrador de 7 Segmentos