circuitos logicos

30
ELETRÔNICA DIGITAL Prof. Daniel Cardoso 37 CAPÍTULO 4 Codificadores e Multiplexadores 4.1. Códigos Binários 4.1.1. Códigos BCD (Binary-Coded Decimal, ou Decimal Codificado em Binário) São códigos binários que representam diretamente os algarismos decimais de 0 a 9. Cada algarismo de um numeral decimal é codificado em BCD individualmente, de forma semelhante à conversão de hexadecimal para binário, e dessa forma, os numerais decimais são codificados (e não convertidos) em binário. 4.1.1.1. Código BCD 8421 É um código de 4 bits que usa o padrão 8421 de pesos posicionais do sistema binário, onde 8, 4, 2 e 1 são as potências de 2 para numerais binários de 4 bits. Somando os pesos de cada bit 1 da palavra-código, obtém-se o algarismo decimal correspondente, de maneira idêntica à conversão normal de binário para decimal. Como mostrado na tabela 4.1, o código BCD 8421 utiliza somente 10 das 16 combinações possíveis com palavras de 4 bits. Decimal BCD 8 4 2 1 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 Tabela 4.1 - Código BCD 8421. Exemplo de conversão decimal – BCD 8421: 725 10 0111_0010_0101 BCD A principal vantagem do código BCD 8421 é a sua simplicidade: ele é tão popular que quase sempre é chamado simplesmente de “código BCD”, ficando implícito tratar-se do BCD 8421.

Upload: jose-roberto-stanganini

Post on 05-Dec-2014

115 views

Category:

Documents


11 download

TRANSCRIPT

Page 1: circuitos logicos

ELETRÔNICA DIGITAL Prof. Daniel Cardoso

37

CAPÍTULO 4

Codificadores e Multiplexadores

4.1. Códigos Binários 4.1.1. Códigos BCD (Binary-Coded Decimal, ou Decimal Codificado em Binário) São códigos binários que representam diretamente os algarismos decimais de 0 a 9. Cada algarismo de um numeral decimal é codificado em BCD individualmente, de forma semelhante à conversão de hexadecimal para binário, e dessa forma, os numerais decimais são codificados (e não convertidos) em binário. 4.1.1.1. Código BCD 8421

É um código de 4 bits que usa o padrão 8421 de pesos posicionais do sistema binário, onde 8, 4, 2 e 1 são as potências de 2 para numerais binários de 4 bits. Somando os pesos de cada bit 1 da palavra-código, obtém-se o algarismo decimal correspondente, de maneira idêntica à conversão normal de binário para decimal.

Como mostrado na tabela 4.1, o código BCD 8421 utiliza somente 10 das 16 combinações possíveis com palavras de 4 bits.

Decimal BCD 8 4 2 1

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

Tabela 4.1 - Código BCD 8421. Exemplo de conversão decimal – BCD 8421:

72510 0111_0010_0101BCD

A principal vantagem do código BCD 8421 é a sua simplicidade: ele é tão

popular que quase sempre é chamado simplesmente de “código BCD”, ficando implícito tratar-se do BCD 8421.

Page 2: circuitos logicos

UFPA / ITEC / FEE Eletrônica Digital

38

4.1.1.2. Código Excesso-3 (XS3) É um código BCD em que soma-se 3 à representação em BCD 8421 de cada dígito decimal. O objetivo é gerar um código binário auto-complementar, o que significa um código no qual o complemento de 1 de uma palavra-código corresponde, em decimal, ao complemento de 9 do algarismo decimal que a palavra inicial representava. O complemento de 9 de um algarismo decimal ‘D’ é o quanto falta para ele chegar a 9: C9(D) = 9 – D.

O complemento de 1 de um numeral binário ‘B’, de n bits, é definido por:

C1(B) = (2n – 1)2 – B onde (2n – 1)2 é uma palavra de n bits em que todos são iguais a ‘1’. O complemento de 1 de B pode ser encontrado de forma lógica invertendo-se todos os bits de B, um por um.

B = bn-1 bn-2 ... b1 b0 C1(B) = 012-n1n b b ... b b −

Decimal Excesso-3 0 0 0 1 1 1 0 1 0 0 2 0 1 0 1 3 0 1 1 0 4 0 1 1 1 5 1 0 0 0 6 1 0 0 1 7 1 0 1 0 8 1 0 1 1 9 1 1 0 0

Tabela 4.2 - Código XS3. O 210 em excesso-3 é 0101; o complemento de 9 do 210 é 710, logo o 710 em XS3 é 1010, o complemento bit a bit de 0101. O 910 em XS3 é o complemento de 1 do 010 em XS3, o 810 é o complemento de 1 do 110, e assim por diante. Isso caracteriza o código como auto-complementar: um algarismo decimal e seu complemento de 9 correspondem a palavras binárias também complementares. Para converter-se um numeral de decimal para excesso-3, deve-se somar 0011 (3) à representação BCD 8421 de cada algarismo desse numeral. Por exemplo:

109810 excesso-3 109810 = 0001_0000_1001_1000BCD 0100_0011_1100_1011XS3

Para converter-se um numeral de excesso-3 para decimal, subtrair 0011 de cada grupo de 4 bits (a contar da direita) e escrever o equivalente decimal de cada resultado. Por exemplo:

100_1010_0110XS3 1_0111_0011BCD = 17310 A desvantagem do código excesso-3 é que ele não é ponderado.

Page 3: circuitos logicos

ELETRÔNICA DIGITAL Prof. Daniel Cardoso

39

4.1.1.3. Código 2-entre-5 Trata-se de um código com palavras de 5 bits, em que cada palavra contém somente dois bits ‘1’. Na codificação dos algarismos decimais de 0 até 9, as palavras-código também são usadas em ordem crescente. Sua vantagem é a facilidade de detecção de erros, pois todas as palavras precisam ter a mesma quantidade de ‘1’s. Sua desvantagem é ser muito redundante (das 32 combinações possíveis, apenas 10 são usadas).

Decimal 2-entre-5 0 0 0 0 1 1 1 0 0 1 0 1 2 0 0 1 1 0 3 0 1 0 0 1 4 0 1 0 1 0 5 0 1 1 0 0 6 1 0 0 0 1 7 1 0 0 1 0 8 1 0 1 0 0 9 1 1 0 0 0

Tabela 4.3 - Código 2-entre-5. Uma vantagem dos códigos BCD é que numerais decimais com a mesma

