circuitos combinatórios blocos básicos: (de)codificadores
TRANSCRIPT
![Page 1: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/1.jpg)
PCS 3115
Sistemas Digitais I
Circuitos Combinatórios
Blocos Básicos:
(De)Codificadores
Prof. Dr. Marcos A. Simplicio Jr.
versão: 3.0 (Jan/2016)
Adaptado por Glauber (2018)
![Page 2: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/2.jpg)
Blocos básicos
Codificadores e Decodificadores (HOJE)
(De) Multiplexadores
Portas tri-state
Comparadores
Somadores/Subtratores
16 de maio: P2
Multiplicadores
ULA
Gerador/Detector de Paridade
2
![Page 3: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/3.jpg)
Contexto
Circuitos SSI: small scale integration
• Até ~20 transistores
• Circuitos bastante simples, como portas lógicas NOT e AND, OR, XOR de 3 entradas
Circuitos MSI: medium scale integration
• Até ~200 transistores
• São os circuitos que veremos neste módulo: codificadores, multiplexadores, somadores, etc.
3
![Page 4: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/4.jpg)
Decodificador
Converte código de entrada em código de saída
• Bloco combinatório lógico que possui n entradas e (até) 2n saídas
• Tipo comum: codificador para código 1-de-m
• Para cada combinação de valores das n entradas, apenas uma saída é ativada
d n-1
d1
d0
.. ..
s0
s1
s2
n– 1
Decoder
n x 2n
n entradas 2n saídas
![Page 5: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/5.jpg)
Decodificador 1-de-m
Funcionamento:
• Entradas formam uma palavra binária de n bits
• Palavra de entrada pode assumir os valores de 0 a 2n – 1
• As 2n saídas Si são indexadas de 0 a 2n – 1
• Saída ativada Si é aquela cujo índice i corresponde ao valor da palavra binária de entrada
Exemplo
• Entradas = 011 (310); ativa-se a saída S3
• Entradas = 101 (510); ativa-se a saída S5
![Page 6: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/6.jpg)
Decodificador de 3 bits
Símbolo funcional (convenção):
• Entradas à esquerda
• Saídas à direita
• Índice menor indica bit menos significativo na palavra binária
23 = 8 saídas
d 0
d 1
d 2
s0
s1
s2
s3
s4
s5
s6
s7
3 entradasDecodificador
3 x 8
![Page 7: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/7.jpg)
Decodificador de 3 bits
Tabela verdade
ENTRADAS SAÍDAS
d2 d1 d0 S7 S6 S5 S4 S3 S2 S1 S0
0 0 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0
0 1 0 0 0 0 0 0 1 0 0
0 1 1 0 0 0 0 1 0 0 0
1 0 0 0 0 0 1 0 0 0 0
1 0 1 0 0 1 0 0 0 0 0
1 1 0 0 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0 0
2 em
decimal
Saída S2 é
ativada...
![Page 8: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/8.jpg)
Decodificador de 3 bits
8
S0 = D2’ .D1’ .D0’
S1 = D2’ .D1’ .D0
S2 = D2’ .D1 .D0’
S3 = D2’ .D1 .D0
S4 = D2 .D1’ .D0’
S5 = D2 .D1’ .D0
S6 = D2 .D1 .D0’
S7 = D2 .D1 .D0
Si= mi
S0
S1
S2
S3
S4
S5
S6
S7
D0
D1
D2
Circuito interno: mintermos!
![Page 9: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/9.jpg)
Decodificador com Enable
Entrada adicional: Enable
• Permite habilitar/desabilitar o bloco todo
SE Enable ativo
• Funcionamento normal: apenas uma saída ativa
SE Enable inativo
• Nenhuma saída ativa, independente do código nas entradas de endereço
Atua em todos os mintermos
9
![Page 10: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/10.jpg)
Decodificador com Enable
10
Ex: Decodificador 3 por 8, com ENABLE (EN)
ENTRADAS SAÍDAS
EN d2 d1 d0 S7 S6 S5 S4 S3 S2 S1 S0
1 0 0 0 0 0 0 0 0 0 0 1
1 0 0 1 0 0 0 0 0 0 1 0
1 0 1 0 0 0 0 0 0 1 0 0
1 0 1 1 0 0 0 0 1 0 0 0
1 1 0 0 0 0 0 1 0 0 0 0
1 1 0 1 0 0 1 0 0 0 0 0
1 1 1 0 0 1 0 0 0 0 0 0
1 1 1 1 1 0 0 0 0 0 0 0
0 X X X 0 0 0 0 0 0 0 0
![Page 11: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/11.jpg)
Decodificador com Enable
11
S0
S1
S2
S3
S4
S5
S6
S7
D0
D1
D2
Como adicionar
o enable?
ENABLE?
![Page 12: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/12.jpg)
Decodificador com Enable
12
d 0
d 1
d 2
s0
s1
s2
s3
s4
s5
s6
s7
EN
Decodificador
3 x 8
S0 = EN .D2’ .D1’ .D0’
.
..S7 = EN . D2 .D1 .D0
S0
S1
S2
S3
S4
S5
S6
S7
D0
D1
D2
ENABLE
![Page 13: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/13.jpg)
Decodificador: active-low
Decodificadores podem ter as saídas invertidas (complementadas)
• Diz-se que as saídas são active-low – ativas em ZERO
• Logo, saídas inativas = 1; a única saída ativa = 0
Implicações:
• Na tabela verdade: inversão nas saídas
• No circuito: uso de NAND no lugar de AND
• Nomenclatura: Si’
• Cada saída é um maxtermo dos bits de entrada
13
![Page 14: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/14.jpg)
Decodificador: active-low
Entrada ENABLE também pode ser active-low
SE Enable’=0, circuito habilitado
SE Enable’=1, saídas todas desabilitadas
Implicações
• Na tabela verdade: inversão na entrada
• No circuito: uso de inversor
• Nomenclatura: EN’
14
![Page 15: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/15.jpg)
Decodificador: active-low
15
Entradas Saídas
EN’ d1 d0 S3’ S2’ S1’ S0’
0 0 0 1 1 1 0
0 0 1 1 1 0 1
0 1 0 1 0 1 1
0 1 1 0 1 1 1
1 X X 1 1 1 1
d0
d1
ENABLE’
S'0
S'1
S'2
S'3
=
S3’ = d1’+d0’
d0
d1
s0’
s1’
s2’
s3’
Decodificador
2 x 4
EN
= d1 + d0
= d1 + d0’
= d1’ + d0
= d1’ + d0’
![Page 16: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/16.jpg)
Decodificadores Decimais
Decodificador BCD (Binary Coded Decimal) para decimal
• Entrada: 1 dígito BCD (4 bits)
• Palavras válidas: 0000 a 1001 (0 a 9)
• Saída: 10 saídas (<24)
• Saída ativa: corresponde à palavra da entrada
• Saídas são todas inativas se:
• Enable = Falso OU
• Palavra de entrada > 1001 (inválida)
16
![Page 17: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/17.jpg)
Decodificadores Decimais
17
d 0
d 1
d 2
s0
s1
s2
s3
s4
s5
s6
s7
s8
s9
EN
d 3
Decodificador
4 x 10
(Decimal)
10 saídas (< 24)4 entradas
entrada de habilitação
![Page 18: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/18.jpg)
Decodificadores Decimais
18
EN d3 d2 d1 d0 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 0 1 0 0 0 0 0 0 0 0 1 0
1 0 0 1 0 0 0 0 0 0 0 0 1 0 0
1 0 0 1 1 0 0 0 0 0 0 1 0 0 0
1 0 1 0 0 0 0 0 0 0 1 0 0 0 0
1 0 1 0 1 0 0 0 0 1 0 0 0 0 0
1 0 1 1 0 0 0 0 1 0 0 0 0 0 0
1 0 1 1 1 0 0 1 0 0 0 0 0 0 0
1 1 0 0 0 0 1 0 0 0 0 0 0 0 0
1 1 0 0 1 1 0 0 0 0 0 0 0 0 0
1 1 0 1 0 0 0 0 0 0 0 0 0 0 0
. . . .
1 1 1 1 1 0 0 0 0 0 0 0 0 0 0
0 X X X X 0 0 0 0 0 0 0 0 0 0
![Page 19: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/19.jpg)
Decodificadores: cascateamento
Objetivo: expansão de capacidade:
• Decodificadores 2x4 3x8 4x16 5x32 n x 2n
Estratégia: combinar decodificadores menores,
usando entrada de habilitação
Exemplo: montar decodificador 3x8 sem
entrada de habilitação a partir de dois
decodificadores 2x4 com entrada de habilitação
19
![Page 20: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/20.jpg)
Decodificadores: cascateamento
Decodificador 3x8, sem entrada de habilitação
20
S0
S2
S1
S3
d0
d1
E
d0
d1
d2
Exercício: como adicionar
uma entrada de habilitação
neste circuito?
S0S1
S3
S2
S4S5
S7
S6
d0
d1
E
S0
S2
S1
S3
![Page 21: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/21.jpg)
Decodificadores: Símbolo alternativo
21
d0
d1
E
S0
S1
S2
S3
Habilitação
Entradas
de código saídasDEC
Entradas Saídas
Tabela verdade
E d1 d0 S3 S2 S1 S0
0 X X 0 0 0 0
1 0 0 0 0 0 1
1 0 1 0 0 1 0
1 1 0 0 1 0 0
1 1 1 1 0 0 0
![Page 22: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/22.jpg)
Decodificador: uso (memórias)
22
Exercício: Dada 4 memórias RAM 256 x 1 byte, obter uma de 1kB.
WE CS
A0
A7
...
D0
D7
...
WE CS
A0
A7
...
D0
D7
...
WE CS
A0
A7
...
D0
D7
...
WE CS
A0
A7
...
D0
D7
...
\CS0
\CS1
\CS2
\CS3
END11
END10
/WR
END0-7
D0-7
Faixas de endereço000-0FF h100-1FF h200-2FF h300-3FF h
256 bytes
256 bytes
256 bytes
256 bytes
END8-9
![Page 23: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/23.jpg)
Decodificadores: uso (síntese)
Síntese de funções de chaveamento
• Saídas dos decodificadores são os mintermos para as variáveis de entrada
• 1ª forma canônica: Função = Σmintermos
Exemplo:
• F(d,c,b,a) = Σ(0,1,5,9,12)
23
![Page 24: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/24.jpg)
Decodificadores: uso (síntese)
Exemplo: ativo-alto soma de mintermos
F(c,b,a) = Σ(0,1,5,7)
24
f
0
1 DEC
3:8
2
s5
E = 1
s0
s7
s1
E
c
b
a
![Page 25: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/25.jpg)
Exemplo: ativo-baixo produto de maxtermos
F(c,b,a) = Σ(0,1,5,7)
= ∏(2,3,4,6)
0
1 DEC
3:8
2
s4'
E = 1
s2'
s6'
s3'
E
f
c
b
a
Decodificadores: uso (síntese)
25
![Page 26: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/26.jpg)
Decodificador 3 x 8: VHDL
library IEEE;
use IEEE.std_logic_1164.all;
entity decoder is
port (d : in STD_LOGIC_VECTOR (2 downto 0);
s : out STD_LOGIC_VECTOR (7 downto 0));
end decoder;
architecture decoder_arch of decoder is
begin
with d select
s <= "00000001" when "000",
"00000010" when "001",
"00000100" when "010",
"00001000" when "011",
"00010000" when "100",
"00100000" when "101",
"01000000" when "110",
"10000000" when "111",
"00000000" when others;
end decoder_arch;26
![Page 27: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/27.jpg)
Decodificador 3 x 8 com EN: VHDL
library IEEE;
use IEEE.std_logic_1164.all;
entity decoder is
port (d : in STD_LOGIC_VECTOR (2 downto 0);
en : in STD_LOGIC;
s : out STD_LOGIC_VECTOR (7 downto 0));
end decoder;
architecture decoder_arch of decoder is
begin
s <= "00000000" when (en = ‘0’) else -- com enable
"00000001" when (d = "000") else
"00000010" when (d = "001") else
"00000100" when (d = "010") else
"00001000" when (d = "011") else
"00010000" when (d = "100") else
"00100000" when (d = "101") else
"01000000" when (d = "110") else
"10000000" when (d = "111") else
"00000000";
end decoder_arch;
27
![Page 28: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/28.jpg)
Decodificadores para acionamento de displays de 7 segmentos
• de BCD para 7 segmentos
• de binário para 7 segmentos
Entradas: 4 bits
Saídas: 7 bits, código 7 segmentos
Decodificadores de 7 segmentos
![Page 29: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/29.jpg)
Codificadores
a
b
ce
f
g
d
O traçado dos algarismosOs sete
segmentos
Display de 7 segmentos
![Page 30: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/30.jpg)
Decodificadores: BCD – 7 segmentos
Decimal EN d3 d2 d1 d0 a b c d e f g
0 1 0 0 0 0 1 1 1 1 1 1
1 1 0 0 0 1 1 1
2 1 0 0 1 0 1 1 1 1 1
3 1 0 0 1 1 1 1 1 1 1
4 1 0 1 0 0 1 1 1 1
5 1 0 1 0 1 1 1 1 1 1
6 1 0 1 1 0 1 1 1 1 1 1
7 1 0 1 1 1 1 1 1
8 1 1 0 0 0 1 1 1 1 1 1 1
9 1 1 0 0 1 1 1 1 1 1 1
10 1 1 0 1 0 0 0 0 0 0 0 0
. . . .
15 1 1 1 1 1 0 0 0 0 0 0 0
0 X X X X 0 0 0 0 0 0 0
Tabela verdade
![Page 31: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/31.jpg)
Codificadores
Codificadores
• Geram um código específico: transformam um código (maior) em outro (menor)
• Ex.: código 1 entre 2n → código binário
d 0d 1
d n
s0
s1
.
.
sm
Codificador
Entradas
Código X
Saídas
Código Y
![Page 32: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/32.jpg)
Codificadores: Binário “2n : n”
Codificador binário 4:2
Problema em potencial:
• Mais de uma entrada em 1 pode resultar em erro
• Ex.: 0110 → 11 (mesmo resultado obtido com 1000)
32
A0
A2
A1
A3
S0
S1
A3 A2 A1 A0 S1 S0
0 0 0 1 0 0
0 0 1 0 0 1
0 1 0 0 1 0
1 0 0 0 1 1
Entradas Saídas
0 1 1 0 1 1
A0
A2
A1
A3
S0
S1
![Page 33: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/33.jpg)
Codificadores: Binário “2n : n”
Codificador binário 4:2 com prioridade
• Entradas têm níveis de prioridade: elimina o problema anterior (perceba os “don’t care”)
• Resolução: construir o mapa de Karnaugh
33
A3 A2 A1 A0 S1 S0
0 0 0 1 0 0
0 0 1 X 0 1
0 1 X X 1 0
1 X X X 1 1
Entradas Saídas
0 1 1 0 1 0
prioridade
1 1 1 1
1 1 1 1
1 1 1 1
00 01 11 10
A1 A0
A3 A2
00
01
11
10
1 1
1 1 1 1
1 1 1 1
00 01 11 10
00
01
11
10
S1 = A3 + A2 S0 = A3 + A1•A’2
![Page 34: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/34.jpg)
Codificador binário 4:2 com prioridade
• Entradas têm níveis de prioridade: elimina o problema anterior (perceba os “don’t care”)
• Usando o mapa de Karnaugh
Codificadores: Binário “2n : n”
34
A3 A2 A1 A0 S1 S0
0 0 0 1 0 0
0 0 1 X 0 1
0 1 X X 1 0
1 X X X 1 1
Entradas Saídas
0 1 1 0 1 0
A0
A2
A1
A3
S0
S1
prioridade
![Page 35: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/35.jpg)
Codificadores: uso
Reduzem o número de fios e aplicações com diversas entradas
• Ex.: codificador de teclado (em vez de ter um fio por tecla, valor de cada tecla pode ser antes codificado)
Regular entradas com diferentes prioridades
• Ex.: controle de interrupções em computadores
Conversão entre sistemas numéricos
• Ex.: o codificador BCD (Binary Coded Decimal –Decimal Codificado em Binário) apresenta 10 entradas, resultando em 4 bits de saída em binário: A5 → 0101, A8 → 1000, etc.
![Page 36: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/36.jpg)
Codificadores: VHDL
library IEEE;
use IEEE.std_logic_1164.all;
entity priority_encoder is
port (A : in STD_LOGIC_VECTOR (7 downto 0);
en : in STD_LOGIC;
S : out STD_LOGIC_VECTOR (2 downto 0));
end priority_encoder;
architecture arch of priority_encoder is
begin
S <= "000" when (en = ‘0’) else -- com enable
"111" when (A(7) = ‘1’) else -- maior prioridade
"110" when (A(6) = ‘1’) else
"101" when (A(5) = ‘1’) else
"100" when (A(4) = ‘1’) else
"011" when (A(3) = ‘1’) else
"010" when (A(2) = ‘1’) else
"001" when (A(1) = ‘1’) else
"000" when (A(0) = ‘1’) else -- menor prioridade
"000";
end arch;
36
![Page 37: Circuitos Combinatórios Blocos Básicos: (De)Codificadores](https://reader030.vdocuments.mx/reader030/viewer/2022012418/6172c560c01811367c1fde78/html5/thumbnails/37.jpg)
Lição de Casa
Leitura sugerida:
• Capítulo 6 do Livro Texto, ênfase em 6.4 e 6.5.
Exercícios sugeridos:
• Capítulo 6 do Livro Texto -(De)Codificadores.