GithubHelp home page GithubHelp logo

RISCuinho

A scratch in the possibilities in the universe of microcontrollers

RISCuinho

RISCuinho (Risquinho), in portuguese is a small scratch on the surface of something, and this represents the proposal of this project that starts in a very didactic way, doing the minimum necessary by scratching the surface of what can be done with a Core or multiple RISC Cores.

This project is educational and aims at my study on microprocessors and to teach my introductory courses about microcontroller programming and architecture at Arduino Minas (Curso Maker/Geringonça Maker Space). RISCuinho (Risquinho) will also be used for my RTOS studies when it is possible to multiply its core to simulate multicore microcontrollers.

I am a autodidata student, I do not have a computer science course and no course that gives me the basis to create such a microcontroller, however I am graduated in "Computer Network Design and Implementation", I have some programming courses, Project Management and other related areas, I used to create it was through studies of specialized books such as those discussed in the bibliography section and on websites on the internet.

All this material was assimilated with the help of conversations in the RISC-V Brasil group on Telegram, where participants from different areas related to IT and exchange experience on microprocessors and microcontrollers, some renowned professionals in the sector, which I am very grateful in the sector, in particular:

I will use Portuguese as the official language of this project, but English can also be used for requests for information and suggestions.


Eu usarei o português como idioma oficial deste projeto, porém o inglês também pode ser usado para solicitações de informações e sugestões.

Repositório em uma nova Organização

O Repositório do RISCuinho foi alterado para uma nova Organização, assim os repositórios relativos a projetos ficarão melhor organizado. o DuinOS ficará especificamente com projetos RTOS em especial para Arduino e similares, isso inclui o RISCuinho. O repositório principal do projeto agora tem novo nome, agora chamado "core", e serão criados repositórios complementáres. Bibliotecas como FPGA-MyLib serão revistas e póderão ter seu nome alterado.

A Organziação ter os seguintes repositórios de maior relevancia:

  • core conterá o core do RISCuinho, o RTL principal para construção do microcontrolador, outros RTL e bibliotecas FPGA são adiconadas como submodulos quando necessário, como a FPGA-Lib
  • FPGA-Lib um conjunto de exemplos e módulos FPGA uteis a qualquer projeto, muito útil para aprendizado e de grande valia para o core do RISCuinho.
  • workspace agrega todos os repositórios relevantes como submódulos e permite que rápidamente se construa um ambiente de trabalho em qualquer outro computador.
  • examples pasta de exemplos de códigos documentados usados pra testar o RISCuinho e também pra estudo de assembly, quem quiser testar o RISCuinho deve começar propondo exemplos neste repositorio.

Exemplos

A pasta examples possui exemplos para testes, na sua maioria obtidos no curso oferecido pela Vicilogic, tais exemplos podem ser obtidos no link https://www.vicilogic.com/vicilearn/run_step/?s_id=1452

Caso você queira colaborar com o RISCuinho uma boa forma de começar é criando exemplos em Assembly RISC-V para teste, procure desafiar o core em sua proposta, em especial na especificação RISC-V RV32I, caso queira propor melhorias e precise de instruçes de outras especificaço, abra um issue para justificar e discutir isso.

Arquitetura do Microcontrolador

O RISCuinho (Risquinho) usa aa Arquitetura Havard simples, com a memória de programa espelhada no endereço de memória de dados, para que possa ser reprogramada aquente (over the air - OTA).

O RISCuinho possui 32 registradores conforme a especificação RV32I. Possui todas as intruções básicas para operação com números inteiros implementadas. Ele não possui instruções de Sistema, Sincronismo e Controle implementadas nesta versão.

O RISCuinho também é um core de um 3 estágio de um único ciclo de clock, em versões futuras será desenvolvido um pipeline mais complexo.

Especificação RISC-V

A Especificação RISC-V que estou sendo seguindo está disponível no seguinte link: https://github.com/riscv/riscv-isa-manual/releases/tag/Ratified-IMAFDQC, é a versão 20191213.

Simulação

As Simulações estão sendo feitas com IVerilog no Windows 10 com WSL, a condificação é feita no VSCode, e a verificação dos sinais gerados com GTKWave.

As instruções são testadas tanto no ambiente Vicilogic como no simulador emulsiV