quantidade de algarismos são codificados por palavras de mesmo comprimento. Dentre as desvantagens dos códigos BCD, citam-se: eles não usam todas as combinações possíveis de bits; são menos eficientes que a representação em binário puro, pois ocupam mais memória e as operações aritméticas são mais complexas e demoradas. 4.1.2. Código Johnson

É um código refletido não-ponderado, de três ou mais bits. Código refletido é aquele em que somente um bit varia quando da passagem de uma palavra (estado) para outra consecutiva, anterior ou posterior. Um código refletido é cíclico, ou seja, do último estado volta-se para o primeiro, fechando o ciclo do código e mantendo a variação de apenas um bit entre palavras vizinhas. O código Johnson implica em uma sequência determinada de geração de suas palavras, sendo gerado por um contador Johnson. É útil em aplicações com circuitos sequenciais.

0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0

Tabela 4.4 - Uma sequência em código Johnson com 5 bits.

Page 4: circuitos logicos

UFPA / ITEC / FEE Eletrônica Digital

40

O código Johnson, ao contrário dos códigos BCD, não foi criado para representar os dígitos decimais. 4.1.3. Código Gray É um código refletido e não-ponderado. Um exemplo de código Gray é mostrado na tabela 4.5, consistindo em uma sequência refletida que percorre o mapa de Karnaugh, passando sempre de uma casa para outra logicamente adjacente, até passar do último valor novamente para o primeiro, fechando o ciclo do código.

Código Gray 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 1 0 0 1 1 0 0 0

Tabela 4.5 - Um exemplo de código Gray. Outras sequências cíclicas de palavras binárias, no mapa de Karnaugh, determinam outras variantes do código Gray:

ABCD 00 01 11 10

00 . . . . 01 . . . . 11 . . . . 10 . . . .

AB CD 00 01 11 10

00 . . . . 01 . . . . 11 . . . . 10 . . . .

Page 5: circuitos logicos

ELETRÔNICA DIGITAL Prof. Daniel Cardoso

41

4.1.4. Código ASCII (American Standard Code for Information Interchange, ou Código Americano Padrão para Intercâmbio de Informações) Pronuncia-se “ásqui”. É adotado nos computadores para a representação de letras, algarismos, sinais de pontuação, caracteres de controle e símbolos especiais. É originalmente um código de 7 bits (128 palavras), mas nos computadores foi acrescentado um oitavo bit para a representação de caracteres especiais, como símbolos gráficos e/ou letras acentuadas. 4.2. Codificadores e Decodificadores Os codificadores e decodificadores formam uma classe de circuitos combinacionais projetados para reconhecer (identificar) os diferentes padrões de bits que possam ocorrer em suas entradas. Existem codificadores e decodificadores feitos para converter palavras de um código para outro. Isto significa receber uma informação codificada de alguma forma e convertê-la para uma outra forma de codificação, sem alterar a informação. Nesse caso, entende-se como codificador o circuito que converte informações de um código conhecido para outro desconhecido ou menos conhecido, e o decodificador é o circuito que faz a conversão contrária.

Denomina-se também de “codificador” o circuito que converte uma informação expressa em muitas linhas de entrada para a forma de palavras de saída em algum código, com um número menor de bits; e denomina-se “decodificador” o circuito que recebe palavras de entrada em algum código e destrincha essa informação em muitas linhas de saída, decodificando-a. 4.2.1. Projetos de Conversores de Códigos 4.2.1.1. Projeto de um codificador BCD 8421 para Excesso-3 A conversão de palavras em BCD 8421 para o código Excesso-3 é mostrada na tabela 4.6. Palavras de entrada maiores que 1001BCD (910) não pertencem mais ao código BCD 8421, isto é, não pertencem ao domínio da função de codificação BCD XS3, logo não se precisa saber a priori quais serão as saídas: elas não importam (don’t care). O uso do ‘X’ no projeto das saídas é opcional, e estas poderiam ter sido todas definidas como ‘0’ para palavras de entrada fora da faixa do código BCD. Mas o emprego do ‘X’ permite a máxima simplificação das expressões das funções de saída, e portanto o mínimo circuito.

Cada bit de saída é uma função lógica diferente das entradas A, B, C e D. Monta-se os mapas de Karnaugh para cada uma, obtendo-se as expressões a seguir:

