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 riscv32-unknown-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.
Guia para instalação no gnu-mcu-eclipse.github.io
Toolchain Release: riscv-none-gcc Github.
Na utilização do xPacks talvez seja necessário exportar o XPACKS_REPO_FOLDER
:
export XPACKS_REPO_FOLDER=~/opt/xPacks/
Instruções para Arch Linux (adaptar para outras distribuições):
sudo pacman -Syyu npm
sudo npm install --global xpm@latest
export XPACKS_REPO_FOLDER=~/opt/xPacks/
mkdir -p $XPACKS_REPO_FOLDER
xpm install --global @xpack-dev-tools/riscv-none-embed-gcc@latest
export MY_PLD_WORKSPACE=~/workspace_vhdl
mkdir -p $MY_PLD_WORKSPACE
cd $MY_PLD_WORKSPACE
git clone https://github.com/xtarke/riscv-multicycle
cd $MY_PLD_WORKSPACE/riscv-multicycle/tests
- Atualizar Makefile com o diretório da toolchain.
Exemplo:
RISCV_TOOLS_PREFIX = ~/opt/xPacks/@xpack-dev-tools/riscv-none-embed-gcc/8.3.0-1.1.1/.content/bin/riscv-none-embed-
- 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.