UNIVERSIDADE FEDERAL DO RIO GRANDE DO NORTE
CENTRO DE TECNOLOGIA
DEPARTAMENTO DE ENGENHARIA ELÉTRICA
12 - Projeto e implementação de uma Unidade Lógica Aritmética
DISCIPLINA: ELE 426 - Laboratório de Circuitos Lógicos Combinacionais  
PROFESSORES: Fernando José O. de Amorim / Pablo Javier Alsina  
ALUNO:   Data: ____/____/____

Material necessário:

1 - Introdução:

Uma Unidade Lógica Aritmética (ULA) é um circuito lógico combinacional que tem por entradas duas palavras A e B de n bits cada e por saída uma palavra S = f(A, B), também de n bits, que é uma função lógica ou aritmética das palavras de entrada. Através de uma entrada de seleção de função F (palavra de m bits) a função lógica ou aritmética a ser executada pela ULA é selecionada dentro de um conjunto de 2m possíveis funções que a mesma implementa.

2 - Procedimento Experimental:

Projete uma ULA que possua como entradas duas palavras A e B de 4 bits cada e por saída uma palavra S = f(A, B), também de 4 bits. A ULA deve implementar as quatro seguintes funções lógicas e aritméticas:

    A função lógica ou aritmética da ULA deve ser selecionada através de uma palavra de seleção, F, de dois bits.
    Entradas: A, B, F (através de dip-switches).
    Saídas: S (através de leds e display de sete segmentos), bit de overflow (na adição e na subtração - através de led).

3 - Exemplos:

  1. Somador e subtrator separados:


    O módulo de subtração é implementado através da soma de A com o complemento de dois de B. Isto pode ser obtido com um CI 7483 (somador completo de 4 bits), com entradas A, not B e fixando em 1 o bit C0 (entrada de vem-um do bit menos significativo da soma).
    Uma instrução de baixo nível para esta ULA poderia ser codificada por três campos: código de operação F (2 bits), operando A (4 bits) e operando B (4 bits).

    FAB

    Os códigos de operação para soma, subtração, AND e NOT podem ser escolhidos arbitrariamente dentre as quatro possibilidades: 00, 01, 10, 11.
  2. Somador e subtrator compartilhado:


    Neste caso, o Módulo Inversor Controlado é um circuito lógico combinacional que tem por entrada a palavra B (4 bits) e por saída uma palavra de quatro bits igual a B ou NOT B, de acordo com uma linha de controle F0 (correspondente ao bit menos significativo do código de operação), de tal modo que se F0 = 0, a saída é B, se F0 = 1, a saída é NOT B:


    Este módulo pode ser facilmente implementado da seguinte maneira:


    O módulo somador recebe como entradas a palavra A (4 bits), a palavra de 4 bits fornecida pelo inversor controlado (B ou NOT B) e C0 (bit de vem-um menos significativo da soma). C0 deve ser estabelecido igual a F0, de tal modo que quando F0 = 0, no somador entra B (deve ser realizada a adição, então C0 deve ser zero: não há vem-um para o primeiro bit da soma). Quando F0 = 1, no somador entra NOT B (deve ser realizada a subtração, então C0 deve ser um: há vem-um para o primeiro bit da soma). Neste último caso, então, teremos como resultado a soma de A com o complemento de dois de B. A saída do somador é distribuída para duas das entradas do multiplexador: uma correspondendo ao resultado soma e outra correspondendo ao resultado subtração. A seleção de qual destas entradas será passada para a saída depende de qual operação está sendo selecionada pela palavra F (código de operação). Como o bit F0 também define qual é a saída do inversor controlado, as saídas do módulo somador não podem ser colocadas em qualquer entrada arbitrária do MUX, mas apenas naquelas que são selecionáveis por F0. Assim, como F0 = 0 corresponde a uma operação de adição no somador, só as entradas do MUX selecionadas por F = 00 ou F = 10 poderão ser atribuídas à operação de adição. De maneira análoga, como F0 = 1 corresponde a uma operação de subtração no somador, só as entradas do MUX selecionadas por F = 01 ou F = 11 poderão ser atribuídas à operação de subtração. Uma instrução de baixo nível para esta ULA poderia ser codificada por três campos: código de operação F (2 bits), operando A (4 bits) e operando B (4 bits).

    FAB

    Como discutido acima, neste caso, os códigos de operação não podem ser selecionados arbitrariamente, mas devem atender às restrições descritas. Além do mais, a seleção da operação de inversão implica que F0 = 1, de tal modo que para selecionar a operação NOT B devemos impor F = 01 ou F = 11. Assim, uma possível escolha para os códigos de operação poderia ser:

    F = 00AND
    F = 01NOT
    F = 10Soma
    F = 11Subtração

    Neste caso, escolhemos F1 = 0 para caracterizar operações lógicas (AND ou NOT) e F1 = 1 para caracterizar operações aritméticas (Adição ou subtração).