RISC SoftCore é uma implementação em VHDL com fins diádicos do conjunto de instruções RISCV RV32I. 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 RISC-V Website.
-
Simulação:
- ModelSim: execução do script testbench.do
- testbench: ./core/testbench.vhd
- Utilizar uma memória SRAM IP (32-bits x 1024 words):
- Quartus RAM: catálogo de IPS, RAM 1-port
- Na aba de confguração Regs/Clken/Byte Enable/AClrs, desabilite 'q' output port e habilite Create byte enable for port A
- Na aba de configuração Mem Init, habilite e configure o arquivo de inicialização da memória de instruções para quartus.hex
- Na aba de configuração Mem Init, habilite Allow In-System Memory Content Editor.
- Se necessário, altere o caminho do arquivo de inicialização de memória (quartus.hex) no arquivo iram_quartus.vhdl
-
Síntese: Quartus 15 ou superior (testado no Kit de desenvolvimento DE10-Lite)
- Projeto: utilize ./sint/de10_lite
- Para gravação do programa pós síntese:
- Utilizar uma memória SRAM IP (32-bits x 1024 words Quartus RAM
- Gravação pelo Tools -> In-System Memory Editor
- Utilize uma PLL para ajuste do clock
A compilação de programas necessita do toolchain riscv32-unknown-elf suportando o subconjunto RV32I. Em ./tests/ há um exemplo bem simples de Makefile. Perceba que na fase atual do projeto utilizamos um script de linker customizado (sections.ld). libc ainda não foi testado/suportado.
Guia para instalação no gnu-mcu-eclipse.github.io
Toolchain Release: riscv-none-gcc Github.
- Atualizar Makefile com o diretório da toolchain.
Exemplo:
RISCV_TOOLS_PREFIX = /home/lucas/ssd2/vhdl/softcore/gnu-mcu-riscv/gnu-mcu-eclipse/riscv-none-gcc/8.2.0-2.2-20190521-0004/bin/riscv32-unknown-elf-
- Para compilar, make.
-
Instalar o WSL: Microsoft Docs
-
Instalar o Ubuntu no WSL
- Para integrar o Visual Code com o compilador interno ao WSL, siga esse link
-
No shell Ubuntu (busque Ubuntu no Iniciar do Windows):
-
Instalar os pacotes para o nodejs:
sudo apt upgrade
sudo apt install nodejs
sudo apt install npm
sudo npm --global install xpm
- Instalar por xmp GNU Eclipse:
xpm install --global @gnu-mcu-eclipse/riscv-none-gcc
-
Altere o caminho do compilador no Makefile:
- de:
RISCV_TOOLS_PREFIX = riscv32-unknown-elf-
- para:
RISCV_TOOLS_PREFIX = ~/opt/xPacks/@<versão compilador>/.contents/bin/riscv-none-embed-
- de:
-
Utilizando o shell Ubuntu, mude o diretório atual para o repositório:
cd /mnt/c/<caminho sistema arquivos Windows>
- Para compilar, make.
Após a compilação, mova, copie ou faça um link simbólico de ./tests/quartus.hex para a raiz do projeto.
RISV baseado no MARS: RARS