/riscv-multicycle

RISC-V muticycle implementation in VHDL. Core supports multiple peripherals and interruptions using a simple local interrupt controller.

Primary LanguageVHDLGNU General Public License v3.0GPL-3.0

RISC SoftCore

en

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

Diagrama Núcleo

Getting Started (hardware):

  • 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)

Getting Started (software):

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.

Instalação do compilador no Linux

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
  1. 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-

  1. Para compilar, make.

Instalação do compilador no Windows (Windows Subsystem for Linux)

  1. Instalar o WSL: Microsoft Docs

  2. Instalar o Ubuntu no WSL

    • Para integrar o Visual Code com o compilador interno ao WSL, siga esse link
  3. No shell Ubuntu (busque Ubuntu no Iniciar do Windows):

  4. Instalar os pacotes para o nodejs:

sudo apt upgrade
sudo apt install nodejs
sudo apt install npm
sudo npm --global install xpm
  1. Instalar por xmp GNU Eclipse:

xpm install --global @gnu-mcu-eclipse/riscv-none-gcc

  1. 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-
  2. Utilizando o shell Ubuntu, mude o diretório atual para o repositório:

cd /mnt/c/<caminho sistema arquivos Windows>

  1. 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.