• Nenhum resultado encontrado

aula 12 - circuitos aritméticos

N/A
N/A
Protected

Academic year: 2021

Share "aula 12 - circuitos aritméticos"

Copied!
10
0
0

Texto

(1)

Circuitos Aritméticos

As operações aritméticas são a base de um processamento computacional, e por isso, essa operação deve ser implementada a partir de circuitos lógicos.

Em um microprocessador, a operação de soma é realizada pela Unidade Lógica e Aritmética (ULA). Essa unidade faz essa operação a partir de operandos (palavras binárias) armazenados em registradores internos do processador.

Somador binário paralelo

A figura abaixo ilustra o processo de soma de duas palavras binárias de 5 bits cada, implementando o algoritmo de soma convencional. As parcelas a serem somadas estão armazenadas em dois registradores, aqui chamados de registrador acumulador e registrador B.

A operação é realizada bit a bit, do menos ao mais significativo. Ao analisarmos essa operação para cada bit, percebe-se que para cada um desses bits, faz-se a soma dos algarismos correspondentes de cada um dos registradores e o bit de carry, como resultado tem-se o resultado da soma e o valor do bit de carry para o bit mais significativo seguinte.

Assim, pode-se dividir a operação de soma das duas palavras de 5 bits em cinco módulos de soma de um bit contendo as parcelas e resultados citados. Essa unidade de soma para cada bit é chamada de somador completo (full adder, em inglês).

(2)

Logicamente que pode-se criar um único circuito somador completo para todos os bits, basta inserir sempre o valor 0 no bit de carry de entrada C0, e desprezar o valor do bit de carry C5. Dependendo

da representação (com ou sem sinal) do número, o bit de carry C5 pode ser usado para detectar um

overflow.

A configuração acima, onde todos os somadores completo realizam a operação de soma simultaneamente é chamado de somador paralelo.

Somador completo

Pelo exposto acima, podemos projetar um circuito combinacional que implementa um somador completo. Sabemos que o circuito terá 3 entradas, os bits das parcelas A e B, e o bit de carry do bit menos significativo vizinho Cin, e também terá duas saídas, o resultado da soma S e o bit de carry

para o bit mais significativo vizinho Cout.

(3)

A partir da tabela acima, podemos construir a expressão que implementa a saída S: S= ¯A ¯B Ci+ ¯A B ¯Ci+A ¯B ¯Ci+A B Ci

Colocando a variável A em evidência em todas as parcelas:

S= ¯A (¯B Ci+B ¯Ci)+A (¯B ¯Ci+B Ci)

O termo dentro dos primeiros parênteses é a operação XOR das variáveis B e Cin, enquanto que o

termo dentro do segundo é a operação XNOR das mesmas variáveis. A expressão então fica: S= ¯A (B⊕Ci)+A(B⊕Ci)

Se imaginarmos as operações XOR acima como uma variável qualquer, podemos reescrevê-la na forma:

S= ¯A X+ A ¯X

Que mais uma vez é uma operação XOR. A expressão inicial da variável S pode, portanto, ser representada como:

S= A⊕(B⊕Ci)

O mesmo procedimento pode ser realizado para a saída Cout, que pela tabela verdade terá a

expressão:

(4)

Nesse caso, podemos aplicar o mapa de Karnaugh para simplificar a expressão, visto que tem-se somente 3 variáveis.

Cout=BCi+A Ci+A B

O circuito lógico combinacional que implementa um FA, portanto, será:

Somador paralelo com registradores

Como dito anteriormente, as palavras binárias a serem somadas são geralmente carregadas em registradores, formados por flip-flops, que armazenam simultaneamente os valores de cada bit das palavras.

Esses registradores são então conectados ao somador paralelo para efetuar a soma das parcelas. O circuito abaixo ilustra a criação de um somador paralelo de 4 bits conectado a dois registradores.

(5)

Na figura acima, os registradores A e B receberão as parcelas a serem somadas. Nesse exemplo, o registrador B recebe os dados da memória e o registrador A recebe os dados do barramento do processador.