S3 = A + B(C + D) S2 = B D C + B (C + D) = B D) (C + + B (C + D) S1 = D C + CD = D) (C + + CD S0 = D e depois montam-se os circuitos de S3, S2, S1 e S0; o esquemático é mostrado na figura 4.1. Apesar de as quatro saídas serem independentes entre si, pode-se observar

Page 6: circuitos logicos

UFPA / ITEC / FEE Eletrônica Digital

42

que elas possuem termos comuns, o que deve ser aproveitado para simplificar ainda mais a implementação do circuito, compartilhando-se saídas de portas onde for possível.

BCD 8421 Excesso-3 Decimal A B C D S3 S2 S1 S0

0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 0 2 0 0 1 0 0 1 0 1 3 0 0 1 1 0 1 1 0 4 0 1 0 0 0 1 1 1 5 0 1 0 1 1 0 0 0 6 0 1 1 0 1 0 0 1 7 0 1 1 1 1 0 1 0 8 1 0 0 0 1 0 1 1 9 1 0 0 1 1 1 0 0 X 1 0 1 0 X X X X X 1 0 1 1 X X X X X 1 1 0 0 X X X X X 1 1 0 1 X X X X X 1 1 1 0 X X X X X 1 1 1 1 X X X X

Tabela 4.6 – Conversão do código BCD 8421 para o código XS3.

Figura 4.1 – Codificador de BCD 8421 para Excesso-3.

Page 7: circuitos logicos

ELETRÔNICA DIGITAL Prof. Daniel Cardoso

43

4.2.1.2. Projeto de um decodificador Excesso-3 para BCD 8421

Excesso-3 BCD 8421 Decimal A B C D S3 S2 S1 S0

X 0 0 0 0 X X X X X 0 0 0 1 X X X X X 0 0 1 0 X X X X 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 2 0 1 0 1 0 0 1 0 3 0 1 1 0 0 0 1 1 4 0 1 1 1 0 1 0 0 5 1 0 0 0 0 1 0 1 6 1 0 0 1 0 1 1 0 7 1 0 1 0 0 1 1 1 8 1 0 1 1 1 0 0 0 9 1 1 0 0 1 0 0 1 X 1 1 0 1 X X X X X 1 1 1 0 X X X X X 1 1 1 1 X X X X

Tabela 4.7 – Conversão do código XS3 para o código BCD 8421. Os valores das saídas não importam para palavras de entrada que não pertençam ao código XS3. Pelo mesmo procedimento usado anteriormente no projeto do codificador, obtêm-se as seguintes expressões para as saídas S3 a S0:

S3 = A(B + CD) S2 = B C + C(AD + BD) = CB + + C(AD + BD) S1 = CD + C D S0 = D

Figura 4.2 – Esquema do decodificador de Excesso-3 em BCD 8421.

Page 8: circuitos logicos

UFPA / ITEC / FEE Eletrônica Digital

44

4.2.2. Decodificadores n-para-2n linhas (Decodificadores endereçadores) Os circuitos decodificadores mais simples são aqueles em que uma única saída é ativada para cada uma das possíveis palavras em suas entradas. Um exemplo é um decodificador de 3 para 8 linhas (3-line-to-8-line decoder): ele possui 3 linhas de entrada, logo existem 8 palavras binárias de entrada possíveis; portanto, o circuito precisa ter 8 saídas, cada uma correspondendo a uma palavra de entrada diferente. Isto é, trata-se de um circuito para “converter” (decodificar) palavras de binário para octal, indicando o valor octal em suas saídas. Esse circuito é também chamado “decodificador 1-de-8”, por ter no máximo uma saída ativa de um total de 8. O circuito da figura 4.3 é um decodificador de 3 para 8 linhas básico; neste esquemático, C é o MSB e A é o LSB. Também existem decodificadores 2-para-4-linhas (1-de-4), 4-para-16-linhas (1-de-16) e, de modo geral, n-para-2n-linhas (1-de-2n). Esse tipo de decodificador atua como um endereçador.

Figura 4.3 – Decodificador 3x8 linhas (ou 1-de-8) básico: decodifica de 3 linhas para 8 linhas. Somente uma saída estará ativa para cada combinação de valores dos três bits

de entrada.

As macrofunções digitais, como os codificadores e decodificadores por exemplo, podem possuir alguns recursos extras e diferenças de funcionamento em relação a seus circuitos básicos. Os recursos e diferenças mais comuns são:

Page 9: circuitos logicos

ELETRÔNICA DIGITAL Prof. Daniel Cardoso

45

Sinais ativos em nível baixo (active-low signals): são sinais que repousam normalmente em nível lógico ‘1’, e vão a nível lógico ‘0’ para indicar sua ativação. É um modo de operação muito comum em CI’s digitais. O circuito da figura 4.3 tem as saídas ativadas em nível lógico alto (active-high). Já no decodificador com saídas ativas em nível baixo, uma saída torna-se ‘0’ quando o endereço dela for aplicado.

Tanto sinais de entrada como de saída podem ser active-low, e são identificados por uma bolinha de inversão no pino do sinal, e pelo uso da barra de inversão como parte integrante do nome do sinal. Habilitação do chip (Enable ou Chip Enable): trata-se de um pino de entrada presente em muitos CI’s digitais de prateleira, normalmente denominado E ou CE, que permite habilitar ou inibir a operação do circuito; pode ser ativo em nível alto ou em nível baixo. Quando o sinal de habilitação está ativado, ele habilita o CI, ou seja, permite que as suas saídas mudem de valor, em função das palavras de entrada. Por exemplo, em CI’s nos quais a habilitação é ativa em nível baixo (E ou CE ), as saídas do dispositivo serão habilitadas se E ou CE passarem a ‘0’. Quando a habilitação é desativada, as saídas são inibidas e não respondem mais às palavras de entrada, permanecendo estáticas.

O chip enable não é uma entrada de dados, e sim uma entrada de controle, que

também pode ser chamada de “chip select” (CS ou CS ) ou “select” (S ou S ).

O decodificador 1-de-8 da figura 4.3, acrescido de um pino de habilitação e com saídas ativas em nível baixo, é mostrado na figura 4.4(a); sua tabela-verdade é mostrada na tabela 4.8. Ao ser inserido em um sistema junto com outros circuitos, este decodificador deve ser representado pelo símbolo da figura 4.4(b).

E C B A 0Y 1Y 2Y 3Y 4Y 5Y 6Y 7Y 1 X X X 1 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 0 0 1 0 1 1 0 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 0 1 0 0 1 1 1 1 0 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 0

Tabela 4.8 – Tabela-verdade do decodificador 3-para-8-linhas com enable.

Page 10: circuitos logicos

UFPA / ITEC / FEE Eletrônica Digital

46

(a)

Figura 4.4 – (a) Esquemático e (b) símbolo do decodificador 1-de-8 com enable e saídas ativas em nível baixo.

4.3. Chaves de Três Estados (Tri-state)

As chaves de três estados são componentes indispensáveis nas saídas de blocos de circuito que precisem ser conectados a barramentos. Os barramentos consistem de um conjunto de trilhas que são como vias de trânsito de palavras binárias, interconectando vários blocos funcionais e permitindo a troca de informações entre quaisquer deles. Há barramentos de 8 bits, 16 bits, 32 bits, etc., ou seja, 8, 16 e 32 trilhas respectivamente.

Quando se inibe as saídas de um CI com o chip enable tradicional, elas são “fixadas” em ‘0’ ou em ‘1’, dependendo de qual for o estado ativo das mesmas. Mas como diferenciar o caso em que isso acontece porque o dispositivo foi inibido com o enable, do caso em que a informação nas saídas é mesmo “000...0” ou “111...1” (que podem ser valores válidos)? O problema é que as saídas nunca foram desconectadas do barramento, elas foram apenas fixadas em um valor, mas continuam enviando bits para fora do CI.

(b)

Page 11: circuitos logicos

ELETRÔNICA DIGITAL Prof. Daniel Cardoso

47

O que se precisa é de uma forma de isolar as saídas de um CI qualquer do

barramento no qual ele é ligado. As chaves de três estados vêm resolver esse problema, pois são componentes que possuem três estados de saída: 0, 1 e alta impedância, representada por Z.

As chaves de três estados podem ser: inversora ou não-inversora, ativa em nível alto ou ativa em nível baixo. Chave tri-state não-inversora, ativa em nível alto:

Chave tri-state inversora, ativa em nível alto:

Chave tri-state não-inversora, ativa em nível baixo:

Chave tri-state inversora, ativa em nível baixo:

Como um exemplo de utilização das chaves de três estados, a figura 4.5 mostra um decodificador 2-para-4-linhas com chip enable para saídas tri-state.

Figura 4.5 – Decodificador 2-para-4-linhas com saídas de três estados.

C A Y 0 X Z 1 0 0 1 1 1

C A Y 0 X Z 1 0 1 1 1 0

C A Y 0 0 0 0 1 1 1 X Z

C A Y 0 0 1 0 1 0 1 X Z

Page 12: circuitos logicos

UFPA / ITEC / FEE Eletrônica Digital

48

4.4. Mostrador de Sete Segmentos Um LED (Light-Emitting Diode) é um tipo de diodo que emite luz enquanto conduz corrente. Essa luz pode ser verde, vermelha, azul ou amarela. Um mostrador de sete segmentos consiste de uma caixa com sete LEDs segmentares dispostos na forma de um "8", sendo adequado para a exibição dos algarismos decimais, hexadecimais e de alguns caracteres. Os LEDs (segmentos) são universalmente identificados com as sete primeiras letras do alfabeto, na seqüência da figura 4.6.

Figura 4.6 – Mostrador de sete segmentos.

Cada segmento tem seu próprio pino no encapsulamento do mostrador. Alguns

mostradores possuem também um LED para o ponto decimal, com um pino próprio. Para conhecer-se a pinagem (função de cada pino), é necessário consultar a folha de dados do mostrador específico ou compatível.

A estrutura interna do mostrador de sete segmentos pode ser em cátodo comum (segmentos acionados por tensão alta) ou ânodo comum (segmentos acionados por tensão baixa), como esquematizado na figura 4.7.

Cátodo comum Ânodo comum

Figura 4.7 – Estruturas de mostradores de sete segmentos.

O projeto de qualquer circuito decodificador para acionar mostradores de sete segmentos precisa levar em conta qual dos dois tipos de mostrador será empregado, se o de cátodo comum ou o de ânodo comum. Porém, pode-se acionar mostradores de um tipo com decodificadores projetados para mostradores do outro tipo, simplesmente invertendo-se as saídas desses decodificadores.

Para exibir os algarismos decimais em um mostrador de sete segmentos,

geralmente utiliza-se um decodificador de BCD para o código de 7-segmentos (BCD-to-7-segment decoder). Esse circuito recebe como entrada os algarismos decimais em código BCD, e gera os sinais de ‘a’ a ‘g’ correspondentes para "montar" cada algarismo e exibi-lo no mostrador. Para fazer isso, o decodificador precisa controlar cada segmento individualmente, o que é assegurado por meio do seu projeto. Por exemplo, para exibir o “2”, ativa-se os LEDs a, b, d, e, g, como na figura 4.8.

Page 13: circuitos logicos

ELETRÔNICA DIGITAL Prof. Daniel Cardoso

49

A tabela 4.9 é a tabela-verdade para o projeto de um circuito decodificador de BCD para 7-segmentos, para mostradores do tipo cátodo comum. Monta-se o mapa de Karnaugh para cada saída, de a até g, obtendo-se as expressões mínimas de cada função. Em seguida, esquematiza-se o circuito.

Figura 4.8 – O algarismo 2 exibido no mostrador de sete segmentos.

BCD 8421 Código de 7 Segmentos Decimal A B C D a b c d e f g

0 0 0 0 0 1 1 1 1 1 1 0 1 0 0 0 1 0 1 1 0 0 0 0 2 0 0 1 0 1 1 0 1 1 0 1 3 0 0 1 1 1 1 1 1 0 0 1 4 0 1 0 0 0 1 1 0 0 1 1 5 0 1 0 1 1 0 1 1 0 1 1 6 0 1 1 0 1 0 1 1 1 1 1 7 0 1 1 1 1 1 1 0 0 0 0 8 1 0 0 0 1 1 1 1 1 1 1 9 1 0 0 1 1 1 1 1 0 1 1

Tabela 4.9 – Tabela-verdade para a conversão entre os códigos BCD e 7-segmentos. a = B D + BD + A + C b = C D + CD + B c = B + C + D d = BC D + B C + CD + B D + A e = CD + B D f = BC + BD + C D + A g = B C + BC + CD + A

A figura 4.9 mostra o esquemático do decodificador de BCD para o código de 7-segmentos. Na prática, as ligações das saídas do decodificador para as entradas do mostrador devem sempre ser feitas com resistores em série, com um resistor para cada segmento; caso contrário, os LEDs do mostrador irão queimar. Alguns modelos de mostradores já trazem esses resistores integrados no seu encapsulamento.

Pode-se expandir o projeto do decodificador para reconhecer também as palavras binárias restantes com quatro bits, de 1010 a 1510, exibindo-se então os algarismos hexadecimais correspondentes (de A a F). Isso pode ser útil ou não, dependendo da aplicação (a função do circuito) em que o mostrador será inserido. Por exemplo, não há razão para projetar o decodificador para reconhecer os algarismos hexa se ele só vai ser usado em um relógio digital. Um decodificador de BCD para 7-segmentos certamente é mais simples do que um de hexadecimal para 7-segmentos.

Page 14: circuitos logicos

UFPA / ITEC / FEE Eletrônica Digital

50

Figura 4.9 – Esquemático do decodificador de BCD para o código de 7 segmentos, para mostradores do tipo cátodo comum.

Page 15: circuitos logicos

ELETRÔNICA DIGITAL Prof. Daniel Cardoso

51

4.5. Multiplexadores

A multiplexação consiste na operação de compartilhamento de um canal de comunicação. Esta operação é necessária quando houver mais de uma fonte de dados e um único meio físico para a transmissão desses dados. O conceito básico desta operação, ilustrado na figura 4.10, é o chaveamento da entrada de acesso ao meio entre as diversas fontes, permitindo a passagem de apenas um dos sinais por vez.

Figura 4.10 – Idéia da multiplexagem de sinais.

Um multiplexador digital, também chamado de multiplex ou mux, é um circuito

que, de um conjunto de entradas de dados, seleciona somente uma delas para “encaminhar” até a sua saída, por meio de entradas de seleção. O multiplex é utilizado no lado da transmissão de um sistema de comunicação de dados, para combinar vários canais em um único canal de maior capacidade. Os multiplexadores são também referidos como "seletores de dados" (data selectors).

No mux da figura 4.10, há oito entradas de dados, D0, D1, ..., D7, e uma saída S.

As três entradas de endereçamento / seleção, A2, A1 e A0, selecionam uma das entradas de dados Di para ser conectada à saída S. Se A2A1A0 = 000, D0 é selecionada e S = D0; se A2A1A0 = 001, S = D1, e assim por diante. Este é um mux de 8 canais ou mux 8x1 (“8 por 1” ou “8 para 1”), pois ele multiplexa 8 linhas de entrada de informação em uma única linha de saída.

De modo geral, um mux com n entradas de informação precisa ter m entradas

de seleção, tal que m = log2 n ou n = 2m, como na figura 4.11. Pode-se projetar multiplexadores 2x1, 4x1, 8x1, até 2nx1, com n inteiro.

Figura 4.11 – Símbolo genérico de um multiplexador.

Page 16: circuitos logicos

UFPA / ITEC / FEE Eletrônica Digital

52

O esquema lógico e a tabela-verdade do CI 74151, que é um mux 8x1 com habilitação ativa em nível baixo, são mostrados na figura 4.12. Os sinais de endereçamento são denominados C, B e A, onde C é o MSB.

Tabela-Verdade CBA E Y Y XXX 1 0 1 000 0 D0 0D001 0 D1 1D010 0 D2 2D011 0 D3 3D

100 0 D4 4D101 0 D5 5D

110 0 D6 6D111 0 D7 7D

Figura 4.12 – CI 74151: Mux 8x1 com habilitação e saída dupla.

Page 17: circuitos logicos

ELETRÔNICA DIGITAL Prof. Daniel Cardoso

53

A expressão da saída do 74151 é:

Outra utilidade dos multiplexadores é para a implementação de funções lógicas combinacionais quaisquer. As variáveis de entrada da função são aplicadas nas entradas de seleção do multiplex, e os valores em seqüência da tabela-verdade da função devem permanecer aplicados nas entradas de dados do mux, para serem "selecionados" para a saída pelas variáveis de entrada da função.

O multiplexador digital também pode funcionar como um conversor paralelo-serial, quando é endereçado por um contador periódico com o mesmo número de bits das entradas de seleção, tal como mostrado na figura 4.13. O bit mais significativo da palavra de dados é alocado na entrada selecionada pelo endereço mais baixo, sendo o primeiro a ser levado para a saída. Os bits na ordem decrescente de significância vão sendo selecionados sequencialmente para a saída serial, até que uma nova palavra de dados surge na entrada, e o contador reinicia seu ciclo, repetindo o processo.

Figura 4.13 – Multiplexador usado para conversão paralelo-serial.

4.6. Demultiplexadores O demultiplexador digital, também chamado de demultiplex ou demux, é o circuito que realiza a função inversa à função do multiplex. Ele possui uma única linha de entrada de dados que pode ser conectada a qualquer uma das suas saídas, dependendo da palavra de endereço aplicada às entradas de seleção. Assim, os diversos canais de informação que foram combinados (multiplexados) pelo bloco mux, são novamente recuperados e individualizados pelo demux.

O demux é usado no lado da recepção de um sistema de comunicação de

dados. Um demux com n saídas de informação precisa ter m entradas de seleção, tal que m = log2 n ou n = 2m, como mostrado nas figuras 4.14 e 4.15. Um demux de 4 canais, por exemplo, possui 4 saídas, S0, S1, S2 e S3, e duas entradas de endereçamento, A1 e A0, como na figura 4.16.

( )ECBADACBDABCDABCDBACDABCDABCDABCDY 76543210 +++++++=

Page 18: circuitos logicos

UFPA / ITEC / FEE Eletrônica Digital

54

Figura 4.14 – Idéia da demultiplexagem de sinais.

Figura 4.15 – Símbolo genérico de um demultiplexador.

O circuito lógico do demux é idêntico ao de um decodificador n-para-2n, apenas enxergado sob outro ponto de vista, pois a entrada de dados em um demux corresponde à entrada de habilitação de um decodificador, e a palavra de seleção do demux corresponde à palavra de código no decodificador. Para que o decodificador 3x8 da figura 4.4 opere como um demux, basta tratar C, B e A como entradas de seleção e E como a entrada de dados (invertida).

Figura 4.16 – Símbolo e esquema lógico de um demux de 4 canais.

Page 19: circuitos logicos

ELETRÔNICA DIGITAL Prof. Daniel Cardoso

55

4.7. Verificação por Bit de Paridade Um problema grave na transmissão de dados digitais é a possibilidade de contaminação da informação por ruídos, provocando o aparecimento de erros na mensagem transmitida. Os sistemas precisam ter meios de detectar a ocorrência desses erros. A maneira mais simples de fazer isso é acrescentando-se um bit extra, chamado de bit de paridade, ao conjunto de bits de dados transmitido. O bit de paridade é determinado em função dos bits iguais a ‘1’ da palavra de informação a ser transmitida, de tal modo que o número total de bits ‘1’, incluindo o próprio bit de paridade, torne-se par (paridade par) ou ímpar (paridade ímpar).

Desse modo, quando a palavra que foi transmitida chega no receptor, ela é testada para verificar-se se o seu número total de bits ‘1’ é par ou ímpar, de acordo com a paridade que tiver sido adotada (par ou ímpar) e, em caso de discordância, o receptor solicitará uma retransmissão da palavra. O gerador de paridade da figura 4.17 é um circuito combinacional que recebe uma palavra de entrada D com n bits de largura e produz uma saída P = f(D). Em geral, é adotada a paridade par nos sistemas de transmissão de dados. Portanto, se o número de bits ‘1’ na palavra D for par, P será igual a ‘0’; e se o número de bits ‘1’ em D for ímpar, P será igual a ‘1’. Assim, o número de bits ‘1’ na palavra total (D + P) é sempre par. A paridade ímpar, por outro lado, só transmite palavras com número ímpar de ‘1’s. Existem portas seriais que podem ser programadas para paridade par ou ímpar, e sistemas de computação que trabalham com palavras de 9 bits, sendo um bit de paridade. Quando o computador acusa um erro de paridade, foi porque o resultado de uma operação violou a verificação dessa paridade.

Figura 4.17 – Símbolo em bloco de um gerador de bit de paridade.

Para projetar um gerador de paridade par para palavras D de 4 bits (D = D3D2D1D0), preenche-se o mapa de Karnaugh de P para quatro variáveis e tira-se a expressão de P.

D3 D2D1 D0

00

01

11

10

00 0 1 0 1 01 1 0 1 0 11 0 1 0 1 10 1 0 1 0

P = 3D 2D 1D D0 + 3D 2D D1 0D + 3D D2 1D 0D + 3D D2D1D0 + D3 2D 1D 0D +

+ D3 2D D1D0 + D3D2 1D D0 + D3D2D1 0D

Gerador de

Paridade

D0

D1 ... Dn-1

P

Page 20: circuitos logicos

UFPA / ITEC / FEE Eletrônica Digital

56

A partir dessa expressão, pode-se montar o circuito gerador de paridade com portas AND, OR e NOT. Porém, manipulando-se a expressão de P, obtém-se uma implementação alternativa do gerador de paridade só com portas XOR, que pode ser mais simples. É o circuito da figura 4.18.

P = D3 ⊕ D2 ⊕ D1 ⊕ D0

Figura 4.18 – Esquemático ao nível de portas lógicas do gerador de bit de paridade.

Isso significa que uma porta XOR produz ‘1’ na sua saída sempre que a sua palavra de entrada, com qualquer número de bits, tiver um número ímpar de ‘1’s. Generalizando, a porta XOR reconhece um número ímpar de ‘1’s nas suas entradas. Na transmissão dos dados, o bit de paridade P é enviado junto com a palavra de dados, apesar de representar uma informação distinta e que deve ser tratada separadamente, para a verificação de erros. A palavra com paridade transmitida a seguir contém a informação útil nos bits Di:

Quando a palavra completa chega ao receptor, este deve saber qual é o bit que contém a paridade, se o primeiro ou o último. Como foi usada a paridade par na transmissão, todas as 16 palavras D3D2D1D0P possíveis devem ter um número par de bits ‘1’, pois nas palavras de dado em que o número de bits ‘1’ era ímpar, a inserção de P = ‘1’ fez a quantidade total de ‘1’s tornar-se um número par.

Os cinco bits D3D2D1D0P são recebidos pelo receptor de paridade, que deve ter (n+1) entradas e 1 saída C. Convenciona-se, por exemplo: C = ‘0’ transmissão OK C = ‘1’ erro na transmissão Então a saída C deve ser ‘0’ quando houver um número par de ‘1’s na entrada do receptor. Portanto, o circuito receptor deve ser um circuito XOR de 5 entradas, que irá fornecer ‘1’ na saída se houver um número ímpar de ‘1’s na palavra recebida.

C = D3 ⊕ D2 ⊕ D1 ⊕ D0 ⊕ P

Figura 4.19 – Receptor do bit de paridade.

Page 21: circuitos logicos

ELETRÔNICA DIGITAL Prof. Daniel Cardoso

57

O circuito completo de transmissão de dados com verificação do bit de paridade é mostrado na figura 4.20:

Figura 4.20 – Comunicação de dados utilizando o bit de paridade par.

4.8. Modularidade

Os circuitos digitais são essencialmente modulares, isto é, blocos complexos podem ser formados pela interconexão de blocos mais simples, e estes pela interconexão de blocos ainda mais simples, e assim por diante, levando a uma hierarquia estrutural (arquitetural). No nível mais baixo dessa hierarquia estão os transistores que formam as portas lógicas. Como concatenar circuitos simples para obter circuitos de maior capacidade? De modo geral, seguem-se as etapas abaixo:

1) Desenhar os símbolos (interfaces) do circuito-alvo (o que se pretende construir) e

