RISC SoftCore é uma implementação em VHDL com fins diádicos do conjunto de instruções RISCV RV32IM. Essa versão particular não implementa um pipeline. A ideia é criar um microcontrolador com periféricos comuns como I2C, USART, SPI e GPIOs inicialmente utilizado para disciplina de Dispositivos Lógicos Programáveis.
Ferramentas de programação podem ser obtidas no Compliler.
Animação do funcionamento da arquitetura em Virgularor: minimum RISC-V
Simulador assembly baseado no MARS: RARS
-
Simulação:
- Execute o script script testbench.do no Modelsim (Altera Edition).
- Testbench principal: testbench.vhd. Simula o núcleo, um timer e pinos de propósito geral (gpio e display de 7 segmentos).
- Verifique se o arquivo de programa está apontado corretamente (i.e.: ./software/quartus_blink.hex) no módulo iram_quartus.vhdl.
- Veja esse diagrama completo do testbench
-
Síntese: Quartus 19.1 ou superior (testado no Kit de desenvolvimento DE10-Lite)
- Abra o projeto genérico em ./peripherals/gpio/sint/de10_lite/
- Para gravação do programa pós síntese:
- Menu principal do Quartus: Tools -> In-System Memory Editor
A compilação de programas necessita do toolchain riscv-none-elf (ou riscv-none-embed) suportando o subconjunto RV32IM, sem ABI. Em ./software/ há vários exemplos. Perceba que na fase atual do projeto utilizamos um script de linker customizado (sections.ld). libc ainda não foi testado/suportado.
Veja mais detalhes para a instalação compilador aqui