Outro detalhe importante, é que o resultado da soma, no circuito anterior, é armazenado também no registrador A, que por isso recebe o nome de acumulador. Dessa forma, não se faz necessário o uso de um terceiro registrador para o resultado, exigindo apenas dois registradores para efetuar a operação de soma.

O que garante que a saída do registrador acumulador não seja igual a entrada, em outras palavras, que a saída da soma não interfira na operação, é o sincronismo do clock do registrador A. Além disso, são inseridas nos registradores os bits de controle LOAD, CLEAR e TRANSFER, que garantem a correta aplicação do somador.

Para ilustrar o funcionamento do somador paralelo com registradores acima, podemos usar uma notação para facilitar a escrita das diferentes etapas. [A] representa todo o registrador A, ou seja,

(6)

[A] = 1011 sigfinica dizer que o bit A3 = 1, A2 = 0, A1 = 1 e A0 = 1. A transferência de dados

binários de um registrador a outro pode ser representado com uma seta, por exemplo [B] → [A], o que significa que o conteúdo do registrador B foi transferido para o registrador [A].

Considere agora que deseja-se somar as palavras 1001 e 0101 provenientes da memória. A sequência de pulsos abaixo é aplicada a cada uma das entradas de controle do somador, e com isso, temos as seguintes etapas:

1- Um pulso CLEAR é aplicado em [A] no instante t1, fazendo [A] = 0000;

2- No instante t2, a borda de subida em LOAD transfere os dados da memória para o registrador B

([M] → [B]), fazendo [B] = 1001;

3- As entradas do somador, portanto, serão [A] = 0000 e [B] = 1001, gerando a saída [S] = 1001; 4- A saída [S] é a entrada D do registrador [A], assim, no instante t3, a borda de subida de

TRANSFER realiza a transferência [S] → [A], fazendo [A] = 1001;

5- No instante t4, a borda de subida em LOAD transfere os dados da memória para o registrador B

([M] → [B]), fazendo [B] = 0101;

6- Com [A] = 1001 e [B] = 0101, o somador gera a saída [S] = 1110, que fica disponível na entrada de [A];

7- No instante t5, a borda de subida de TRANSFER realiza a transferência [S] → [A], fazendo [A] =

1110, ou seja, a partir desse instante o acumulador armazena o resultado da operação desejada. Em processadores reais, o conteúdo de [A] é geralmente transferido para a memória, tornando o registrador disponível para mais operações.

Um detalhe importante a ser considerado na sequência acima é o intervalo de tempo entre t4 e t5.

Após o instante t3, o valor da primeira parcela já está disponível na saída de [A], e portanto, na

(7)

entrada do somador. Visto que o circuito somador é composto por um circuito combinacional, haverá um atraso de propagação da entrada para saída, o que leva a um intervalo de tempo para gerar tanto o valor do bit de saída quanto o bit de carry.

O bit de saída do LSB estará disponível após esse tempo de propagação, entretanto, somente depois desse intervalo, o bit de carry correto estará disponível como entrada para o segundo bit menos significativo do somador, que também levará um tempo de processamento antes de disponibilizar o valor correto da soma e do carry seguinte. Essa propagação sequencial do bit de carry, do LSB ao MSB, é chamado de propagação do carry, ou ondulação do carry (do inglês carry ripple).

Esse tempo de atraso em cascata causado pela propagação do carry, de um bit do somador para outro, impõe uma condição adicional para o intervalo entre t4 e t5, que deve ser maior que a soma de

todos os tempos de propagação de todo o somador.

Quando consideramos somadores e registradores de 32 bits, por exemplo, a propagação de carry pode chegar a mais de 1 μs, o que é proibitivo para computadores rápidos. Para resolver o problema, pode-se projetar um circuito lógico que identifica se haverá bit de carry para os bits mais significativos, processo esse chamado de carry antecipado (look-ahead carry).

Nesse processo, o bit de carry de entrada de cada FA do somador paralelo não será a saída de carry do bit menos significativo vizinho, e sim a saída do circuito combinacional citado acima, que determinará a necessidade desse valor sem ter que esperar pela propagação dos carrys em todos os bits menos significativos.

