IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos...

35
MC613 1 IC-UNICAMP MC 613 IC/Unicamp Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos

Transcript of IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos...

Page 1: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 1

IC-UNICAMP MC 613

IC/Unicamp

Prof Guido Araújo Prof Mario Côrtes

Circuitos Combinacionais Típicos

Page 2: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 2

IC-UNICAMP

Tópicos

•  Multiplexadores •  Decodificadores •  Decodificadores de prioridade •  Conversores de código •  Conversão bin-> 7 segmentos

Page 3: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 3

IC-UNICAMP

(a) Graphical symbol (b) Truth table

(c) Sum-of-products circuit

0 1

f s w 0 w 1

f

s w 0 w 1

0 1

f s

w 0

w 1

Mux 2:1

Page 4: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 4

IC-UNICAMP

LIBRARY ieee ; USE ieee.std_logic_1164.all ;

ENTITY mux2to1 IS PORT ( w0, w1, s: IN STD_LOGIC ; f : OUT STD_LOGIC ) ;

END mux2to1 ;

ARCHITECTURE Behavior OF mux2to1 IS BEGIN

WITH s SELECT f <= w0 WHEN '0', w1 WHEN OTHERS ;

END Behavior ;

MUX 2:1 com atribuição selecionada de sinal– VHDL

Page 5: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 5

IC-UNICAMP

LIBRARY ieee ; USE ieee.std_logic_1164.all ;

ENTITY mux2to1 IS PORT ( w0, w1, s : IN STD_LOGIC ; f : OUT STD_LOGIC ) ;

END mux2to1 ;

ARCHITECTURE Behavior OF mux2to1 IS BEGIN

f <= w0 WHEN s = '0' ELSE w1 ; END Behavior ;

MUX 2:1 com atribuição condicional – VHDL

Page 6: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 6

IC-UNICAMP

VHDL: Selected Signal Assignment (Atribuição selecionada de sinal)

•  A atribuição a um sinal pode ter vários valores em função de um sinal de “seleção” –  IMPORTANTE: todas as combinações(*) de

valores do sinal de seleção têm que ser explicitamente listadas (como um MUX)

–  Variante: uso do OTHERS –  Exemplo: sinal de seleção = ctl de 2 bits

WITH ctl SELECT f <= w0 WHEN "00", w1 WHEN OTHERS ;

WITH ctl SELECT f <= w0 WHEN "00", w1 WHEN "01", w1 WHEN "10", w1 WHEN "11";

(*) Atenção com o tipo do sinal

Page 7: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 7

IC-UNICAMP

VHDL: Atribuição condicional

•  Ao contrário do que parece, não é equivalente a “Selected Signal Assignment” –  As condições listadas após o WHEN não

precisam ser mutuamente exclusivas (elas têm prioridade da esquerda para a direita)

•  Exemplo com uma condição f <= w0 WHEN ctl = "00" ELSE w1;

•  Exemplo com 3 condições f <= w0 WHEN ctl = "00" ELSE

w1 WHEN ctl = "01" ELSE w3;

Page 8: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 8

IC-UNICAMP

f

s 1 w 0 w 1

00 01

(b) Truth table

w 0 w 1

s 0

w 2 w 3

10 11

0 0 1 1

1 0 1

f s 1 0 s 0

w 2 w 3

f

(c) Circuit

s 1 w 0

w 1

s 0

w 2

w 3

(a) Graphic symbol

Mux 4:1

Page 9: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 9

IC-UNICAMP

0

w 0 w 1

0 1

w 2 w 3

0 1

f 0 1

s 1 s

Mux 4:1 construído com Mux 2:1

Page 10: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 10

IC-UNICAMP

LIBRARY ieee ; USE ieee.std_logic_1164.all ;

ENTITY mux4to1 IS PORT (w0, w1, w2, w3: IN STD_LOGIC ; s: IN STD_LOGIC_VECTOR(1 DOWNTO 0) ; f: OUT STD_LOGIC ) ;

END mux4to1 ;

ARCHITECTURE Behavior OF mux4to1 IS BEGIN

WITH s SELECT f <= w0 WHEN "00", w1 WHEN "01", w2 WHEN "10", w3 WHEN OTHERS ;

END Behavior ;

MUX 4:1 – VHDL

Page 11: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 11

IC-UNICAMP

w 8 w 11

s 1 w 0

s 0

w 3

w 4 w 7

w 12 w 15

s 3 s 2

f

Mux 16:1

Page 12: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 12

IC-UNICAMP

LIBRARY ieee ; USE ieee.std_logic_1164.all ; PACKAGE mux4to1_package IS

COMPONENT mux4to1 PORT ( w0, w1, w2, w3: IN STD_LOGIC ; s: IN STD_LOGIC_VECTOR(1 DOWNTO 0) ; f: OUT STD_LOGIC ) ; END COMPONENT ;

END mux4to1_package ;

MUX 4:1 – Declaração de Component

Neste exemplo: • Declaração de um componente dentro de um “package” a ser referenciado posteriormente

Page 13: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 13

IC-UNICAMP

