Pular para o conteúdo principal

Componentes de Circuíto de Propósito Geral

Multiplexadores

Sobre

O multiplexador ou como é comumente chamado, MUX, é um bloco que tem como objetivo selecionar uma informação dentre as várias possíveis entradas, em que a seleção da entrada depende de uma ou mais chaves seletoras. Ou seja, o bloco é simplesmente um seletor de dados.

mux_conceito

Para representar o bloco utilizamos dois números, em que o primeiro representa a quantidade de entradas e o segundo o número de saídas. Tome um MUX 4:1 como exemplo

As entradas I0,I1,I2I_0, I_1, I_2 e assim por diante são selecionadas quando o valor representado em binário pelas chaves seletoras é igual a seu seu índice, note que o bit mais significativo das chaves de seleção encontra-se representado a esquerda, enquanto as entradas estão ordenadas de ordem crescente de cima para baixo.

De maneira geral, o número de entradas em um MUX podem ser tantas quanto seja necessário, no entanto, por conveniência sempre as utilizamos como potências de 2. Note que, k chaves podem reduzir 2^k entradas a uma única saída, assim, para n entradas serão necessárias log2(n) chaves seletoras.

Circuito Combinacional

De início, por simplicidade, vamos nos concentrar no MUX 2:1 para entender a lógica por trás do bloco.

Tabela Verdade MUX 2:1

SS ZZ
0I0I_0
1I1I_1

A fim de escalar o circuito, podemos expandir o número de entradas. Desse modo, para desenvolver um MUX 4:1 temos duas saídas: podemos simplesmente expandir a lógica utilizada anteriormente ou é possível utilizar os próprios multiplexadores 2:1 anteriormente desenvolvidos. Observe as duas implementações respectivamente:

Tabela Verdade MUX 4:1

s1s_1s0s_0zz
00I0I_0
01I1I_1
10I2I_2
11I3I_3

Observe a função booleana resultante da soma dos produtos na primeira implementação

  • Z=s1s0i0+s1s0i1+s1s0i2+s1s0i3Z = s_1 s_0 i_0 + s_1 s_0 i_1 + s_1 s_0 i_2 + s_1 s_0 i_3

Note que a partir da segunda implementação é possível cascatear quantos multiplexadores forem necessários, de forma que qualquer MUX do formato 2^n:1 pode ser representado a partir de outros MUX.

Circuitos Lógicos através de Multiplexadores

Multiplexadores podem ser utilizados para um propósito mais geral através da simplificação de circuitos lógicos, exploraremos esse axioma em prática nos exercícios ao final do capítulo, antes vamos entender a ideia por trás da afirmação.

Teorema da expansão de Shannon

Não iremos realizar a demonstração do teorema e ficará ao cargo do leitor se aprofundar no tema. O teorema implica que qualquer função booleana f(x1,,xn)f (x_1,\dots , x_n) pode ser reescrita da seguinte forma: f(x1,x2,,xn)=x1ˉf(0,x2,,xn)+x1f(1,x2,,xn)f(x_1, x_2,\dots , x_n) = \bar{x_1} f (0, x_2,\dots , x_n) + x_1 f (1, x_2,\dots , x_n)

Por exemplo f(x1,x2,x3)=x1ˉx3ˉ+x1x2+x1x3f(x_1,x_2,x_3) = \bar{x_1} \bar{x_3} + x_1x_2 + x_1x_3 f(x1,x2,x3)=x1ˉ(x3ˉ)+x1(x2+x3)f(x_1,x_2,x_3) = \bar{x_1}(\bar{x_3}) + x_1(x_2 + x_3)

É importante ressaltar que a complexidade final da expressão booleana dependerá da escolha de xix_i, podendo ser mais ou menos complexa que a lógica inicial, de modo que é vantajoso explorar diferentes escolhas de xix_i para otimização. Veja a seguir um má escolha para o circuito anterior: f(x1,x2,x3)=x1ˉx3ˉ+x1x2+x1x3f(x_1,x_2,x_3) = \bar{x_1} \bar{x_3} + x_1x_2 + x_1x_3 f(x1,x2,x3)=x2ˉ(x1ˉx3ˉ+x1x3)+x2(x1ˉx3ˉ+x1+x1x3)=x2ˉ(x1ˉx3ˉ+x1x3)+x2(x1ˉx3ˉ+x1)f(x_1,x_2,x_3) = \bar{x_2}(\bar{x_1}\bar{x_3} + x_1x_3) + x_2(\bar{x_1}\bar{x_3} + x_1 + x_1x_3) = \bar{x_2}(\bar{x_1}\bar{x_3} + x_1x_3) + x_2(\bar{x_1}\bar{x_3} + x_1)

Veja que podemos realizar a expansão com mais de uma variável em evidencia, de modo que essas variáveis podem representar as diversas chaves seletoras em um MUX n:1

