Upload
internet
View
117
Download
4
Embed Size (px)
Citation preview
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
• 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
.
.
.
.
.
.
2N Saídas
N entradas Decodificador
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)
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
Descrição Verilog:
module decodificador2x4_descricao1
(output reg S0, S1, S2, S3,
input A0, A1);
always @ (*) begin
S0 = (!A0)&(!A1);
S1 = (A0)&(!A1);
S2 = (!A0)&A1;
S3 = A0&A1;
end
endmodule
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
Esquema elétrico
Simulação
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
Esquema elétrico
Simulação
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
module decodificador2x4_descricao1
(output reg S0,S1,S2,S3,
input [1:0] controle);
always @ (*) begin
case (controle)
2'b00: begin
S0 = 1;
S1 = 0;
S2 = 0;
S3 = 0;
end
2'b01: begin
S0 = 0;
S1 = 1;
S2 = 0;
S3 = 0;
end
2'b10: begin
S0 = 0;
S1 = 0;
S2 = 1;
S3 = 0;
end
2'b11: begin
S0 = 0;
S1 = 0;
S2 = 0;
S3 = 1;
end
endcase
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 Codificador Código de saída de N bitsApenas uma em nível ALTO de
cada vez
Codificador
• Exemplo 1 :
Projetar um codificador octal para binário (8 entradas e 3 saídas)
Solução:
.
.
.
.
.
.
8 entradas Codificador Código de saída de 3 bitsApenas uma em nível ALTO de
cada vez
Codificador Octal - binário
.
.
.
.
.
.
8 entradas Codificador Código de saída de 3 bitsApenas uma em nível ALTO de
cada vez
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
Entradas Saídas
Codificador Octal - binário
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
Entradas Saídas
O0 = A1 + A3 + A5 + A7
O1 = A2 + A3 + A6 + A7
O2 = A4 + A5 + A6 +A7
Equações booleanas
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
Entradas Saídas
Codificador Octal - binário
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
Entradas Saídas
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
0 0 0 0 0
1 0 0 0 1
2 0 0 1 0
3 0 0 1 1
4 0 1 0 0
5 0 1 0 1
6 0 1 1 0
7 0 1 1 1
8 1 0 0 0
9 1 0 0 1
Ao invés de se converter um número formado por
diversos dígitos para o
sistema binário os sistemas digitais que utilizam
este código podem converter cada
dígito do número para o BCD.
Por exemplo:
45623 = 0100 0101 0110 0010 0011
4 5 6 2 3
Codificador Decimal - BCD (Binary Coded Decimal)
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
Entradas Saídas
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.
A B Z
0 0 I0
0 1 I1
1 0 I2
1 1 I3
Tabela Verdade
Multiplexador 4:1
MUX 4:1
Z
I0
I1
I2
I3
A B
MUX 4:1
A B Z
0 0 I0
0 1 I1
1 0 I2
1 1 I3
Tabela Verdade
Multiplexador 4:1
MUX 4:1
Z
I0
I1
I2
I3
A B
MUX 4:1
Z =I0 A + I1B A B + I2A B +
+ I3AB
A B Z
0 0 I0
0 1 I1
1 0 I2
1 1 I3
Tabela Verdade
Multiplexador 4:1
Z =I0 A + I1B A B + I2A B +
+ I3AB
Descrição Verilog:
module multiplexador4x1_descricao1
(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
A B Z
0 0 I0
0 1 I1
1 0 I2
1 1 I3
Tabela Verdade
Multiplexador 4:1
+ I3ABZ =I0 A + I1B A B + I2A B +
A B Z
0 0 I0
0 1 I1
1 0 I2
1 1 I3
Tabela Verdade
Multiplexador 4:1
module multiplexador4x1_descricao2
(output reg Z,
input A, B, I0, I1, I2, I3);
always @ (*) begin
case ({A, B})
2'b00: Z = I0;
2'b01: Z = I1;
2'b10: Z = I2;
2'b11: Z = I3;
endcase
end
endmodule
A B Z
0 0 I0
0 1 I1
1 0 I2
1 1 I3
Tabela Verdade
Multiplexador 4:1
module multiplexador4x1_descricao2
(output reg Z,
input A, B, I0, I1, I2, I3);
always @ (*) begin
case ({A, B})
2'b00: Z = I0;
2'b01: Z = I1;
2'b10: Z = I2;
2'b11: Z = I3;
endcase
end
endmodule
Diagrama Esquemático do mux
A B Z
0 0 I0
0 1 I1
1 0 I2
1 1 I3
Tabela Verdade
Multiplexador 4:1
module multiplexador4x1_descricao3
(output reg Z,
input A, B, I0, I1, I2, I3);
always @(*) begin
Z = 0;
if ({A,B} == 0)
Z = I0;
else if ({A,B} == 1)
Z = I1;
else if ({A,B} == 2)
Z = I2;
else if ({A,B} == 3)
Z = I3;
end
endmodule
Diagrama Esquemático do mux
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;
0123456789101112131415
f
A3 A2 A1 A0
A B C D
MUX
16:1
0000111110000111
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
• 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:
Demultiplexador
Estrutura interna do demultiplexador 1:2 é:
D
A
D = Dado
A = Seleção
Saída0 = D.A
Saída1 = D.A
Demultiplexador
D
A
D = Dado
A = Seleção
Saída0 = D.A
Saída1 = D.A
A Saída0 Saída1
0 D 0
1 0 D
Tabela Verdade
Demultiplexador 2 : 4
Demultiplexador 2 : 4
A B Y0 Y1 Y2
0 0 D 0 0 0
0 1 0 D 0 0
1 0 0 0 D 0
1 1 0 0 0 D
Tabela Verdade
D
Y3
Y0 =D A B
A B +
A BY1 =D Y2 =D
B +
Y3 =D A +
Demultiplexador 2 : 4
A B Y0 Y1 Y2
0 0 D 0 0 0
0 1 0 D 0 0
1 0 0 0 D 0
1 1 0 0 0 D
Tabela Verdade
Y3
Y0 =D A B
A B +
A BY1 =D Y2 =D
B +
Y3 =D A +
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
Esquemático
Equações booleanas
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
Multiplexadores e Demultiplexadores podem ser utilizados em conexões multi-ponto.
No exemplo abaixo é possível selecionar múltiplas fontes de entrada e múltiplos destinos de saída:
Conexões multi-ponto
Controlador para display de 7 segmentos
Controlador para display de 7 segmentos
Controlador
Display de 7 segmentos
Entrada
Binária
De 4 bits
a
b
c
d
e
fg
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
S0
S1
S2
S3S4
S5
S6
S7
S8
S9
Controlador para display de 7 segmentos
DECODIFICADOR CODIFICADOR
A
B
C
D
a
b
c
d
e
f
g
A0
A1
A2
A3
A4
A5
A6
A7
A8
A9
CONTROLADOR
A0
A1
A2
A3
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