Circuitos Combinacionais Básicos Descrição VHDL

20
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Circuitos Combinacionais Básicos Descrição VHDL

description

Circuitos Combinacionais Básicos Descrição VHDL. Circuitos combinacionais básicos e representação em VHDL. Codificador. Codificador é um circuito que mapeia um conjunto de entradas em um conjunto de saídas segundo uma função de codificação - PowerPoint PPT Presentation

Transcript of Circuitos Combinacionais Básicos Descrição VHDL

Page 1: Circuitos Combinacionais Básicos  Descrição VHDL

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I

prof. Dr. César Augusto M. Marcon

prof. Dr. Edson Ifarraguirre Moreno

Circuitos Combinacionais Básicos

Descrição VHDL

Page 2: Circuitos Combinacionais Básicos  Descrição VHDL

2 / 20 Circuitos combinacionais básicose representação em VHDL

Exemplos de circuitos combinacionais

Decodificador / Codificador Comparadores Geradores de paridade Multiplexador / Demultiplexador Somador / Subtrator ULA Multiplicadores / Divisores PLAs

Exemplos de circuitos seqüenciais

Multiplicadores / Divisores Registradores (deslocamento,

carga paralela, acumulador, serial-paralelo)

Contadores (binário, BCD, Johnson, Gray / up, down, up-down)

Máquina de Estados Geradores de clock Seqüenciadores

Page 3: Circuitos Combinacionais Básicos  Descrição VHDL

3 / 20

Codificador

– Codificador é um circuito que mapeia um conjunto de entradas em um conjunto de saídas segundo uma função de codificação

– Em outras palavras, é um circuito que transforma uma informação de um formato para outro

– Um codificador é normalmente implementado de forma combinacional– Implementação deste em VHDL pode ser realizada com o comando with-select– Representação gráfica de codificador genérico

E0

E1

EN

S0

S1

SM

Page 4: Circuitos Combinacionais Básicos  Descrição VHDL

4 / 20

Codificador

– O exemplo abaixo ilustra um codificador BCD (binary-coded decimal) para sete segmentos

– Entrada em 4 bits (vetor Ent(3 downto 0))– Saída em 7 bits (vetor S(6 downto 0))

with Ent selectS <= "0000001" when "0000",

"1001111" when "0001","0010010" when "0010","0000110" when "0011","1001100" when "0100","0100100" when "0101","0100000" when "0110","0001111" when "0111","0000000" when "1000","0001100" when "1001","1111110" when others;

EXERCÍCIOS:• Descubra qual é a codificação do display de 7 segmentos, que relaciona as posições de S com os segmentos a,b,c,d,e,f,g• Diga se os segmentos acendem com 0 ou 1• Faça agora um codificador para mostrar todos os números hexadecimais

BINÁRIObg

a

ce

f

d

Page 5: Circuitos Combinacionais Básicos  Descrição VHDL

5 / 20

Codificador

EXERCÍCIOS:• Faça a codificação do display de elevador ilustrado abaixo

– Este tem como entrada um vetor de 2 bits que recebe a seguinte codificação

S(0)

S(1)S(2)

S(3) S(4)

E(1 ... 0)

parado 00 -

subindo 01 /\

descendo 10 \/

estragado 11 todos segmentos acesos

Page 6: Circuitos Combinacionais Básicos  Descrição VHDL

6 / 20

Codificador com Prioridade

· Codificador com prioridade é um circuito que determina entradas preferenciais· Conforme a ordem de preferência das entradas, no caso de haver mais de uma entrada ativa (por exemplo em 1), a entrada de maior prioridade é que determinará a codificação

· Exemplo:· A prioridade máxima é de S(2) e a mínima de S(0)

Y <= "11" when S(2) = '1' else "10" when S(1) = '1' else "01" when S(0) = '1' else "00";

Exercício:Desenhe o diagrama de blocos deste circuito

Importante haver condição default em atribuições e estruturas similares:NÃO HAVENDO ESTA CONDIÇÃO IMPLICA EM HAVER MEMORIZAÇÃO DO

SINAL - diferente de software! (warning latch infered)

Page 7: Circuitos Combinacionais Básicos  Descrição VHDL

7 / 20

Decodificador

– Decodificador é igualmente como um codificador, um circuito que mapeia entradas em saídas segundo uma função de codificação– Genericamente, um circuito é chamado de decodificador, quando a função de transformação que ele realiza é inversa a de um circuito codificador– Um caso especial de decodificador é o binário. Este relaciona n entradas em 2n saídas. Normalmente utilizado para endereçamento de memórias RAM– Exemplo:

– Decodificador de 3 entradas (A(2...0)) e 23 (8) saídas (S(7...0))

with A selectS <= "00000001" when "000",

"00000010" when "001","00000100" when "010","00001000" when "011","00010000" when "100","00100000" when "101","01000000" when "110","10000000" when "111";

A(2)

A(1)

A(0)

S(7)

S(6)

S(5)

S(4)

S(3)

S(2)

S(1)

S(0)

Page 8: Circuitos Combinacionais Básicos  Descrição VHDL

8 / 20

Multiplexador (Mux)

– É um circuito que permite selecionar mais de uma entrada em uma mesma saída, conforme um sinal de seleção– Exemplo de um multiplexador 4x1

s

E0

E1

C

E2

E3

00

01

10

11

RepresentaçãoImplementação com portas lógicas

Page 9: Circuitos Combinacionais Básicos  Descrição VHDL

9 / 20

Multiplexador

Multiplexadores podem ser implementados com diversos comandos:

s <= (E(0) and (not C(0) and not C(1) )) or(E(1) and (not C(0) and C(1) )) or(E(2) and (C(0) and not C(1) )) or(E(3) and (C(0) and C(1) ));

with C selects <= E(0) when "00",

E(1) when "01",E(2) when "10",E(3) when

others;

s <= E(0) when C(0) = 0 and C(1) = 0 else 'Z';s <= E(1) when C(0) = 0 and C(1) = 1 else 'Z';s <= E(2) when C(0) = 1 and C(1) = 0 else 'Z';s <= E(3) when C(0) = 1 and C(1) = 1 else 'Z';

process(E, C)begin

case sel iswhen "00" =>

s <= E(0);

when "01" =>s <=

E(1);when "10" =>

s <= E(2);

when others =>s <=

E(3);end case;

end process;

Page 10: Circuitos Combinacionais Básicos  Descrição VHDL

10 / 20

Demultiplexador (Demux)

– É um circuito que opera de forma inversa ao multiplexador. Ou seja, recebe uma entrada e distribui esta em uma de várias saídas conforme um sinal de seleção– Exemplo de um multiplexador 1x4

e

S0

S1

C

S2

S3

00

01

10

11

– Igualmente ao multiplexador, um demultiplexador pode ser implementado com diversos comandos. O mais comum, é o que segue:

S(0) <= e when C = "00" else 'Z';

S(1) <= e when C = "01" else 'Z';

S(2) <= e when C = "10" else 'Z';

S(3) <= e when C = "11" else 'Z';

Page 11: Circuitos Combinacionais Básicos  Descrição VHDL

11 / 20

Matrizes Lógicas Programáveis

– Exemplos de matrizes lógicas programáveis são PLAs, PLDs, e até circuitos mais complexos como FPGAs podem ser percebidos de forma análoga– Exemplo de um PLA (contendo um plano E e outro OU)

– Matrizes lógicas programáveis são tipos de circuitos que têm hardware pré-definido (parte estática) que implementa diversas funcionalidades conforme este for programado (parte dinâmica)– Normalmente a programação é compreendida como uma camada de software de baixo nível programada em memórias do tipo RAM– Muitas vezes, este tipo de circuito permite rapidamente criar novas funcionalidades de hardware, seja em tempo de projeto, seja em tempo de operação

Page 12: Circuitos Combinacionais Básicos  Descrição VHDL

12 / 20

Exercícios

1. Uma fábrica produz porcas e parafusos. O presidente da fábrica necessita de um sistema automático para separar as peças em lotes. Sempre que na esteira houver somente porcas, as mesmas devem ser enviadas para um caixa A. Se na esteira houver somente parafusos, os mesmos devem ser enviados para uma caixa B. Caso existam na esteira porcas e parafusos, os mesmos devem ser enviados para uma outra caixa C. Projete este sistema utilizando um circuito adequado (codificador, decodificador, multiplexador ou demultiplexador)

2. A figura abaixo mostra as formas de ondas um mux 4x1 (E: entrada, C: controle, s: saída). Desenhe as formas de onda de s