dos blocos de circuito mais simples (subcircuitos) de que se dispõe. 2) Deduzir quantos subcircuitos são necessários para compor o circuito mais

complexo, e colocá-los dentro da “caixa” de interface do circuito-alvo. 3) Escrever a tabela-verdade do circuito-alvo e relacionar suas entradas e saídas com

as entradas e saídas dos subcircuitos, para deduzir as relações lógicas entre os sinais de E/S do circuito-alvo e os sinais de E/S dos subcircuitos.

Como ilustração, multiplexadores de maior capacidade (16x1, por exemplo)

podem ser facilmente montados a partir de blocos mux de menor capacidade, empregando-se a modularidade. A figura 4.21 mostra um bloco multiplex de 8 canais, formado a partir de blocos mux de menor capacidade (esta é uma das soluções possíveis).

Page 22: circuitos logicos

UFPA / ITEC / FEE Eletrônica Digital

58

Figura 4.21 - Mux de oito canais construído com dois blocos mux de quatro canais e

um mux de dois canais.

Page 23: circuitos logicos

ELETRÔNICA DIGITAL Prof. Daniel Cardoso

59

CAPÍTULO 5

Aritmética Binária e Circuitos Aritméticos

Este capítulo trata das operações aritméticas com numerais binários e do projeto de alguns circuitos aritméticos simples. Esta classe de circuitos, que também são combinacionais, é utilizada principalmente nas unidades lógicas e aritméticas (ULA's) dos microprocessadores. 5.1. Adição A tabuada da adição é a seguinte:

0 + 0 = 0 0 + 1 = 1 1 + 0 = 1

1 + 1 = 10

No último caso, diz-se que o resultado da soma é '0' e “vai um” para a casa da esquerda; este ‘1’ que vai é chamado de “transporte de saída” (carry out). A adição de numerais binários de n bits é feita pelo mesmo processo da adição em decimal. Por exemplo:

Binários inteiros: Binários fracionários: 5.1.1. Meio Somador (Half Adder)

É o circuito que soma dois bits e fornece o resultado e o transporte de saída.

A B Soma S

Transporte de Saída (Ts)ou Carry-out (Cout)

0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1

Tabela 5.1 - Tabela-verdade e funções lógicas da soma de dois bits.

10110 + 11100 110010

110,1 + 10,11 1001,01

S = A⊕B Ts = A.B

Page 24: circuitos logicos

UFPA / ITEC / FEE Eletrônica Digital

60

Figura 5.1 – Esquemático e símbolo do meio somador.

5.1.2. Somador Completo (Full Adder)

A soma de dois numerais binários de mais de um bit pode ser feita de forma modular: em vez de se projetar um único circuito que some dois numerais com n bits, projeta-se um circuito que some três bits, pois é preciso considerar também o transporte de entrada Te (ou carry-in, Cin), que é o "vem um" da coluna da direita. Um somador de n bits pode ser feito concatenando-se esses blocos, chamados de somadores completos.

A B Te S Ts 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1

Tabela 5.2 - Tabela-verdade e funções lógicas para a soma de três bits, um de A, outro de B, e o outro da coluna anterior, Te.

Figura 5.2 – Esquemático do circuito e símbolo do somador completo.

Explorando-se a modularidade dos blocos digitais, o somador completo pode ser esquematizado a partir de dois meio-somadores, como na figura 5.3.

S = A ⊕ B ⊕ Te Ts = AB + Te(A ⊕ B) = AB + Te(A + B) = AB + ATe + BTe

Page 25: circuitos logicos

ELETRÔNICA DIGITAL Prof. Daniel Cardoso

61

Figura 5.3 – Somador completo construído a partir de dois meio-somadores.

O somador completo das figuras 5.2 e 5.3 foi esquematizado utilizando a quantidade mínima de portas lógicas, isto é, priorizando a máxima compactação do circuito (mínima área). Entretanto, o circuito resultante possui três níveis de portas. Se ele fosse esquematizado a partir da equação Ts = AB + ATe + BTe, teria uma porta a mais, mas somente dois níveis, sendo portanto mais rápido. É o sacrifício da compactação, com uma área maior do circuito, em favor de um pouco mais de velocidade (menor tempo de resposta).

5.1.3. Somador Paralelo de 4 Bits

Dados dois numerais binários A e B de n bits e sem sinal, a soma S = A+B pode ter até n+1 bits.

A = An-1 An-2 ... A1 A0 B = Bn-1 Bn-2 ... B1 B0 S = Sn Sn-1 ... S1 S0

O somador de arquitetura mais simples para numerais de n bits utiliza n

somadores completos, um para cada par de bits das palavras A e B. Por exemplo, seja n = 4:

A = A3 A2 A1 A0 B = B3 B2 B1 B0

O transporte de saída gerado por um bloco somador completo será o transporte de entrada do bloco somador seguinte. Pelo fato de as palavras A e B entrarem no circuito em paralelo (todos os bits juntos), este somador é chamado de somador paralelo, e seu esquemático é mostrado na figura 5.4.

Figura 5.4 – Somador paralelo de 4 bits.

Page 26: circuitos logicos

UFPA / ITEC / FEE Eletrônica Digital

62

O somador dos LSB's, A0 e B0, poderia ser um meio-somador, que não possui a entrada Te e é menor que o somador completo. Porém, isto impediria que esse somador de 4 bits pudesse ser utilizado como bloco para a composição de um somador maior (de 8 ou mais bits), e ele perderia sua generalidade (modularidade). O bit S4, transporte de saída do somador dos MSB's na figura 5.4, pertencerá ao resultado se as parcelas da soma, A e B, forem numerais sem sinal (valores absolutos). Numerais com sinal são analisados adiante. 5.2. Subtração e Representação de Números Binários com Sinal A tabuada da subtração de dois bits é a seguinte:

0 - 0 = 0 0 - 1 = 1 e empresta 1 da coluna da esquerda 1 - 0 = 1 1 - 1 = 0

Por ser diferente da adição, a subtração deveria exigir, em princípio, um circuito específico para ser realizada (um subtrator completo). Mas se houver um jeito de representar números negativos em binário, a subtração transforma-se em uma simples adição, pois:

A – B = A + (– B)

Portanto, o problema deixa de ser o projeto de um circuito subtrator e passa a ser a representação de números binários negativos. Tendo em vista que as máquinas digitais não trabalham com símbolos como + e - (positivo e negativo), torna-se necessário o uso de algum método para a representação desses sinais, que permita indicar se o número é positivo ou negativo. Existem três maneiras de se fazer esta representação.

Inicialmente, foi usada a chamada “representação em sinal e módulo” para

representar números binários com sinal. Neste tipo de representação, o MSB era o bit de sinal (MSB=0, se o número era positivo, e MSB=1 se o número era negativo), e o resto da palavra era sempre o próprio valor absoluto do número. representa o sinal do número (0 = positivo, 1 = negativo), enquanto os dígitos restantes representam o seu valor absoluto (módulo). Por exemplo, no número 110012, que é a representação de -910, o dígito mais significativo ("1") indica o sinal negativo, enquanto os demais representam o valor absoluto (910). No número 010012 que é a representação de +910, o dígito mais significativo ("0") indica o sinal positivo. É importante notar que com este tipo de representação, um registrador de 4 bits pode armazenar os números entre -7 a +7, existindo para o número 0 duas representações (+0 e -0).

Por exemplo:

+310 = 00112 -310 = 10112

Page 27: circuitos logicos

ELETRÔNICA DIGITAL Prof. Daniel Cardoso

63

Essa representação antiga levou a circuitos aritméticos complicados, por não ser compatível com a subtração, e foi abandonada. Depois, os engenheiros descobriram que a representação de números binários negativos na notação de complemento de dois era a técnica correta para tornar a subtração realizável através de uma adição, em todos os casos de minuendo e subtraendo. Assim, o mesmo bloco de circuito usado para somar poderia ser usado também para subtrair, simplificando a implementação dos circuitos aritméticos. Por isso, atualmente utiliza-se sempre a notação de complemento de 2 para a realização da soma e subtração binárias.

O negativo de um numeral binário B, de n bits, é o seu complemento de 2:

– B = C2 (B) definido como

C2 (B) = (2n)2 – B ou C2 (B) = B + 1 = C1 (B) + 1

B é o inverso lógico de cada bit de B, chamado de “complemento de 1” de B ou C1 (B).

Quando se representa numerais binários com sinal usando a notação de complemento de 2, o MSB continua sendo usado para representar o sinal do número, sendo por isso chamado de “bit de sinal”. Os numerais positivos têm o MSB igual a ‘0’, e os numerais negativos têm o MSB igual a ‘1’. Acrescentar “zeros” à esquerda de um numeral positivo e acrescentar “uns” à esquerda de um numeral negativo não altera os valores desses numerais.

Calcular o complemento de 2 de um numeral binário B tem o mesmo efeito que

inverter o sinal do numeral decimal equivalente. A tabela 5.3 mostra os numerais binários com sinal, em quatro bits. Bin 1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111Dec -8 -7 -6 -5 -4 -3 -2 -1 0 +1 +2 +3 +4 +5 +6 +7

Tabela 5.3 – Numerais binários de quatro bits com sinal

Para encontrar o C2 (B), não é necessário encontrar primeiro o C1(B) e depois somar 1 a ele. Há uma outra regra prática para a obtenção do complemento de 2: a partir do LSB, mantenha todos os bits até o primeiro ‘1’ que encontrar, e mantenha também este ‘1’; em seguida, inverta os bits restantes para a esquerda. Isso pode ser facilmente conferido pela tabela 5.3. Por exemplo:

C2 (01010100) = 10101100

Pela tabela 5.3, observa-se que, para representar uma faixa de numerais binários com sinal (signed), é preciso acrescentar um bit a mais do que seria necessário para escrever somente os valores em módulo (unsigned). Esse bit extra representa justamente o sinal dos numerais binários. Assim, dados os numerais sem sinal de 3 bits, se desejarmos escrever os numerais negativos correspondentes, devemos acrescentar a eles mais um bit para o sinal. O acréscimo de um bit a uma palavra binária dobra a quantidade de valores representáveis.

Há um número negativo a mais do que os números positivos: –810. Isso é efeito

do 010, que não é positivo mas tem o MSB igual a '0'. O –810 não tem equivalente positivo em quatro bits: o +810 só cabe em 5 bits, pois o MSB tem que ser '0'. Para

Page 28: circuitos logicos

UFPA / ITEC / FEE Eletrônica Digital

64

generalizar, dispondo-se de n bits, os valores dos números com sinal podem ir de –2n-1 até +2n-1 – 1, incluindo o '0'.

Para a realização de operações aritméticas envolvendo números com sinal, tanto os números positivos quanto os negativos precisarão estar sempre na notação de complemento de 2. Os numerais positivos não diferem de sua representação binária em módulo, apenas com a obrigatoriedade do '0' no MSB: a representação do +310 é 0112. O valor absoluto (módulo) de um numeral binário negativo B não é prontamente identificável: para encontrá-lo, deve-se calcular de novo o complemento de 2 desse numeral, pois C2 [C2 (B)] = B. Por exemplo, a representação do –310 em binário é 11012 ou 1012.

Nas operações aritméticas empregando a notação de complemento de 2, é obrigatório igualar os tamanhos das palavras antes de fazer a operação; senão, o resultado estará errado. O MSB sempre representa o sinal do número, nunca o valor. Se, nas parcelas, o bit de sinal é o quarto bit, então o bit de sinal do resultado também tem que ser o quarto. Por isso, o bit do resultado que excede o tamanho das parcelas nunca é considerado, nem na soma, nem na subtração (ver Exemplo 1 a seguir). Por outro lado, na adição de números sem sinal (absolutos), o ‘1’ excedente do tamanho das parcelas não pode ser desprezado, pois ele faz parte do resultado correto.

Agora passa-se à análise da soma e da subtração de numerais binários com sinal, empregando a notação de complemento de 2. Exemplo 1: Calcular A – B nos casos abaixo, usando complemento de 2. 1) A > B. Se for gerado um transporte do bit de sinal para o 5o bit, ele deve ser desconsiderado. 1.1) A = 610 (01102) e B = 310 (00112). Resposta: 100112 00112 = +310 1.2) A = 310 (00112) e B = -310 (11012). Resposta: 01102 = +610 2) A = B. O bit de transporte de saída será sempre igual a 1, pela própria definição de complemento de 2. Obviamente, não é considerado. 2.1) A = 310 e B = 310 (00112). Resposta: 100002 00002 = 010 2.2) A = -310 e B = -310 (11012). Resposta: 100002 00002 = 010 3) A < B. 3.1) A = 310 (00112) e B = 610 (01102). Resposta: 11012 = -310 3.2) A = -310 (11012) e B = 310 (00112). Resposta: 10102 = -610 A adição e a subtração em hexadecimal podem ser feitas de maneira semelhante à adição e subtração decimais.