f(x1,,xn)=x1x2f(0,0,x3,,xn)+x1x2f(0,1,x3,,xn)+x1x2f(1,0,x3,,xn)+x1x2f(1,1,x3,,xn)f(x_1, \dots, x_n) = x_1 x_2 \cdot f(0, 0, x_3, \dots, x_n) + x_1 x_2 \cdot f(0, 1, x_3, \dots, x_n) + x_1 x_2 \cdot f(1, 0, x_3, \dots, x_n) + x_1 x_2 \cdot f(1, 1, x_3, \dots, x_n)

Finalmente, podemos concluir que a expansão de Shannon pode ser feita recursivamente:

f(x1,x2,,xn)=x1ˉf(0,x2,,xn)+x1f(1,x2,,xn)f(x_1, x_2, \dots, x_n) = \bar{x_1} \cdot f(0, x_2, \dots, x_n) + x_1 \cdot f(1, x_2, \dots, x_n)

f(0,x2,,xn)=x2ˉf(0,0,,xn)+x2f(0,1,,xn)f(0, x_2, \dots, x_n) = \bar{x_2} \cdot f(0, 0, \dots, x_n) + x_2 \cdot f(0, 1, \dots, x_n)

f(1,x2,,xn)=x2ˉf(1,0,,xn)+x2f(1,1,,xn)f(1, x_2, \dots, x_n) = \bar{x_2} \cdot f(1, 0, \dots, x_n) + x_2 \cdot f(1, 1, \dots, x_n)

f(x1,x2,,xn)=x1ˉ(x2ˉf(0,0,,xn)+x2f(0,1,,xn))+x1(x2ˉf(1,0,,xn)+x2f(1,1,,xn))f(x_1, x_2, \dots, x_n) = \bar{x_1} \cdot \left( \bar{x_2} \cdot f(0, 0, \dots, x_n) + x_2 \cdot f(0, 1, \dots, x_n) \right) + x_1 \cdot \left( \bar{x_2} \cdot f(1, 0, \dots, x_n) + x_2 \cdot f(1, 1, \dots, x_n) \right)

Dessa forma em muitos casos a reorganização de circuitos para utilização de multiplexadores podem simplificar a lógica, além disso qualquer circuito pode ser representado utilizando apenas multiplexadores

Demultiplexador

O material não irá se aprofundar nesse circuito, contudo, como o nome sugere, podemos inferir que sua função é transmitir uma única entrada de sinal por uma de suas saídas. Assim, podemos classificá-lo como direcionador de um dado.

Tabela Verdade Demux 1:2

ssz0z_0z1z_1
0II0
10II

Tabela Verdade Demux 1:4

s1s_1s0s_0z0z_0z1z_1z2z_2z3z_3
00II000
010II00
1000II0
11000II

Codificadores e Decodificadores

Decoders

Sobre

Dispositivos lógicos utilizados para conversão de determinada entrada de dados em um certo formato especificado, por exemplo, uma entrada de números binários que são convertidas para desejadas saídas. Um decoder de n inputs (entradas) tem 2^n outputs (saídas), assim a nomenclatura destes elementos associam-se de acordo com tais valores, 2:4 Decoder (2 entradas e 4 saídas).

Descrição da Imagem

w0, w1 - Entradas do 2:4 Decoder y0, y1, y2, y3 - Saídas do 2:4 Decoder

Agora, a tabela verdade dessas entradas:

w₁w₀y₀y₁y₂y₃
001000
010100
100010
110001

Note como todas as saídas pelo menos possuem “1” como um dos valores - no primeiro caso y0, segundo caso y1 e assim sucessivamente - essas saídas chamam-se one-hot code, uma vez que cada possui somente um valor ativo.

Circuito Lógico

A implementação do Decoder utilizando elementos de lógica digital segue a seguinte forma:

Descrição da Imagem

Veja que cada entrada representa um minterm (minitermo) - expressão booleana que resulta em único valor (0 ou 1). Neste caso são os seguintes:

y0 = !w0!w1 y1 = w0!w1 y2 = !w0w1 y3 = w0w1

Portanto, novamente verifica-se a tabela verdade descrita anteriormente

Uso prático

Em displays de 7 segmentos, utilizados para a representação de números em displays digitais, como painéis de horário encontrados na rua. Um decodificador de display de 7 segmentos converte códigos binários ou outros tipos de entrada em sinais que acendem os segmentos apropriados do display. Ademais, os decodificadores são usados para mostrar números em medidores de velocidade, temperatura e combustível.


Encoder

Dispositivos lógicos que apresentam função contrária ao dos Decoders, ou seja, codifica uma determinada entrada de dados para certo formato especificado. Possui 2^n inputs (entradas) e n outputs (saídas), dos quais pelo menos um deles deve ter o valor 1.

Descrição da Imagem

