- Rafael Torres Nantes
- Sarah Merigue Baraldi
Este repositório contém o trabalho desenvolvido para modelar um hardware denominado System on a Chip (SoC). O sistema foi projetado e implementado em VHDL e consiste em diversos subcomponentes, incluindo um processador, duas memórias principais e um codec. O objetivo principal é executar um conjunto de instruções RISC e avaliar a viabilidade do desempenho e a redução do consumo de recursos físicos.
- Processador: Implementa uma arquitetura MISC com instruções simples e opera com dados de 1 byte.
- Memória: Inclui duas memórias principais - IMEM (Memória de Instruções) e DMEM (Memória de Dados).
- Codec: Realiza comunicação de entrada e saída com a CPU.
- SoC: Entidade de mais alto nível que encapsula e conecta todos os componentes.
- src: Código-fonte VHDL dos componentes do SoC.
- Processor: Implementação do processador, incluindo características, funções e instruções.
- Memory: Implementação das memórias IMEM e DMEM.
- Codec: Implementação do codec para comunicação de entrada e saída.
- SoC: Implementação da entidade System on a Chip que conecta todos os componentes.
- testbenches: Scripts de teste para verificar o funcionamento dos componentes.
- docs: Documentação adicional e diagramas.
O processador segue uma arquitetura MISC (Minimal Instruction Set Computer) com:
- Dados de 1 byte
- Suporte a complemento de 2
- Duas memórias principais (IMEM e DMEM)
O processador opera como uma máquina de estados com os seguintes estados:
- Halted: CPU parada sem execução.
- Fetch Instruction: Busca o endereço da próxima instrução.
- Decode Instruction: Decodifica a instrução e carrega os operandos.
- Execute Instruction: Executa a instrução.
- Modify IP: Altera o endereço no registrador IP.
Instruções suportadas:
HLT
,IN
,OUT
,PUSH
,DROP
,DUP
,ADD
,SUB
,NAND
,SLT
,SHL
,SHR
,JEQ
,JMP
- IMEM: Memória de instruções.
- DMEM: Memória de dados.
- Parâmetros: 16 bits para endereço e 8 bits para dado.
Implementada como arquitetura comportamental. Retorna 4 bytes lidos a partir do endereço enviado.
Comunica-se com a CPU através de instruções IN
e OUT
.
- IN: Lê dados e atribui sinais de leitura e escrita.
- OUT: Escreve dados e atribui sinais de leitura e escrita.
Implementado como uma arquitetura de fluxo de dados. Lê do arquivo "input.txt" e escreve no "output.txt".
A entidade SoC é a mais alta na hierarquia e conecta todos os componentes.
- Entradas: Clock e Started.
- Funções Implementadas: Mapeia e conecta Codec, IMEM, DMEM e CPU. Lê o arquivo "firmware.bin".
- VHDL: Linguagem utilizada para modelagem do hardware.
- Simuladores: Utilize um simulador VHDL compatível para testar os componentes e o SoC.
Scripts de teste estão localizados na pasta testbenches
. Execute os testes para verificar o funcionamento dos componentes e a integração do SoC.
- Definição das entradas e saídas do testbench da CPU.
- Conversões de dados (unsigned para signed e tipo natural para std_vector).
- Problemas no testbench da CPU resolvidos com a instrução
wait
.
- Warning no testbench do SoC e incertezas sobre a funcionalidade completa do SoC.
Para detalhes adicionais, consulte os arquivos na pasta docs
, onde estão incluídos diagramas e explicações sobre o projeto.