1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Ajuda] Somador BCD até 198

Discussão em 'Electrónica' iniciada por sthil, 18 de Outubro de 2008. (Respostas: 4; Visualizações: 3051)

  1. 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
     
  2. bsd

    bsd Power Member

    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.
     
  3. e em paint podes faze isso e por aqui que eu depois la no circuito maker la me entendo?..pfv..
     
  4. bsd

    bsd Power Member

    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: 23 de Outubro de 2008
  5. foopo

    foopo Power Member

    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: 13 de Abril de 2009

Partilhar esta Página