Por exemplo, para um Encoder 4:2 (4 entradas e 2 saídas), as entradas são:

w₃w₂w₁w₀y₁y₀
000100
001001
010010
100011

Circuito Lógico

A implementação do Encoder utilizando elementos de lógica digital segue a seguinte forma:

Descrição da imagem

Veja que a saída y0 depende somente das entradas w1 e w3, isto é, quando w1 ou w3 valem 1, y0 vale 1. Além disso, da mesma forma a saída y1 depende apenas das entradas w2 ou w3, quando w2 ou w3 valem 1, y1 vale 1 também.

Dessa forma, pode-se usar duas portas OR para obter as saídas y0 e y1, com (w1 OR w3) e (w2 OR w3), respectivamente. Por fim, nota-se que a entrada w0 não exerce influência, por isso não se liga a porta alguma.

Uso prático

Em sistemas de comunicação digital, como a transmissão de dados pela internet via modem ou rede sem fio, os dados são frequentemente codificados para garantir uma transmissão eficiente e segura. O decodificador no modem ou roteador converte os dados codificados recebidos em um formato adequado, permitindo o acesso a websites, e-mails e outros serviços online. Dessa forma, os decoders diminuem o número de bits necessários para representação de determinada informação e também minimizam o número de cabos utilizados.


Exercícios

  1. Através da seguinte tabela verdade, construa um circuito utilizando apenas um multiplexador 2:1
ABCf
0000
0010
0101
0111
1000
1011
1100
1111
  1. Utilize a seguinte função f(x1,x2,x3,x4)=x1x2x3ˉ+x1x3ˉx4+x1ˉx2x3+x1x3+x1ˉx3ˉx4f(x_1,x_2,x_3,x_4) = x_1x_2\bar{x_3} + x_1\bar{x_3}x_4 + \bar{x_1}x_2x_3 + x_1x_3 + \bar{x_1}\bar{x_3}x_4 para derivar um circuito através da expansão de shannon com duas variaveis em evidência, faça a escolha mais eficiente.
  2. O crossbar switch é um circuito útil em diversas aplicações que conectam dois grupos de fios nas quais o padrão de conexão muda de tempo em tempo. Observe sua lógica de funcionamento através da figura :

crossbar_switch

A entrada SS controla a conexão das entradas AiA_i e as saídas BiB_i. Se S=0S = 0 o circuito conecta A1A_1 com B1B_1 e A2A_2 com B2B_2, caso S=1S = 1 a conexão é invertida. Construa um crossbar switch 2x2 através de dois multiplexadores 2:1

  1. Implemente a função f(w1, w2, w3) = ∑ m(0, 1, 2, 4, 5, 7) utilizando um encoder 3:8 e uma porta OR (inspirado no livro Fundamentals of Digital Logic with Verilog Design).

  2. Implemente a função f(w1, w2, w3) = ∑ m(1, 3, 5, 7) utilizando um decoder 3:8 e uma porta OR.

  3. Faça um circuito que converta um código binário em Gray code de acordo com a tabela (semelhante ao exercício exemplo 4.27 no livro Fundamentals of Digital Logic with Verilog Design):

b₂b₁b₀g₂g₁g₀
000000
001001
010011
011010
100110
101111
110101
111100

Gabarito

4-

  1. Fazer a tabela verdade dos mintermos.
ABCF
000m₀
001m₁
010m₂
011m₃
100m₄
101m₅
110m₆
111m₇
  1. Veja que somente interessam as entradas mintermos m0, m1, m2, m4, m5, m7. Agora, fazer a tabela verdade do Decoder 3:8.
w₇w₆w₅w₄w₃w₂w₁w₀y₂y₁y₀
00000001000
00000010001
00000100010
00001000011
00010000100
00100000101
01000000110
10000000111
  1. Perceba que para cada m_n (mintermo n) a saída w_n (saída w n) está ativada, ou seja, possui valor 1. Com isso, basta identificar quais entradas (y2, y1, y0) associam-se aos mintermos desejados (m0, m1, m2, m4, m5, m7). Considerando que cada entrada somente possuirá somente uma saída 1, utiliza-se a porta OR ligada aos mintermos de interesse.

Descrição da Imagem

5- Semelhante ao exercício 4

6-

  1. Perceba que para cada valor em g2, o valor em b2 é semelhante, logo: g2 = b2.
  2. Além disso, a saída g1 resulta da operação XOR entre b1 e b2 (b1 XOR b2), logo: g1 = b1 XOR b2.
  3. Por fim, a saída g0 resulta da operação XOR entre b0 e b1 (b0 XOR b1), logo: g0 = b0 XOR b1.

Descrição da Imagem

Autoria
  • Felipe Camargo Cerri - 15451119
  • Rodrigo Silva de Almeida - 15645380
  • Matheus Aparecido de Almeida Rodriguez - 14597868
Referencias