Projeto academico de um processador simples baseado na arquitetura RISC-V, desenvolvido no Logisim-evolution.
O circuito foi organizado para demonstrar o ciclo basico de funcionamento de um processador: busca da instrucao na ROM, decodificacao, execucao pela ULA, escrita no banco de registradores e acompanhamento dos principais sinais internos.
riscv-logisim/
├── circuito/
│ └── riscv.circ
├── documentos/
│ ├── funcionamento.pdf
│ ├── funcionamento.md
│ ├── melhorias_realizadas.md
│ └── roteiro_simulacao.md
├── video/
│ ├── roteiro_video_5min.md
│ └── link_video.txt
├── comandos_github.md
├── .gitignore
└── README.md
O arquivo principal do circuito esta em:
circuito/riscv.circ
Abra esse arquivo no Logisim-evolution 4.1.0 ou versao compativel.
O projeto contem os seguintes subcircuitos principais:
datapath: caminho de dados principal do processador;PC: contador de programa;RegisterFile: banco de registradores;ALU: unidade logica e aritmetica;ImmediateGenerator: gerador de imediatos;InstructionDecoder: decodificador de instrucao;ControlLogic: unidade de controle;ALUCtrl: selecao da entrada da ULA;LoadCtrl: controle de dados carregados da memoria;ROM: memoria de programa;RAM: memoria de dados.
As melhorias foram focadas em legibilidade, validacao e apresentacao:
- O circuito principal abre diretamente no
datapath. - Foi adicionado um painel de depuracao no
datapath. - Foram adicionados sinais visuais para acompanhar instrucao, registradores, ULA e sinais de controle.
- O subcircuito
PCtambem recebeu pontos de observacao parainPC,outPC,outPCPlus1,CLKeR.
Essas melhorias facilitam a demonstracao do ciclo de instrucao e tornam a simulacao mais reprodutivel.
- Abra o arquivo
circuito/riscv.circno Logisim-evolution. - Entre no circuito
datapath, caso ele nao abra automaticamente. - Coloque o reset
Rem1por um tick para reiniciar. - Coloque
Rem0. - Execute a simulacao com
Simulate > Tick Onceou habilite os ticks automaticamente. - Acompanhe os sinais no painel de depuracao.
| Sinal | Funcao |
|---|---|
outPC |
endereco da instrucao atual |
outPCPlus1 |
proximo endereco sequencial |
ins |
instrucao atual lida da ROM |
rsi1 |
registrador fonte 1 |
rsi2 |
registrador fonte 2 |
rdi |
registrador destino |
aluOut |
resultado da ULA |
dataD |
dado escrito no banco de registradores |
regWe |
habilitacao de escrita no banco de registradores |
immSel |
selecao do imediato |
wbSel |
selecao do dado de escrita |
lSel |
selecao do tipo de load |
A documentacao do funcionamento esta em:
documentos/funcionamento.md
O roteiro de simulacao esta em:
documentos/roteiro_simulacao.md
https://youtu.be/C6-5L7kxOps