Transcript Document

Decodificador 2 para 4 (2 : 4)
•
O decodificador é um circuito digital que recebe um conjunto de entradas
que representa um número binário e ativa apenas a saída que
corresponde ao número recebido.
•
Um circuito decodificador analisa as entradas, determina o número
binário que está presente e ativa a saída correspondente ao número na
entrada.
•
Todas as outras saídas permanecem desativadas
Tabela Verdade
A1
A0
S0
S1
S2
S3
0
0
1
0
0
0
0
1
0
1
0
0
0
0
0
1
0
1
1
1
2N Saídas
Decodificador
N entradas
0
0
0
1
.
.
.
.
.
.
Decodificador 2 para 4 (2 : 4)
Tabela Verdade
A1
A0
S0
S1
S2
S3
0
0
1
0
0
0
0
1
0
1
0
0
1
0
0
0
1
0
1
1
0
0
0
1
Decodificador 2 para 4 (2 : 4)
Um decodificador N:2N apresenta:
N entradas
2N saídas.
Decodificador 2 para 4 (2 : 4)
Descrição Verilog:
Tabela Verdade
module decodificador2x4_descricao1
(output reg S0, S1, S2, S3,
A1
A0
S0
S1
S2
S3
0
0
1
0
0
0
input A0, A1);
0
1
0
1
0
0
always @ (*) begin
1
0
0
0
1
0
S0 = (!A0)&(!A1);
1
1
0
0
0
1
S1 = (A0)&(!A1);
S2 = (!A0)&A1;
S3 = A0&A1;
end
endmodule
Decodificador 2 para 4 (2 : 4)
Esquema elétrico
Tabela Verdade
A1
A0
S0
S1
S2
S3
0
0
1
0
0
0
0
1
0
1
0
0
1
0
0
0
1
0
1
1
0
0
0
1
Simulação
Decodificador 2 para 4 (2 : 4)
Esquema elétrico
Tabela Verdade
A1
A0
S0
S1
S2
S3
0
0
1
0
0
0
0
1
0
1
0
0
1
0
0
0
1
0
1
1
0
0
0
1
Simulação
Decodificador 2 para 4 (2 : 4)
module decodificador2x4_descricao1
(output reg S0,S1,S2,S3,
input [1:0] controle);
2'b10: begin
S0 = 0;
always @ (*) begin
Tabela Verdade
case (controle)
S1 = 0;
2'b00: begin
S2 = 1;
S0 = 1;
S3 = 0;
A1
A0
S0
S1
S2
S3
S1 = 0;
end
0
0
1
0
0
0
S2 = 0;
2'b11: begin
0
1
0
1
0
0
S3 = 0;
S0 = 0;
1
0
0
0
1
0
end
S1 = 0;
1
1
0
0
0
1
2'b01: begin
S2 = 0;
S0 = 0;
S3 = 1;
S1 = 1;
end
S2 = 0;
endcase
S3 = 0;
end
end
endmodule
Decodificador 3 para 8 (3 : 8)
Decodificador 3 para 8 (3 : 8)
Observe que uma Saídai do decodificador acima implementa o
minitermo mi das variáveis S2,S1 e S0
Decodificador 3 : 8
O símbolo utilizado para o decodificador é:
Codificador
• O codificador é um circuito digital que possui um certo número de entradas das quais
apenas uma delas é ativada por vez e produz um código de saída de N bits, dependendo
de qual entrada está ativada.
• O diagrama de blocos abaixo mostra um codificador de M entradas e N saídas.
• As entradas são ativadas em nível ALTO
M entradas
Apenas uma em nível ALTO de
cada vez
Codificador
.
.
.
.
.
.
Código de saída de N bits
Codificador
• Exemplo 1 :
Projetar um codificador octal para binário (8 entradas e 3 saídas)
Solução:
8 entradas
Apenas uma em nível ALTO de
cada vez
Codificador
.
.
.
.
.
.
Código de saída de 3 bits
Codificador Octal - binário
Saídas
Entradas
A7
A6
A5
A4
A3
A2
A1
A0
O2
O1
O0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
1
0
0
0
0
1
1
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
1
0
1
0
1
0
0
0
0
0
0
1
1
0
1
0
0
0
0
0
0
0
1
1
1
8 entradas
Apenas uma em nível ALTO de
cada vez
Codificador
.
.
.
.
.
.
Código de saída de 3 bits
Codificador Octal - binário
Saídas
Entradas
A7
A6
A5
A4
A3
A2
A1
A0
O2
O1
O0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
1
0
0
0
0
1
1
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
1
0
1
0
1
0
0
0
0
0
0
1
1
0
1
0
0
0
0
0
0
0
1
1
1
O0 = A1 + A3 + A5 + A7
O1 = A2 + A3 + A6 + A7
O2 = A4 + A5 + A6 +A7
Equações booleanas
Saídas
Entradas
Codificador Octal - binário
module codificador_octal_binario
(output reg O0, O1, O2,
input A0, A1, A2, A3, A4, A5, A6, A7);
always@(*) begin
O0 = A1 | A3 | A5 | A7;
O1 = A2 | A3 | A6 | A7;
O2 = A4 | A5 | A6 | A7;
end
endmodule
A7
A6
A5
A4
A3
A2
A1
A0
O2
O1
O0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
1
0
0
0
0
1
1
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
1
0
1
0
1
0
0
0
0
0
0
1
1
0
1
0
0
0
0
0
0
0
1
1
1
Codificador Octal - binário
Saídas
Entradas
A7
A6
A5
A4
A3
A2
A1
A0
O2
O1
O0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
1
0
0
0
0
1
1
0
0
0
1
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
1
0
1
0
1
0
0
0
0
0
0
1
1
0
1
0
0
0
0
0
0
0
1
1
1
Codificador Decimal - BCD (Binary Coded Decimal)
Código BCD 8421 – Binary Coded Decimal (Decimal Codificado em Binário), é composto por
quatro bits, tendo cada bit um peso equivalente ao do sistema numérico binário:
Decimal
BCD
Ao invés de se converter um número formado por
0
0
0
0
0
1
0
0
0
1
2
0
0
1
0
sistema binário os sistemas digitais que utilizam
3
0
0
1
1
este código podem converter cada
4
0
1
0
0
dígito do número para o BCD.
5
0
1
0
1
Por exemplo:
6
0
1
1
0
7
0
1
1
1
8
1
0
0
0
9
1
0
0
1
diversos dígitos para o
45623 = 0100 0101 0110 0010 0011
4
5
6
2
3
Codificador Decimal - BCD (Binary Coded Decimal)
Saídas
Entradas
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
S3
S2
S1
S0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
0
0
1
0
0
0
0
1
0
0
0
0
0
0
0
1
0
0
0
0
0
1
1
0
0
0
0
0
1
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
1
0
0
0
1
0
0
0
0
0
0
0
1
1
0
0
0
1
0
0
0
0
0
0
0
0
1
1
1
0
1
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
0
0
0
0
1
0
0
1
S3 = A8 + A9
S2 = A4 + A5 + A6 + A7
S1 = A2 + A3 + A6 + A7
S0 = A1 + A3 + A5 + A7 + A9
Equações booleanas
Codificador Decimal - BCD (Binary Coded Decimal)
module codificador_decimal_BCD
(output reg S0, S1, S2, S3,
input A1, A2, A3, A4, A5, A6, A7, A8, A9);
always@(*) begin
S3 = A8 | A9;
S2 = A4 | A5 | A6 | A7;
S1 = A2 | A3 | A6 | A7;
S0 = A1 | A3 | A5 | A7 | A9;
end
endmodule
Codificador Decimal - BCD (Binary Coded Decimal)
Simulação
Um multiplexador 2N:1 apresenta:
2N entradas de dados
N entradas de seleção;
1 saída.
Um multiplexador 2N:1 conecta uma de suas 2N entradas à
saída
• Abaixo está representado um multiplexador 8:1 como
sendo uma chave cuja posição corresponde ao número
binário apresentado nas entradas de controle A, B e C.
• A posição da chave mostrada na figura abaixo
corresponde aos valores: A = 1, B = 1 e C = 0.
Multiplexador 4:1
MUX
MUX 4:1
4:1
Tabela Verdade
A
B
Z
0
0
I0
0
1
I1
1
0
I2
1
1
I3
I0
I1
I2
Z
I3
A
B
Multiplexador 4:1
MUX
MUX 4:1
4:1
Tabela Verdade
A
B
Z
0
0
I0
0
1
I1
1
0
I2
1
1
I3
I0
I1
I2
Z
I3
A
Z =I0 A B + I1 A B + I2A B + I3AB
+
B
Multiplexador 4:1
Descrição Verilog:
module multiplexador4x1_descricao1
Tabela Verdade
A
B
Z
0
0
I0
0
1
I1
1
0
I2
1
1
I3
(output reg Z,
input A, B, I0, I1, I2, I3);
always @ (*) begin
Z = I0&(!A)&(!B)|I1&B&(!A)|I2&(!B)&A|I3&A&B;
end
endmodule
Z =I0 A B + I1 A B + I2A B + I3AB
+
Multiplexador 4:1
Tabela Verdade
A
B
Z
0
0
I0
0
1
I1
1
0
I2
1
1
I3
Z =I0 A B + I1 A B + I2A B + I3AB
+
Multiplexador 4:1
module multiplexador4x1_descricao2
(output reg Z,
Tabela Verdade
input A, B, I0, I1, I2, I3);
A
B
Z
0
0
I0
0
1
I1
case ({A, B})
1
0
I2
2'b00: Z = I0;
1
1
I3
always @ (*) begin
2'b01: Z = I1;
2'b10: Z = I2;
2'b11: Z = I3;
endcase
end
endmodule
Multiplexador 4:1
Tabela Verdade
A
B
Z
0
0
I0
0
1
I1
1
0
I2
1
1
I3
module multiplexador4x1_descricao2
(output reg Z,
input A, B, I0, I1, I2, I3);
always @ (*) begin
case ({A, B})
Diagrama Esquemático do mux
2'b00: Z = I0;
2'b01: Z = I1;
2'b10: Z = I2;
2'b11: Z = I3;
endcase
end
endmodule
Multiplexador 4:1
Tabela Verdade
module multiplexador4x1_descricao3
A
B
Z
(output reg Z,
0
0
I0
input A, B, I0, I1, I2, I3);
0
1
I1
always @(*) begin
1
0
I2
Z = 0;
1
1
I3
if ({A,B} == 0)
Z = I0;
Diagrama Esquemático do mux
else if ({A,B} == 1)
Z = I1;
else if ({A,B} == 2)
Z = I2;
else if ({A,B} == 3)
Z = I3;
end
endmodule
O Multiplexador como um Bloco Lógico Básico
• Um multiplexador 2N:1 pode implementar qualquer função de N
variáveis:
• Exemplo:
• Implementar a função booleana:
O Multiplexador como um Bloco Lógico Básico
Solução:
1. Mapa de Karnaugh da função
O Multiplexador como um Bloco Lógico Básico
2. conectar as variáveis às entradas de seleção do multiplexador;
3. conectar "0" ou "1" apropriadamente em cada entrada de dados, dependendo
do valor de saída desejado;
0
0
0
0
1
1
1
1
1
0
0
0
0
1
1
1
0
1
2
3
4
5
6
MUX
7
8
16:1
9
10
11
12
13
14
15 A3 A2 A1 A0
A
B
C
D
f
Multiplexadores em Cascata
•Multiplexadores maiores podem ser implementados utilizando-se
multiplexadores menores em cascata:
•Exemplo1: MUX 8:1 construído a partir de dois MUX 4:1 e um MUX 2:1
Multiplexadores em Cascata
•
Exemplo2: MUX 8:1 construído a partir de quatro MUX 2:1 e um MUX 4:1
Demultiplexador
Demultiplexador
•
•
•
•
Um demultiplexador N:2N apresenta:
1 entrada de dados.
2N saídas.
N entradas de seleção representando o índice binário i da saída à qual a
entrada de dado está conectada;
•
Exemplo:
Estrutura interna do demultiplexador 1:2 é:
D
A
Saída0 = D.A
Saída1 = D.A
D = Dado
A = Seleção
Demultiplexador
Tabela Verdade
A
Saída0
Saída1
0
D
0
1
0
D
D
A
Saída0 = D.A
Saída1 = D.A
D = Dado
A = Seleção
Demultiplexador 2 : 4
Demultiplexador 2 : 4
Tabela Verdade
A B Y0 Y1 Y2 Y3
0
0 D
0
0 0
0
1 0
D
0 0
1
0 0
0
D 0
1
1 0
0
0 D
D
Y0 =D A B
Y1 =D A B
Y2 =D A B
Y3 =D A B
+
++
Demultiplexador 2 : 4
Descrição:
Tabela Verdade
A B Y0 Y1 Y2 Y3
0
0 D
0
0 0
0
1 0
D
0 0
1
0 0
0
D 0
1
1 0
0
0 D
module demultiplexador2x4_descricao1
(output reg Y0, Y1, Y2, Y3,
input A, B, D);
always @ (*) begin
Y0 = D&(!A)&(!B);
Y1 = D&(!A)& B;
Equações booleanas
Y3 = D&A&B;
Y0 =D A B
Y1 =D A B
Y2 =D A B
Y3 =D A B
Y2 = D&A&(!B);
end
endmodule
+
++
Esquemático
Demultiplexador 2 : 4
Descrição:
module demultiplexador2x4_descricao1
(output reg Y0, Y1, Y2, Y3,
input A, B, D);
always @ (*) begin
Y0 = D&(!A)&(!B);
Y1 = D&(!A)& B;
Y2 = D&A&(!B);
Y3 = D&A&B;
end
endmodule
Simulação
Demultiplexador 2 : 4
module demultiplexador2x4_descricao2
(output reg Y0, Y1, Y2, Y3,
input A, B, D);
always @(*) begin
Y0 = 0; Y1 = 0; Y2 = 0; Y3 = 0;
if ({A,B} == 0)
Y0 = D;
else if ({A,B} == 1)
Y1 = D;
else if ({A,B} == 2)
Y2 = D;
else if ({A,B} == 3)
Y3 = D;
end
endmodule
Simulação
Conexões multi-ponto
Multiplexadores e Demultiplexadores podem ser utilizados em conexões multiponto.
No exemplo abaixo é possível selecionar múltiplas fontes de entrada e
múltiplos destinos de saída:
Controlador para display de 7 segmentos
Controlador para display de 7 segmentos
Controlador
a
Entrada
f
Binária
De 4 bits
g
e
b
c
d
Display de 7
segmentos
Controlador para display de 7 segmentos
Podemos formar qualquer algarismo de 0 a 9 usando uma combinação de 7 segmentos
de um mostrador.
Tabela Verdade do controlador
Dígito
decimal
entradas
saídas
Controlador para display de 7 segmentos
CONTROLADOR
DECODIFICADOR
A
A0
CODIFICADOR
S0
A0
S1
A1
S2
A2
S3
S4
A3
a
b
B
A1
c
C
A2
S5
A5
d
D
A3
S6
A6
e
S7
A7
S8
A8
S9
A9
A4
f
g
Controlador para display de 7 segmentos
module controlador_7_segmentos
(output reg [7:1] seg, // seg[7] = a; seg[6] = b ... seg[1] = g
input [3:0] digito);
always @(*) begin
case (digito)
4'b0000: seg = 7'b1111110;
4'b0001: seg = 7'b0110000;
4'b0010: seg = 7'b1101101;
4'b0011: seg = 7'b1111001;
4'b0100: seg = 7'b0110011;
4'b0101: seg = 7'b1011011;
4'b0110: seg = 7'b1011111;
4'b0111: seg = 7'b1110000;
4'b1000: seg = 7'b1111111;
4'b1001: seg = 7'b1111011;
default : seg = 7'b0000000;
endcase
end
endmodule
Simulação