Apesar de circuitos somadores serem implementados em unidades internas de microprocessadores, eles estão também disponíveis na forma de circuitos integrados para aplicações genéricas. Os circuitos das famílias 7483 e 74 283 são somadores completos de 4 bits, já incluindo um circuito interno de carry antecipado, para operações mais rápidas.

(8)

Nesse CI, tem-se 9 entradas, 4 para cada palavra a ser somada e o bit de carry C0, que deve ter o

valor 0, quando os 4 bits somados forem os menos significativos. As saídas desse CI são os 4 bits da operação de soma e o bit de carry do bit mais significativo.

Caso sejam somadas duas palavras de 4 bits, coloca-se o valor 0 no bit C0, como citado acima, e o

bit C4, pode ser usado para detectar overflow, dependendo da representação dos números somados.

Colocando-se dois somadores em cascata, implementa-se um somador de palavras de 8 bits, bastando fazer com o bit de carry de saída de um somador seja o bit de carry de entrada do seguinte.

Complemento de 2

A representação de números com sinal em sistema de complemento de 2 permite que a soma entre quaisquer números, positivos ou negativos, seja implementada sem alteração no algoritmo. Assim, caso as parcelas estejam representados em complemento de 2, não será necessária qualquer alteração. O único cuidado a ser tomado é ignorar o bit de carry de saída do MSB.

A implementação da operação de subtração também é possível caso os números sejam representados em complemento de 2, bastando “transformar” uma das parcelas em seu complemento.

(9)

Esse processo é relativamente simples, pois basta pegar os valores invertidos de um dos registradores e somar o valor 1 a ele. Para somar essa unidade no bit menos significativo, basta inserir o valor 1 ao bit de carry de entrada do LSB, como na figura abaixo.

Considerando que os registradores são formados por flip-flops, os valores invertidos de suas saídas já são disponíveis, não sendo necessário qualquer circuito adicional (lembre das saídas Q e ¯Q dos latches).

Em resumo, com um único CI somador, é possível implentar tanto a operação de adição quanto de subtração, bastando um circuito lógico adicional simples. Para incrementar ainda mais a aplicação, pode-se fazer tal circuito na forma de um somador/subtrator paralelo, com um registrador acumulador.

Na figura abaixo é projetado tal circuito, onde um bit de controle adicional é necessário para escolher a operação, ou seja, ADD=S U B . Os valores com e sem inversão de [B] são obtidos pelas saídas do FF, sem a necessidade de circuitos adicionais.

Tais circuitos somadores/subtratores (ULAs) como o ilustrado abaixo já são disponibilizados também em forma de CI, tanto para padrão TTL quanto CMOS, como os da família 74 382 (74LS382 para o padrão TTL e 74HC382 para o padrão CMOS). Nesses CIs, a palavra de controle [S] determina a operação que será realizada.

(10)

Referências

Documentos relacionados

Desta forma, é de grande importância a realização de testes verificando a segurança de extratos vegetais de plantas como Manjerona (Origanum majorana) e Romã

Isto, somado ao gosto que os colaboradores da Biblioteca José Amilar da Silveira têm pela leitura e a vontade de repartir o prazer desse hábito, promove a realização de

A proposta pedagógica da Etnomatemática é fazer da matemática algo vivo, lidando com situações reais no tempo (agora) e no espaço (aqui). Ao fazer isso, mergulha-se nas raízes

A placa EXPRECIUM-II possui duas entradas de linhas telefônicas, uma entrada para uma bateria externa de 12 Volt DC e uma saída paralela para uma impressora escrava da placa, para

No entanto, maiores lucros com publicidade e um crescimento no uso da plataforma em smartphones e tablets não serão suficientes para o mercado se a maior rede social do mundo

The challenges of aging societies and the need to create strong and effective bonds of solidarity between generations lead us to develop an intergenerational

O relatório encontra-se dividido em 4 secções: a introdução, onde são explicitados os objetivos gerais; o corpo de trabalho, que consiste numa descrição sumária das

psicológicos, sociais e ambientais. Assim podemos observar que é de extrema importância a QV e a PS andarem juntas, pois não adianta ter uma meta de promoção de saúde se