Aula 15: Projetar a ULA para o RISC V 32I

Objetivos


Contextualização

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.

ULA de 1bit com Funções AND e OR
ULA de 1bit com Funções AND e OR

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
Somador Completo de 1bit
Somador Completo de 1bit

O resultado deve ser similar ao mostrado abaixo.

ULA de 1 bit com AND, OR e Somador Completo
ULA de 1 bit com AND, OR e Somador Completo

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.

ULA de 1 bit com AND, OR, Somador Completo, Subtrator e SLT
ULA de 1 bit com AND, OR, Somador Completo, Subtrator e SLT

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:

Para implementar o detector de overflow, considere utilizar um dos dois circuitos abaixo, que considero as formas mais simples.

Overflow
Overflow

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.

ULA de 1 bit com AND, OR, Somador Completo, Subtrator, SLT e Overflow
ULA de 1 bit com AND, OR, Somador Completo, Subtrator, SLT e Overflow

As ligações dos 32 bits da ULA ficam como o mostrado abaixo.

ULA de 32 bits com AND, OR, Somador Completo, Subtrator e SLT
ULA de 32 bits com AND, OR, Somador Completo, Subtrator e SLT

O diagrama final da ULA de 32 bits está mostrado abaixo.

ULA RISCV
ULA RISCV



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:




Esta Atividade deverá ser entregue através do Blackboard!