Soma e Multiplicação
- Implemente um circuito que represente um valor inteiro de tamanho 3 bits (SWI[2:0]) em base decimal no display de sete segmentos. No lugar do sinal "-" use o ponto (SEG[7]). (presencial: 2 pontos de nota) (remoto: até 12 centavos)
- Implemente um somador para dois valores inteiros de 3 bits (SWI[7:5) e SWI[2:0]) e visualize o resultado de 3 bits em LED[2:0]. Visualize o resultado também em base decimal no display de sete segmentos. (presencial: 2 pontos de nota) (remoto: até 12 centavos)
- Indique a ocorrência de overflow ou underflow para valores inteiros no LED[7]. No caso de overflow ou underflow não importa o que estiver no display de sete segmentos. (presencial: 3 pontos de nota) (remoto: até 12 centavos)
- Implemente a operação de subtração para o caso a chave SWI[3]=F[0] estiver em '1'. Com a chave SWI[3] em '0' o somador continua funcionando. (presencial: 1 ponto de nota) (remoto: até 12 centavos)
- Implemente a operação de multiplicação para o caso a chave SWI[4]=F[1] estiver em '1'. Neste caso o display de sete segmentos não importa e pode ser ignorado. (presencial: 2 pontos de nota) (remoto: até 12 centavos)

F[1:0] | Função | Resultado | conjunto da operação |
00 | A + B | 3 bits | |
01 | A - B | 3 bits | |
10 | A * B | 6 bits | números naturais incluindo zero |
11 | A * B | 6 bits | números inteiros |
Entrada
Chaves de Execução:
1 - Dois valores A e B com tamanho de 3 bits são os operadores. O aluno precisa mostrar cada operação funcionando, tanto com números naturais incluindo zero, como com números inteiros. Em computação, números inteiros são representados usando complemento de 2.
2 - Um vetor F[1:0] de 2 bits representa o seletor da Operações da ULA segundo a tabela.
Saída
1 - O resultado da operação aritmética deve ser mostrada nos LED.
Dica: Em Systemverilog, logic
define números naturais incluindo zero. Para declarar números inteiros use logic signed
.
Observação: É verdade que números naturais representam um subconjunto dos números inteiros. Porém, quando neste guia aparecem as palavras "números inteiros", devem ser considerados também números negativos.
Dúvida: No caso das operações de soma e subtração faz diferença se os argumentos e os resultados são inteiros ou números naturais incluindo zero? E para o indicador de overflow ou underflow, faz diferença? (remoto: até 15 centavos para a resposta em comentário dentro do top.sv)
Sobre Python e Systemverilog
Python parece ser uma linguagem que não sabe muita coisa sobre o tipo de uma variável, então o programador precisa ter consciência qual operador ele precisa usar. Systemverilog sabe o tipo de uma variável, o operador olha para sua esquerda, olha para sua direita, e automaticamente faz a coisa certa.