Code Monkey home page Code Monkey logo

riscv-multicycle's Introduction

RISC SoftCore


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

Animação do funcionamento da arquitetura em Virgularor: minimum RISC-V

Getting Started (hardware):

  • 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

Getting Started (software):

A compilação de programas necessita do toolchain riscv32-unknown-elf (ou riscv-none-embed) suportando o subconjunto RV32I, sem ABI. 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.

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.

Simulador Assembly:

RISV baseado no MARS: RARS

riscv-multicycle's People

Contributors

joaoantoniocardoso avatar xtarke avatar lsmanoel avatar broeringfelipe avatar diesson avatar diogo0001 avatar reisrafaelfernando avatar cleissom avatar danielpereiraeng avatar jefersonpedroso avatar marcosleal avatar ricardocirio avatar suziyousif avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.