Page 13: Circuitos Combinacionais Básicos  Descrição VHDL

13 / 20

Exercícios

3. A figura abaixo mostra as formas de ondas um demux 1x4 (E: entrada, C: controle, S: saídas). Desenhe as formas de onda de S para o caso do demux ser implementado com tri-states e para o caso de ser implementado com portas lógicas

4. Implemente um multiplexador 4x1, utilizando apenas multiplexadores 2x1

5. Implemente um demultiplexador 1x4 utilizando um demultiplexador 1x8

6. Implemente a expressão booleana a seguir usando um mux 8x1S <= (A and not B) or (A and not (B and C));

Page 14: Circuitos Combinacionais Básicos  Descrição VHDL

14 / 20

Exercícios

7. Implemente a expressão booleana a seguir utilizando um mux 4x1 e uma porta NAND

S <= (A and not B and not C) or (A and not B and C) or (A and B and not C);

Page 15: Circuitos Combinacionais Básicos  Descrição VHDL

15 / 20

Solução de Exercícios

7. Implemente a expressão booleana a seguir utilizando um mux 4x1 e uma porta NAND

S <= (A and not B and not C) or (A and not B and C) or (A and B and not C);

Simplificando:S <= (A and not B) or (A and not C);S <= A and not (B and C);

A B C A not(B and C) S

0 0 0 0 1 0

0 0 1 0 1 0

0 1 0 0 1 0

0 1 1 0 0 0

1 0 0 1 1 1

1 0 1 1 1 1

1 1 0 1 1 1

1 1 1 1 0 0

s

0

0

A

0

1

00

01

10

11

B. C

Page 16: Circuitos Combinacionais Básicos  Descrição VHDL

16 / 20

Exercícios

8. Implemente as expressões booleanas a seguir utilizando dois mux 4x1, um porta AND e um INVERSOR

S1 <= not X or (not Y and Z) or not (X and Y);

S2 <= (X or Y) and not (X or Z);

Page 17: Circuitos Combinacionais Básicos  Descrição VHDL

17 / 20

S1

1

1

X

1

0

Y

Solução de Exercícios

8. Implemente as expressões booleanas a seguir utilizando dois mux 4x1, um porta AND e um INVERSOR

S1 <= not X or (not Y and Z) or not (X and Y);

S2 <= (X or Y) and not (X or Z);

Simplificando:S1 <= not X or not Y;S2 <= not X and Y and not Z

00

01

10

11

S2

0

1

X

0

0

Y . Z

00

01

10

11

X Y Z !X !Y !X+!Y !Z !X.Y.!Z

0 0 0 1 1 1 1 0

0 0 1 1 1 1 0 0

0 1 0 1 0 1 1 1

0 1 1 1 0 1 0 0

1 0 0 0 1 1 1 0

1 0 1 0 1 1 0 0

1 1 0 0 0 0 1 0

1 1 1 0 0 0 0 0

Page 18: Circuitos Combinacionais Básicos  Descrição VHDL

18 / 20

Exercícios

9. Faça um decodificador em portas lógicas que implemente a tabela verdade abaixo

10. Apresente em portas lógicas um demultiplexador 1x4

11. Faça o mesmo exercício acima, agora considerando o uso de tri-states

A B C S1 S0

0 0 0 0 10 0 1 0 10 1 0 0 10 1 1 1 01 0 0 1 01 0 1 1 11 1 0 0 11 1 1 1 1

Page 19: Circuitos Combinacionais Básicos  Descrição VHDL

19 / 20

Exercícios

9. (FUNRIO/CEITEC 2012 - 26) Um multiplexador 8x1 possui as ligações conforme a figura a seguir, em que A, B, C e D são os sinais de entrada. Neste circuito integrado, I0 a I7 são as entradas, S0 a S2 são os sinais de seleção, sendo S2 o bit mais significativo, e Z é o sinal de saída. A função lógica implementada na saída deste circuito é

Page 20: Circuitos Combinacionais Básicos  Descrição VHDL

20 / 20

Exercícios

10. (FUNRIO/CEITEC – 2012 - 29) Considere um circuito combinacional decodificador que aceita 32 combinações diferentes de entrada. Para esse circuito, o número de entradas e saídas é, respectivamente.– A) 32 e 32– B) 32 e 5– C) 5 e 37– D) 32 e 27– E) 5 e 32