A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Descrição de Circuitos Combinacionais em VHDL

Apresentações semelhantes


Apresentação em tema: "Descrição de Circuitos Combinacionais em VHDL"— Transcrição da apresentação:

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

2 Porta XOR 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:

3 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;

4 Porta XOR Estrutural 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 IS BEGIN an <= NOT a AFTER 5 ns; -- Este atraso é ignorado na síntese END logic_not;

5 Porta XOR Estrutural 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 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 IS BEGIN s <= a OR b AFTER 8 ns; -- AFTER é ignorado na síntese END logic;

6 Construindo a hierarquia
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.

7 Construindo a hierarquia
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); COMPONENT my_or2 END components;

8 Arquiteturas para xorgate
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.

9 Arquiteturas para xorgate
-- 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;

10 Arquiteturas para xorgate
-- Porta lógica OU-Exclusivo -- modelada no estilo comportamental sequencial. ARCHITECTURE behav2 OF xorgate IS BEGIN PROCESS(a,b) IF a = b THEN c <= '0'; ELSE c <= '1'; END IF; END PROCESS; END behav2;

11 Arquiteturas para xorgate
-- Porta lógica OU-Exclusivo modelada no estilo lógico ou RTL. ARCHITECTURE logic OF xorgate IS BEGIN c <= a XOR b; END logic;

12 Arquiteturas para xorgate
-- Porta lógica OU-Exclusivo modelada no estilo estrutural ARCHITECTURE 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); BEGIN u1: 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;

13 Arquiteturas para xorgate
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.

14 Arquiteturas para xorgate
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.

15 Resultados para xorgate
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.

16 Multiplexador 2 X 1 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. MUX 2x1 com 8 bits de largura:

17 Multiplexador 2 x 1: modelo VHDL
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 IS BEGIN y <= one WHEN s='1' ELSE zero; END behavior;

18 Multiplexador 2 X 1 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).

19 Multiplexador 2 X 1 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.

20 Codificador de Prioridade de 8 Níveis (Octal-Binário)
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).

21 Codificador de Prioridade de 8 Níveis (Octal-Binário)
Codificador com oito níveis de prioridade

22 Codificador de Prioridade de 8 Níveis (Octal-Binário) Código VHDL
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 IS BEGIN 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;

23 Codificador de Prioridade de 8 Níveis (Octal-Binário)
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%.

24 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. LIBRARY ieee; USE ieee.std_logic_1164.ALL; -- decodificador para mostrador de 7 segmentos ENTITY decod_7seg IS PORT (entrada: IN INTEGER RANGE 0 TO 15; abcdefg: OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END decod_7seg;

25 Decodificador para Mostrador de 7 Segmentos
ARCHITECTURE BCD OF decod_7seg IS BEGIN -- abcdefg abcdefg <= " " WHEN entrada = 0 ELSE " " WHEN entrada = 1 ELSE " " WHEN entrada = 2 ELSE " " WHEN entrada = 3 ELSE " " WHEN entrada = 4 ELSE " " WHEN entrada = 5 ELSE " " WHEN entrada = 6 ELSE " " WHEN entrada = 7 ELSE " " WHEN entrada = 8 ELSE " " WHEN entrada = 9 ELSE "XXXXXXX"; END BCD;

26 Decodificador de BCD para Mostrador de 7 Segmentos

27 Decodificador para Mostrador de 7 Segmentos
ARCHITECTURE binario OF decod_7seg IS BEGIN WITH entrada SELECT abcdefg abcdefg <= " " WHEN 0, " " WHEN 1, " " WHEN 2, " " WHEN 3, " " WHEN 4, " " WHEN 5, " " WHEN 6, " " WHEN 7, " " WHEN 8, " " WHEN 9, " " WHEN 10, " " WHEN 11, " " WHEN 12, " " WHEN 13, " " WHEN 14, " " WHEN 15; END binario;

28 Decodificador para Mostrador de 7 Segmentos

29 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;


Carregar ppt "Descrição de Circuitos Combinacionais em VHDL"

Apresentações semelhantes


Anúncios Google