Analisar as intruções e definir as funções da ULA;
Esboçar a ULA para atender a essas instruções;
Criar a ULA em VHDL.
Para entender melhor o funcionamento da ULA, iremos implementá-la, inicialmente, com um único bit. Em seguida, iremos expandi-la para os 32 bits necessários.
Para atender às instruções da implementação básica, temos que verificar as operações que a ULA executará em cada uma das instruções abaixo.
Instruções Aritméticas:
Instruções de Carga:
Instruções de Desvio:
Para alguns casos, pode ser possível utilizar uma operação já implementada.
De posse dessa informação, podemos iniciar a implementação. Para facilitar, começaremos pelas instruções lógicas: AND e OR.
Para padronizar, iremos definir a seleção da operação desejada como:
| MUX | Função |
|---|---|
| 0 | AND |
| 1 | OR |
Como resultado, teremos algo semelhante ao mostrado abaixo.
A próxima etapa é a implementação da soma, utilizando o valor 2 para a seleção do MUX.
| MUX | Função |
|---|---|
| 0 | AND |
| 1 | OR |
| 2 | ADD |
Para a soma, prevendo o uso futuro, é conveniente a utilização do somador completo, ou seja, com os sinais vem 1 e vai 1. Um circuito exemplo está mostrado abaixo.
| A | B | vem_1 | Soma | vai_1 |
|---|---|---|---|---|
| 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 |
O resultado deve ser similar ao mostrado abaixo.
Para implementar o subtrator, podemos fazer o complemento de 2 da entrada B que, junto com a soma de 1 (vindo do carry in ou vem um), faz o valor de B ficar negativo.
Para implementar as operações faltantes, analise cada instrução com a ajuda do green_card e do conteúdo da aula teórica.
Lembre que chegará um momento em que será necessário expandir a ULA para 32 bits. Por exemplo, para fazer o SLT.
No caso do SLT, precisamos considerar o resultado do overflow. Ele ocorre quando o resultado possui sinal inconsistente com os operandos:
Na soma:
Na subtração:
Para implementar o detector de overflow, considere utilizar um dos dois circuitos abaixo, que considero as formas mais simples.
Funcionamento do segundo circuito de overflow:
Assim, a ULA de 1 bit para o bit 31 será diferente dos outros 30 bits, devendo possuir o sinal de Overflow.
As ligações dos 32 bits da ULA ficam como o mostrado abaixo.
O diagrama final da ULA de 32 bits está mostrado abaixo.
Responder o quiz de participação, no blackboard, em:
Conteúdos > Participação > Aula_15_Quiz-P1
Após obter o conhecimento sobre o funcionamento da ULA de 1 bit, devemos fazer:
A implementação em VHDL desse circuito;
O teste de funcionamento a cada etapa implementada.
Esta Atividade deverá ser entregue através do Blackboard!