LIBRARY ieee ; USE ieee.std_logic_1164.all ; LIBRARY work ; USE work.mux4to1_package.all ;

ENTITY mux16to1 IS PORT (w : IN STD_LOGIC_VECTOR(0 TO 15) ; s : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; f : OUT STD_LOGIC ) ;

END mux16to1 ;

MUX 16:1 hierárquico – VHDL (1)

Usa o pacote definido

Page 14: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 14

IC-UNICAMP

ARCHITECTURE Structure OF mux16to1 IS SIGNAL m : STD_LOGIC_VECTOR(0 TO 3) ;

BEGIN Mux1: mux4to1 PORT MAP ( w(0), w(1), w(2), w(3), s(1 DOWNTO 0), m(0) ) ; Mux2: mux4to1 PORT MAP ( w(4), w(5), w(6), w(7), s(1 DOWNTO 0), m(1) ) ; Mux3: mux4to1 PORT MAP ( w(8), w(9), w(10), w(11), s(1 DOWNTO 0),

m(2) ) ; Mux4: mux4to1 PORT MAP ( w(12), w(13), w(14), w(15), s(1 DOWNTO 0),

m(3) ); Mux5: mux4to1 PORT MAP ( m(0), m(1), m(2), m(3), s(3 DOWNTO 2), f ) ;

END Structure ;

MUX 16:1 hierárquico – VHDL (2)

Page 15: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 15

IC-UNICAMP

x 1 0 1

x 2 0 1

s

y 1

y 2

x 1 x 2

y 1 y 2

(a) A 2x2 crossbar switch

(b) Implementation using multiplexers

s Chave crossbar implementada c/ Mux

Page 16: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 16

IC-UNICAMP

Lógica Usando Mux

•  Usand o mux como uma lookup table

A B Y 0 0 0 0 1 0 1 0 0 1 1 1

Y = AB

00

Y 01 10 11

A B

Page 17: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 17

IC-UNICAMP

Implementando Funções com Mux

•  Reduzindo o tamanho do Mux

0

1

A

B Y

A B Y 0 0 0 0 1 0 1 0 0 1 1 1

Y = AB

A Y

0 0

1 B

Page 18: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 18

IC-UNICAMP

0 1

0 0 1 1

1 0 1

f w 1

0

w 2

1 0

0 1

f w 1

w 2

w 2

0 1

0 0 1 1

1 0 1

f w 1

0

w 2

1 0

f

w 1

0 1

w 2

1 0

f w

2

w 1

Mux: implementação de funções lógicas

Page 19: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 19

IC-UNICAMP

Implementação com VHDL (2ª alt)

LIBRARY ieee ; USE ieee.std_logic_1164.all ;

ENTITY circuito IS PORT (w1, w2 : IN STD_LOGIC ; f : OUT STD_LOGIC ) ;

END circuito ;

ARCHITECTURE Behavior OF circuito IS BEGIN

WITH w1 SELECT f <= w2 WHEN '0', NOT w2 WHEN OTHERS ;

END Behavior ;

Page 20: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 20

IC-UNICAMP

0

w n 1 –

n inputs

En Enable

2 n outputs

y 0

y 2 n 1 –

w

Decodificadores

Decodificador n-to-2n

Page 21: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 21

IC-UNICAMP

0 0 1 1

1 0 1

y 0 w 1 0

w 0

x x

1 1

0

1 1

En

0 0 0

1

0

y 1

1 0 0

0

0

y 2

0 1 0

0

0

y 3

0 0 1

0

0 (a) Truth table

w 0

En

y 0 w 1 y 1

y 2 y 3

(b) Graphic symbol (c) Logic circuit

w 1

w 0 y 0

y 1

y 2

y 3 En

Decod. 2:4

Page 22: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 22

IC-UNICAMP LIBRARY ieee ; USE ieee.std_logic_1164.all ;

ENTITY dec2to4 IS PORT (w : IN STD_LOGIC_VECTOR(1 DOWNTO 0) ; En : IN STD_LOGIC ; y : OUT STD_LOGIC_VECTOR(0 TO 3) ) ;

END dec2to4 ;

ARCHITECTURE Behavior OF dec2to4 IS SIGNAL Enw : STD_LOGIC_VECTOR(2 DOWNTO 0) ;

BEGIN Enw <= En & w ; WITH Enw SELECT y <= "1000" WHEN "100", "0100" WHEN "101", "0010" WHEN "110", "0001" WHEN "111", "0000" WHEN OTHERS ;

END Behavior ;

Decoder 2:4 – VHDL

Page 23: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 23

IC-UNICAMP

w 2

w 0 y 0 y 1 y 2 y 3

w 0

En

y 0 w 1 y 1

y 2 y 3

w 0

En

y 0 w 1 y 1

y 2 y 3

y 4 y 5 y 6 y 7

w 1

En

Um Decod. 3:8 usando decod. 2:4

Page 24: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 24

IC-UNICAMP

w

En

y 0 w 1 y 1

y 2 y 3

y 8 y 9 y 10 y 11

w 2

