“Projeto e implementação em VHDL para FPGAs de arquitetura com conjunto super-reduzido de instruções”

UFSC/CTC/PPGEEL, 2013/2

EEL 4100 38 – Sistemas Digitais e Dispositivos Lógicos Reconfiguráveis

Prof. Eduardo Augusto Bezerra

Prof. Djones Vinicius Lettnin

 

A CPU de uma determinada arquitetura possui os seguintes componentes:

  • Registrador PC (program counter) – contém o endereço da próxima instrução a ser executada;
  • Registrador IR (instruction register) – contém a instrução de máquina em execução na arquitetura em um determinado instante;
  • Registrador A – armazena resultados intermediários de operações (acumulador);
  • Registrador B – armazena resultados intermediários de operações (auxiliar);
  • Memória de dados;
  • Memória de instruções;
  • Conjunto de instruções de 16 bits listadas na tabela a seguir, onde end representa um endereço de memória de 8 bits ou don’t care para as instruções que não realizam acesso a memória.
A seguir são listadas as instruções da arquitetura:

Tipo: I
Código de máquina: 00000001 end
Instrução: LDA end
Operação: A <= memória[end]
Descrição: Registrador A recebe o conteúdo da posição de memória end

Tipo: I
Código de máquina: 00000010 end
Instrução: STA end
Operação: memória[end] <= A
Descrição: Posição de memória end recebe o conteúdo do registrador A

Tipo: I
Código de máquina: 00000011 end
Instrução: BLT end
Operação: PC <= (A < B ? end : PC + 2)
Descrição: A execução do programa é desviada para o endereço end, se A for menor do que B

Tipo: I
Código de máquina: 00000100 end
Instrução: BEQ end
Operação: PC <= (A == B ? end : PC + 2)
Descrição: A execução do programa é desviada para o endereço end, se A for igual a B

Tipo: J
Código de máquina: 00000101 end
Instrução: JMP end
Operação: PC <= end
Descrição: A execução do programa é desviada incondicionalmente para o endereço end

Tipo: R
Código de máquina: 00010000 end
Instrução: ADD
Operação: A <= A + B
Descrição: Registrador A recebe a soma de A com B (complemento de 2)

Tipo: R
Código de máquina: 00100000 end
Instrução: MUL
Operação: AB <= A * B
Descrição: Multiplicação de A com B, sendo que o registrador A recebe a parte baixa do resultado, e o registrador B a parte alta

Tipo: R
Código de máquina: 00110000 end
Instrução: AND
Operação: A <= A AND B
Descrição: Registrador A recebe o resultado da operação lógica AND de A com B

Tipo: R
Código de máquina: 01000000 end
Instrução: OR
Operação: A <= A OR B
Descrição: Registrador A recebe o resultado da operação lógica OR de A com B

Tipo: R
Código de máquina: 01010000 end
Instrução: NOT
Operação: A <= NOT A
Descrição: Registrador A recebe o conteúdo de A negado

Tipo: R
Código de máquina: 01100000 const
Instrução: LI const
Operação: A <= constante
Descrição: LSB do registrador A recebe o valor constante contido na instrução, e MSB do A recebe 0 (zero)

Tipo: R
Código de máquina: 01110000 end
Instrução: SWP
Operação: A <= B, B <= A
Descrição: O conteúdo do registrador A é copiado para o registrador B, e vice-versa (swap A, B)

Tipo:
Código de máquina: 11111111 end
Instrução: HALT
Operação: Halt
Descrição: Suspende a execução do processador 

Na tabela acima, na coluna “Tipo” são listados os seguintes tipos de instruções:
  • I – instruções do tipo I utilizam um endereço de memória para transferência de dados (STA e LDA) ou para desvio condicional do fluxo de execução do programa (BRN e BRZ)
  • J – instruções do tipo J realizam um desvio incondicional para o endereço especificado na própria instrução
  • R – instruções do tipo R realizam operações com operandos armazenados em registradores (não realizam acesso a memória)

Projetar e modelar a arquitetura em SystemC e, a seguir, implementá-la 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.

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”.
  • 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.
  • A ULA, além do resultado da operação realizada, deverá sinalizar também o resultado das operações de comparação realizadas.
  • 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 os professores da disciplina sobre a validade do algoritmo selecionado.
  • O trabalho é individual.
  • A entrega/apresentação do trabalho será nos dias 05/09 e 06/09 (ou em data anterior a ser combinada entre aluno e professor).
  • 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.
  • A seguir estão incluídos alguns diagramas da arquitetura MIPS a ser utilizada como base para esse trabalho.