Page 29: circuitos logicos

ELETRÔNICA DIGITAL Prof. Daniel Cardoso

65

5.2.1. Subtrator Paralelo de 4 Bits

Para subtrair um numeral B de outro numeral A, ambos de n bits, basta somar A ao complemento de 2 de B. Isso significa inverter cada bit do numeral B e depois somar-lhe 1. Portanto, para montar-se um subtrator de n bits, adapta-se um somador paralelo de n bits, como o da figura 5.4, não havendo necessidade de se projetar um novo circuito específico para subtrair.

A – B = A + (-B) = (A + B ) + 1

Por exemplo, a figura 5.5 mostra um subtrator de 4 bits. Como tanto A quanto B

são numerais de 4 bits com sinal (em complemento de 2), a faixa de valores possíveis de A e B é aquela mostrada na tabela 5.3. O bit de transporte final, Ts, não pertence ao resultado, como visto pelos exemplos acima. Mas o circuito gerador de Ts não pode ser eliminado, porque sem ele a modularidade do circuito seria destruída.

Figura 5.5 – Subtrator paralelo de 4 bits.

5.2.2. Somador/Subtrator Paralelo de 4 Bits

Para um mesmo circuito desempenhar as duas funções, ora a de somador, ora a de subtrator, deve haver uma entrada de controle SUB tal que, se SUB=0, o circuito efetua a soma dos números de entrada e, se SUB=1, o circuito efetua a subtração desses números.