w 0 y 0 y 1 y 2 y 3

w 0

En

y 0 w 1 y 1

y 2 y 3

w 0

En

y 0 w 1 y 1

y 2 y 3

y 4 y 5 y 6 y 7

w 1

w 0

En

y 0 w 1 y 1

y 2 y 3

y 12 y 13 y 14 y 15

w 0

En

y 0 w 1 y 1

y 2 y 3

w 3 En

Decod. 4:16 usando árvore de decod.

w 0

Page 25: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 25

IC-UNICAMP

w 1

w 0

w 0

En

y 0 w 1 y 1

y 2 y 3

w 2

w 3

f s 0 s 1

1

Mux impl. a partir de decod

Page 26: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 26

IC-UNICAMP

w 1

w 0

w 0

En

y 0 w 1 y 1

y 2 y 3

f

s 0 s 1

1 w 2

w 3

Mux c/ decod. e buffers tri-state

Page 27: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 27

IC-UNICAMP

Buffers tri-state em VHDL LIBRARY ieee ; USE ieee.std_logic_1164.all ;

ENTITY zbuffer IS GENERIC ( N : INTEGER := 8 ) ; PORT ( X : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; E : IN STD_LOGIC ; F : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ;

END zbuffer ;

ARCHITECTURE Behavior OF zbuffer IS BEGIN

F <= (OTHERS => 'Z') WHEN E = '0' ELSE X ; END Behavior ;

X

E

F

Construção (OTHERS => '1') • usada principalmente em vetores para atribuir um mesmo valor para todos os bits (aqui todos 8 bits de F ! ‘Z’ )

Permite configurar parâmetros (n bits)

Page 28: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 28

IC-UNICAMP

Component Buffer

LIBRARY ieee ; USE ieee.std_logic_1164.all ;

PACKAGE ZBuffer_package IS COMPONENT ZBuffer GENERIC (N : INTEGER) ; PORT (X, IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; E: IN STD_LOGIC ; f: OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0)) ; END COMPONENT ; END ZBuffer_package ;

Encapsulando o buffer tri-state em componente Precisa informar o tipo do parâmetro N

Page 29: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 29

IC-UNICAMP

Gerando Adaptador 32-bits

LIBRARY ieee ; USE ieee.std_logic_1164.all ; USE work.ZBuffer_package.all ;

ENTITY bus32adapter IS GENERIC ( N : INTEGER := 32 ); PORT (X: IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; Z: IN STD_LOGIC ; B: OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ;

END bus32adapter ;

ARCHITECTURE behavior OF bus32adapter IS BEGIN

buf: ZBuffer GENERIC MAP( N =>32 )

port map (X, Z, B) ; END behavior ;

Page 30: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 30

IC-UNICAMP

2 n inputs

w 0

w 2 n 1 –

y 0

y n 1 –

n outputs

Codificadores

Codificador 2n-to-n

Page 31: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 31

IC-UNICAMP

(b) Circuit

w 1

w 0

y 0 w 2

w 3 y 1

0 0 1 1

1 0 1

w 3 y 1 0 y 0

0 0 1

0 w 2

0 1 0

0 w 1

1 0 0

0 w 0

0 0 0

1

(a) Truth table

Codificador 4:2

Page 32: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 32

IC-UNICAMP

d 0 0 1

0 1 0

w 0 y 1 d

y 0

1 1

0 1

1

1 1

z

1 x x

0

x

w 1

0 1 x

0

x

w 2

0 0 1

0

x

w 3

0 0 0

0

1

Outro codificador 4:2

w 1

w 0

y 0 w 2

w 3 y 1

z w0 w1 w2 w3

Page 33: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 33

IC-UNICAMP

1 0 1 1

1 1 1

w 0 a 1 b

0 1

1 1

1 0 1

1 0 1

0

0

w 1

0 1 1

0

0

w 2

0 0 0

0

1

w 3

0 0 0

0

0

c

1 0 1 0

0 1 1 0

1 1 1 0

0 0 0 1

1 0 0 1

1 1 1 1

0 1 1

0

1 1

1 1

1 1 1

0 1 1

1 d

0

1 0

0 1 0

e

1 0 1

1

1

0 1

0 0 1

0 0 0

1 f

1

0 0

1 1 1

g

1 0 1

1

1

1 1

1 0 1

(c) Truth table

(a) Code converter

w 0 a

w 1 b c d w 2

w 3 e f g

c e

a

g b f

d (b) 7-segment display

Conversor Bin "BCD (7 segmentos)

Page 34: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 34

IC-UNICAMP

Implementação convencional

Page 35: IC-UNICAMP MC 613sandro/cursos/mc613/1s... · Prof Guido Araújo Prof Mario Côrtes Circuitos Combinacionais Típicos . MC613 2 IC-UNICAMP Tópicos • Multiplexadores • Decodificadores

MC613 35

IC-UNICAMP

Implementação VHDL

•  Implementar de forma mais elegante •  Usando a construção do tipo

WITH num SELECT leds <= "1111110" WHEN "0000", "0110000" WHEN "0001" , ……