Sintese e Hardware

Estou escolhendo algumas ferramentas mais populares e consagradas para sintetizar o RISCuinho e coloca-lo funcionando em um FPGA físico, abaixo listo algumas informações sobre isso.

GoWin

GoWin é uma empresa de semicondutores chinesa que produz uma linha facinante de FPGA com uma abordagem bastante intrigante que tem causando bastante embaraço na comunidade, já que com sua abordagem consegue reduzir drásticamente o uso de LUTs, pois vem dotado de um grande número de recursos como ALUs e registradores.

Ainda estou me familiarizando com ela, mas já descobrindo que pode ser uma grande aliada para o RISCuinho.

TangNano

TangNano é uma placa de prototipação que vem empoderada com um FPGA GW1N-LV1QN48C6/I5, equipado com 1152 LUT4, 1 PLL e um total de 72Kbit SRAM em 4 Block, enpacotado numa QFN48.

A TangNano disponibiliza todas as portas de forma bem acessível.

Também vem com uma PSRAM de 64MBits e possui um conector para LCD RGB e a pinagem para uso com VGA, já vem conectada a um LED RGB também. Além de um cristal de 24Mhz, porta USB Type-C e JTAG.

Quartus

Estou usando o Quartus 20.4 Prime Lite Edtion para fazer os testes em uma placa De0-nano.

De0-Nano

Placa de prototipação e estudos da Terasic.

Estou usando a De0-nano versão 1.6:

  • FPGA: Altera Cyclone IV EP4CE22FE22F17C6N

Aprendendo e Tirando Dúvidas ao Vivo

Como estou apredendo não posso tirar muitas dúvidas sobre Verilog ou sobre Risc-V, mas aprendi que a melhor forma de aprender é tirar dúvidas, é um paradoxo, então vamos lá, criei um canal no Twitch para isso, assim caso queira perguntar algo ou participar ao vivo neste projeto entre no canal e poste sua dúvida, se eu não souber vou pesquisar, assim aprendo mais e te ajudo a aprender também. https://twitch.tv/calrosdelfino_tv ou https://twitch.tv/arduinominas

Onde Obter mais informações?

Visite nosso Wiki clicando aqui.

Você pode colaborar de diversas formas para manutenção deste projeto

Porque você faria isso?, porque é barato, porque você pode ter uma caneca, ou mouse pad, ou camiseta de excelente qualidade, ou porque vai me ajudar a ter mais placas para ter um material de melhor qualidade e assim você poderá usar este código em seus projetos e pesquisas com melhor resultados e todo mundo sai ganhando.

RISCuinho's Projects

apicula icon apicula

Project Apicula 🐝: bitstream documentation for Gowin FPGAs

core icon core

**RISC**uinho - A scratch in the possibilities in the universe of microcontrollers

digital icon digital

A digital logic designer and circuit simulator.

emulsiv icon emulsiv

A visual simulator, criado por @Guillaum Savaton, for teaching computer architecture using the RISC-V instruction set

exemplos icon exemplos

Exemplos usados para teste do RISCuinho, os códigos são em assembly ou C/C++, detalhes podem ser obtidos no em https://riscuinho.github.io/categories/exemplos

gowin-easy-linux icon gowin-easy-linux

Easy setup of GoWin FPGA SDK on Linux. A single script (main_launcher) automates all the critical steps and quickly fires up the IDE.

libfpga icon libfpga

Minha biblioteca de módulos útil a qualquer projeto com FPGA, de PLL, Gerador de números pseudo aleatórios, controladores externos, entre outros.

magic_enum icon magic_enum

Static reflection for enums (to string, from string, iteration) for modern C++, work with any enum type without any macro or boilerplate code

nextpnr icon nextpnr

nextpnr portable FPGA place and route tool

riscv-eabi-spec icon riscv-eabi-spec

Proposal for new Embedded ABI (EABI) for use in embedded RISC-V systems.

riscv-v-spec icon riscv-v-spec

Working draft of the proposed RISC-V V vector extension

simulinho icon simulinho

Simulador integrado iVerilog com interface QT, permite visualizar internamente e controlar a simulação do RISCuinho usando iVerilog

venus icon venus

RISC-V instruction set simulator built for education

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.