Para esquematizar-se um somador/subtrator paralelo de n bits, deve-se procurar combinar os circuitos do somador e do subtrator de n bits. Nesse sentido, nota-se que para o funcionamento como somador, a palavra B deve passar normalmente para os blocos somadores, e para o funcionamento como subtrator, os bits da palavra B devem passar invertidos para esses mesmos blocos. Então, pode-se aproveitar a propriedade da porta XOR de funcionar como um inversor controlado: se uma das suas entradas é ‘0’, a outra entrada aparece na saída (B⊕ 0 = B); e se uma das suas entradas é ‘1’, a outra entrada aparece invertida na saída (B⊕ 1 = B ). Por isso, a porta XOR deve ser empregada para compor o circuito somador/subtrator.

A figura 5.6 mostra o esquema do somador/subtrator paralelo para n = 4 bits. Na célula do LSB, Te deve ser ligado a SUB. Assim, se SUB = 1, não só as portas XOR

Page 30: circuitos logicos

UFPA / ITEC / FEE Eletrônica Digital

66

passarão a atuar como inversores de B, como também será acrescentado 1 a esse valor, formando o C2(B) e fazendo com que o circuito opere de fato como um subtrator.

Figura 5.6 – Somador/subtrator paralelo de 4 bits.

A notação de complemento de 2 para números binários com sinal tem que ser observada em todas as operações aritméticas. Isso significa que deve-se trabalhar com um tamanho de palavra sempre constante, logo o transporte final do somador/subtrator, S4, não faz parte do resultado nem da soma, nem da subtração. Somente pode-se utilizar S4 como parte do resultado para a soma de valores sem sinal, como explicado na seção 5.1.3.

Se A e B estão em 4 bits, o resultado também tem que estar em 4 bits, S3 a S0. Então o resultado da soma ou subtração estará errado quando sair da faixa mostrada na tabela 5.3, mas não há como prever isso porque depende dos valores de entrada A e B. O que se pode fazer é reservar o segundo bit à esquerda para acomodar o possível estouro no valor do numeral, dessa forma confinando o resultado a ficar sempre dentro da tabela 5.3.

Portanto, para se garantir que os resultados das somas e das subtrações estejam sempre corretos, deve-se considerar o 1o bit (MSB) como o de sinal, e o 2o bit deve ser ‘0’ nas parcelas para acomodar o possível estouro no resultado. Com isso, em um somador paralelo de 4 bits, pode-se somar com segurança valores de até 2 bits apenas; perde-se 50% do circuito, com o bit de sinal e o de reserva para o estouro. Já em um somador paralelo de 8 bits, perde-se somente 25% do circuito.