Skip to content
 
 

Latest commit

 

History

170 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

8-bit CPU + assembler

CPU de 8 bits com ISA própria de 16 instruções, escrita em Verilog, e o assembler correspondente em C++. O assembler traduz .asm para o código de máquina que o processador executa em simulação. Projeto da disciplina de Microprocessadores (UFC), em equipe de quatro.

Diagrama de blocos da CPU

Simulação

cd compiler && make
./compiler ../examples/feature_showcase.asm ../src/file.bin

Depois, simular src/tb/processor_8bit_tb.v em Icarus Verilog, ModelSim ou EDA Playground — o testbench espera o programa montado em src/file.bin.

Arquitetura

Von Neumann: unidade de controle com a máquina de estados de busca–decodificação–execução, e datapath de 8 bits com a ULA, três registradores de uso geral (A, B, C) e registrador de flags.

Classe Instruções
Aritmética ADD SUB MUL DIV MOD INC DEC
Lógica AND OR NOT XOR NAND NOR XNOR
Comparação COMP
Fluxo JMP HALT

O assembler remove comentários (;), valida mnemônico e número de argumentos, e reporta erro de linha para comando desconhecido ou aridade errada.

Notas

  • JMP é incondicional: as flags do COMP ainda não alimentam desvio condicional — é a principal extensão pendente, junto com pilha e CALL/RET.
  • Opcodes de 1 argumento e de 2 argumentos ocupam faixas distintas do byte de instrução (tabela completa em compiler/compiler.cpp).

Estrutura

src/rtl/        alu, datapath, control_unit, data_memory, processor_top
src/tb/         testbench e módulo de debug com sinais internos expostos
compiler/       assembler em C++, com Makefile
examples/       programa de demonstração (.asm e .bin)
docs/images/    diagramas de organização e de blocos

Autores

Alisson Jaime Sales Barros, José Ferreira Lessa, Matheus Rocha Gomes da Silva e Thiago Siqueira de Sousa.

About

An 8-bit CPU with a custom ISA, designed from scratch in Verilog, and its complete assembler toolchain developed in C++.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages