Coder Social home page Coder Social logo

jefersonpedroso / riscv-multicycle Goto Github PK

View Code? Open in Web Editor NEW

This project forked from xtarke/riscv-multicycle

0.0 0.0 0.0 1.65 MB

License: GNU General Public License v3.0

VHDL 52.35% Stata 1.83% Makefile 0.66% C 3.01% Python 1.19% Assembly 39.77% Verilog 1.20%

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 RISC-V Website.

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

Instalação do compilador no Linux

Guia para instalação no gnu-mcu-eclipse.github.io

Toolchain Release: riscv-none-gcc Github.

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

  1. Instalar o WSL: Microsoft Docs
  2. Instalar o Ubuntu no WSL
  3. No shell Ubuntu (bsusque 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

xtarke avatar jefersonpedroso avatar lsmanoel 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.