“Projeto e implementação em VHDL para FPGAs de arquitetura para execução de um conjunto reduzido de instruções do MIPS”
UFSC/CTC/PPGEEL, 2015/1
EEL 510231 – Sistemas Digitais e Dispositivos Lógicos Reconfiguráveis
Prof. Eduardo Augusto Bezerra
Projetar e modelar a arquitetura MIPS descrita no Apêndice A do livro do Patterson, considerando o conjunto reduzido de instruções definido a seguir.
Implementar a arquitetura em VHDL visando síntese em FPGAs. Demonstrar o funcionamento da arquitetura por intermédio da execução de um programa nas plataformas de desenvolvimento disponíveis no laboratório.
Conjunto de instruções a ser implementado (ver Appendix A do livro do Patterson):
- Addition (with overflow) – add rd, rs, rt
- Addition immediate (with overflow) – addi rt, rs, imm
- AND – and rd, rs, rt
- AND immediate – andi rt, rs, imm
- NOR – nor rd, rs, rt
- OR – or rd, rs, rt
- OR immediate – ori rd, rs, imm
- Shift left logical – sll rd, rt, shamt
- Shift left logical variable – sllv rd, rt, rs
- Shift right arithmetic – sra rd, rt, shamt
- Shift right arithmetic variable – srav rd, rt, rs
- Shift right logical – srl rd, rt, shamt
- Shift right logical variable – srlv rd, rt, rs
- Subtract (with overflow) – sub rd, rs, rt
- Exclusive OR – xor rd, rs, rt
- Exclusive OR immediate – xori rt, rs, imm
- Set less than – slt rd, rs, rt
- Set less than immediate – slti rd, rs, imm
- Branch on equal – beq rs, rt, label
- Branch on greater than zero – bgtz rs, label
- Branch on less than zero – bltz rs, label
- Branch on not equal – bne rs, rt, label
- Jump – j target
- Load word – lw rt, address
- Store word – sw rt, address
Observações:
- Utilizar como base a arquitetura MIPS multiciclo definida no livro do David A. Patterson e John L. Hennessy, “Computer Organization and Design: The Hardware/Software Interface”.
- Informações sobre o projeto dos blocos de dados e controle, foram discutidas nas aulas da disciplina, com base nos slides 1 a 29 do capítulo 4 do livro do Patterson.
- Definir uma faixa de endereços de memória para mapear, pelo menos, uma porta de entrada e uma porta de saída de 8 bits cada. Essas portas poderão representar, por exemplo, 8 chaves (entrada) e 8 LEDs (saída) do kit de desenvolvimento.
- Desenvolver um programa de teste, e executá-lo na arquitetura projetada. Esse programa de teste deve realizar algum processamento útil, sendo necessário consultar previamente o professor da disciplina sobre a validade do algoritmo selecionado.
- O programa de testes deve ser escrito em assembly, e o código binário para as instruções deverá ser gerado pela ferramenta SPIM (ver pg. A-38 do Appendix A).
- O trabalho pode ser realizado em duplas, porém a avaliação é individual.
- A entrega/apresentação do trabalho deverá ocorrer antes do dia 24 de junho, em data/hora a ser combinada com o professor (ver slots disponíveis no Moodle).
- Preparar uma documentação completa descrevendo a arquitetura do sistema, ferramentas utilizadas, e todos os componentes do VHDL. Descrever também o procedimento necessário para o desenvolvimento de programas para o microprocessador, incluindo detalhes sobre a definição dos conteúdos das memórias de dados e endereços. A documentação é parte fundamental da avaliação, e deverá ser preparada de forma a possibilitar futuras alterações no projeto.