[Ajuda] Somador BCD até 198

sthil

Membro
Boas pessoal tudo bem?

Precisava da vossa ajuda..na escola o meu professor pediu-me o seguinte:

"Projecte e implemente um circuito somador BCD até 198"

Tenho que faze-lo em Circuito Macker

Ando as voltas com a cabeça e não sei como faze-lo..será que alguém me pode ajudar? Tenho que entrega-lo ate segunda

Help me

E desculpem se não é o sitio indicado para por isto

Cumpz
 
Ou seja, vais ter de fazer um somador com entradas até dois algarismos (99+99=198). Esse somador vai ser constituído por dois somadores de 1 algarismo.

Cada somador de um algarismo tem 9 linhas de entrada, quatro da parcela A, quatro da parcela B mais um que é o carry (o vai-um).
Da mesma maneira tem 5 linhas de saída, quatro para o algarismo da soma e um para o carry.

Depois podes juntar tantos somadores de um algarismo lado a lado quantos queiras.

Para saber o que cada linha de saída deve dar para cada combinação das 9 linhas de entrada basta fazer os 5 mapas de Carnaugh.

Isto é uma alternativa de resolver o problema. A outra alternativa é fazer cada somador como quatro somadores binários de um bit em cadeia de carry, só que tens de fazer o mapa de Carnaugh para o carry de saída na mesma (porque é diferente da saída de carry do somador do MSB, 10 não é igual a 16).

Como é que metes os ANDs e os ORs nesse programa, circuit maker, isso não sei.
 
Vejamos um somador binário de um bit.

  • Tem três entradas, a parcela A, a parcela B, e o "carry-in" (o vai-um de entrada, vem-um?).
  • Tem duas saídas, a soma A+B, e o "carry-out" (o vai-um de saída).
Primeiro temos de começar por saber o que é que queremos à saída para cada uma das combinações de entrada, fazemos as tabelas de verdade para as duas saídas:

Código:
Ci  A  B  | A+B Co
-----------------
 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
Se tens dúvidas até aqui tens de começar tudo do princípio (representação em binário, somas e subtracções, etc).

Basta olhar para ver que o bit A+B é 1 quando:

  • Ci é 0 e, ou o A é 1 e B é 0, ou o A é 0 e o B é 1
  • Ci é 1 e, ou o A é 0 e o B é 0, ou o A é 1 e o B é 1.
Logo: A+B = ~Ci A ~B + ~Ci ~A B + Ci ~A ~B + Ci A B

Se eu dispuser da operação XOR: A+B = A XOR B XOR Ci

De forma semelhante: Co = A B + Ci A + Ci B

Tendo o somador de um bit, pego em quatro desses somadores para fazer um somador de 4 bits, com o carry out dos menos significativos ligado ao carry in dos mais significativos.

Código:
     A3 B3   A2 B2   A1 B1   A0 B0
      | |     | |     | |     | |
     -----   -----   -----   -----
Cout-|   |---|   |---|   |---|   |--Cin
     -----   -----   -----   -----
       |       |       |       |
      A+B3    A+B2    A+B1    A+B0
       R3       R2      R1      R0
Agora, há duas situações:

  • Ou a soma é inferior a 10 e nesse caso a saída do somador BCD de um algarismo é igual àqueles quatro bits de saída e o Cout é 0.
  • Ou a soma é superior ou igual a 10, e nesse caso, tenho que subtrair 10 àquele resultado. Como é que eu faço isso? Com outro somador binário de quatro bits.
Escusado será dizer que a soma é igual ou superior a 10 se ou o Cout é 1 ou R3 for 1 E R1 OU R2 forem 1, ou seja Cout + R3 (R2 + R1). Chamemos a esta decisão a variável D.

Em esboço:
Código:
  A3 B3 A2 B2 A1 B1 A0 B0  Ci
   | |   | |   | |   | |   |
   ---------------------   |
   |                   |----
   ---------------------
    |     |     |     |
    R3 0  R2 1  R1 1  R0 0
     | |   | |   | |   | |
     ---------------------
     |                   |--0
     ---------------------
      |     |     |     |
      Y3    Y2    Y1    Y0

   Cout = D

~D R3 Y3 D  ~D R3 Y2 D  ~D R1 Y1 D  ~D R0 Y0 D
 | |   | |   | |   | |   | |   | |   | |   | |
 AND   AND   AND   AND   AND   AND   AND   AND
  |     |     |     |     |     |     |     |
  --- ---     --- ---     --- ---     --- ---
    | |         | |         | |         | |
    OR          OR          OR          OR
     |           |           |           |
    Z3          Z2          Z1          Z0
Subtrair 10 (dez) ao resultado, é o mesmo que adicionar -10, se eu representar -10 em complemento para dois fica 0110.

As saídas do somador BCD de um algarísmo são o Z3, Z2, Z1, Z0 e Cout, que é o vai-um.

Para a resposta final ao teu exercício basta juntar dois destes lado a lado.


PS: Isto é o problema de vos porem primeiro um programa (circuit maker) na frente em vez de aprender como se faz no papel.

A vossa geração fica com a impressão de que há um programa para tudo, se eu quiser fazer X, então basta instalar e usar o programa Y. E a culpa não é vossa... Neste fórum, vemos perguntas como "Que programa utilizar para programar?"........

É perfeitamente possível desenhar um microprocessador pequeno só em papel.

Nenhum programa substitui o saber fazer. Os programas só servem para ajudar, tornar menos cansativo o nosso trabalho (evitar a borracha, os fios que ficam emaranhados, meter uma escala).
 
Última edição:
boas, eu tenho para fazer um semelhante:
somar dois números em bcd (8 bits no total). O problema é que o prof pede para fazer correcção quando o resultado excede ou é igual a 10 (somando 0110 -6).
será que alguem me pode ajudar? ficaria agradecido!
ah! uso o ise da xilinx para a construção.
Atenção que essa correcção é apenas uma indicação, ou seja devera indicar se é necessario ou não corrigir o resultado
 
Última edição:
Back
Topo