├── .github ├── FUNDING.yml ├── labeler.yml └── workflows │ ├── label.yml │ ├── make_tests.yml │ └── stale.yml ├── .gitignore ├── .gitmodules ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── SECURITY.md ├── YOSYS.md └── docs ├── VerilogQuickRef.pdf └── images ├── boards ├── .gitkeep └── tang_nano_pinout_v1.0.0_w5676_h4000_large.png └── logos └── RISCuinho-Logo.png /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | custom: ['https://riscuinho.github.io/apoiadores/', 'https://merch.streamelements.com/carlosdelfino_br', 'https://merch.streamelements.com/arduinominas'] 4 | github: 5 | patreon: carlosdelfino 6 | open_collective: # Replace with a single Open Collective username 7 | ko_fi: # Replace with a single Ko-fi username 8 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 9 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 10 | liberapay: # Replace with a single Liberapay username 11 | issuehunt: # Replace with a single IssueHunt username 12 | otechie: # Replace with a single Otechie username 13 | -------------------------------------------------------------------------------- /.github/labeler.yml: -------------------------------------------------------------------------------- 1 | Example Updates: 2 | - example/**/* 3 | -------------------------------------------------------------------------------- /.github/workflows/label.yml: -------------------------------------------------------------------------------- 1 | # This workflow will triage pull requests and apply a label based on the 2 | # paths that are modified in the pull request. 3 | # 4 | # To use this workflow, you will need to set up a .github/labeler.yml 5 | # file with configuration. For more information, see: 6 | # https://github.com/actions/labeler 7 | 8 | name: Labeler 9 | on: [pull_request] 10 | 11 | jobs: 12 | label: 13 | 14 | runs-on: ubuntu-latest 15 | permissions: 16 | contents: read 17 | pull-requests: write 18 | 19 | steps: 20 | - uses: actions/labeler@v2 21 | with: 22 | repo-token: "${{ secrets.GITHUB_TOKEN }}" 23 | -------------------------------------------------------------------------------- /.github/workflows/make_tests.yml: -------------------------------------------------------------------------------- 1 | name: Example CI 2 | 3 | # Controls when the action will run. 4 | on: 5 | push: 6 | branches: [ beta_0.x ] 7 | paths-ignore: 8 | - docs/ 9 | - examples/ 10 | - .gitignore 11 | - README.md 12 | - LICENSE 13 | - CONTRIBUTING.md 14 | - CODE_OF_CONDUCT.md 15 | - SECURITY.md 16 | 17 | pull_request: 18 | branches: [ beta_0.x ] 19 | paths-ignore: 20 | - docs/ 21 | - examples/ 22 | - .gitignore 23 | - README.md 24 | - LICENSE 25 | - CONTRIBUTING.md 26 | - CODE_OF_CONDUCT.md 27 | - SECURITY.md 28 | 29 | # Allows you to run this workflow manually from the Actions tab 30 | workflow_dispatch: 31 | 32 | # A workflow run is made up of one or more jobs that can run sequentially or in parallel 33 | jobs: 34 | # This workflow contains a single job called "build" 35 | build: 36 | # The type of runner that the job will run on 37 | runs-on: ubuntu-latest 38 | 39 | # Steps represent a sequence of tasks that will be executed as part of the job 40 | steps: 41 | # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 42 | - uses: actions/checkout@v2 43 | 44 | - name: Instal iVerilog 45 | run: sudo apt install iverilog gtkwave yosys binutils 46 | 47 | - name: Make Tests 48 | run: make 49 | -------------------------------------------------------------------------------- /.github/workflows/stale.yml: -------------------------------------------------------------------------------- 1 | name: Identifica Issues e Pull Request obsoletos 2 | 3 | on: 4 | schedule: 5 | - cron: '0 12 1 1,4,7,10 *' 6 | - cron: '0 12 16 2,5,8,11 *' 7 | 8 | jobs: 9 | stale: 10 | 11 | runs-on: ubuntu-latest 12 | permissions: 13 | issues: write 14 | pull-requests: write 15 | 16 | steps: 17 | - uses: actions/stale@v3 18 | with: 19 | repo-token: ${{ secrets.GITHUB_TOKEN }} 20 | stale-issue-message: 'Issue que precisa ser priorizado!' 21 | stale-pr-message: 'Pull Request que precisa ser priorizado!' 22 | stale-issue-label: 'no-issue-activity' 23 | stale-pr-label: 'no-pr-activity' 24 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.bck 2 | *.bak 3 | *.vcd 4 | ~* 5 | xt2 6 | 7 | RISCUIN_Quartus.* 8 | !RISCUIN_Quartus.htm 9 | !RISCUIN_Quartus.qpf 10 | !RISCUIN_Quartus.qsf 11 | !RISCUIN_Quartus.sdc 12 | !RISCUIN_Quartus.v 13 | db/ 14 | incremental_db/ 15 | # Prerequisites 16 | *.d 17 | 18 | # Compiled Object files 19 | *.slo 20 | *.lo 21 | *.o 22 | *.obj 23 | 24 | # Precompiled Headers 25 | *.gch 26 | *.pch 27 | 28 | # Compiled Dynamic libraries 29 | *.so 30 | *.dylib 31 | *.dll 32 | 33 | # Fortran module files 34 | *.mod 35 | *.smod 36 | 37 | # Compiled Static libraries 38 | *.lai 39 | *.la 40 | *.a 41 | *.lib 42 | 43 | # Executables 44 | *.exe 45 | *.out 46 | *.app 47 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "LibFPGA"] 2 | path = lib/LibFPGA 3 | url = https://github.com/RISCuinho/LibFPGA 4 | branch = main 5 | [submodule "memory"] 6 | path = memory 7 | url = https://github.com/RISCuinho/exemplos/ 8 | branch = main 9 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Citizen Code of Conduct 2 | 3 | ## 1. Purpose 4 | 5 | A primary goal of Arduino MInas is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof). 6 | 7 | This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior. 8 | 9 | We invite all those who participate in Arduino MInas to help us create safe and positive experiences for everyone. 10 | 11 | ## 2. Open [Source/Culture/Tech] Citizenship 12 | 13 | A supplemental goal of this Code of Conduct is to increase open [source/culture/tech] citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community. 14 | 15 | Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society. 16 | 17 | If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know. 18 | 19 | ## 3. Expected Behavior 20 | 21 | The following behaviors are expected and requested of all community members: 22 | 23 | * Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community. 24 | * Exercise consideration and respect in your speech and actions. 25 | * Attempt collaboration before conflict. 26 | * Refrain from demeaning, discriminatory, or harassing behavior and speech. 27 | * Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential. 28 | * Remember that community event venues may be shared with members of the public; please be respectful to all patrons of these locations. 29 | 30 | ## 4. Unacceptable Behavior 31 | 32 | The following behaviors are considered harassment and are unacceptable within our community: 33 | 34 | * Violence, threats of violence or violent language directed against another person. 35 | * Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language. 36 | * Posting or displaying sexually explicit or violent material. 37 | * Posting or threatening to post other people's personally identifying information ("doxing"). 38 | * Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability. 39 | * Inappropriate photography or recording. 40 | * Inappropriate physical contact. You should have someone's consent before touching them. 41 | * Unwelcome sexual attention. This includes, sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances. 42 | * Deliberate intimidation, stalking or following (online or in person). 43 | * Advocating for, or encouraging, any of the above behavior. 44 | * Sustained disruption of community events, including talks and presentations. 45 | 46 | ## 5. Weapons Policy 47 | 48 | No weapons will be allowed at Arduino MInas events, community spaces, or in other spaces covered by the scope of this Code of Conduct. Weapons include but are not limited to guns, explosives (including fireworks), and large knives such as those used for hunting or display, as well as any other item used for the purpose of causing injury or harm to others. Anyone seen in possession of one of these items will be asked to leave immediately, and will only be allowed to return without the weapon. Community members are further expected to comply with all state and local laws on this matter. 49 | 50 | ## 6. Consequences of Unacceptable Behavior 51 | 52 | Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated. 53 | 54 | Anyone asked to stop unacceptable behavior is expected to comply immediately. 55 | 56 | If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event). 57 | 58 | ## 7. Reporting Guidelines 59 | 60 | If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible. riscuinho@carlosdelfino.eti.br. 61 | 62 | 63 | 64 | Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress. 65 | 66 | ## 8. Addressing Grievances 67 | 68 | If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify RISCuinho Project with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies. 69 | 70 | 71 | 72 | ## 9. Scope 73 | 74 | We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venues--online and in-person--as well as in all one-on-one communications pertaining to community business. 75 | 76 | This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to adversely affect the safety and well-being of community members. 77 | 78 | ## 10. Contact info 79 | 80 | riscuinho@carlosdelfino.eti.br 81 | 82 | ## 11. License and attribution 83 | 84 | The Citizen Code of Conduct is distributed by [Stumptown Syndicate](http://stumptownsyndicate.org) under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/). 85 | 86 | Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy). 87 | 88 | _Revision 2.3. Posted 6 March 2017._ 89 | 90 | _Revision 2.2. Posted 4 February 2016._ 91 | 92 | _Revision 2.1. Posted 23 June 2014._ 93 | 94 | _Revision 2.0, adopted by the [Stumptown Syndicate](http://stumptownsyndicate.org) board on 10 January 2013. Posted 17 March 2013._ 95 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribuindo com o Core 2 | 3 | Ao contribuir para este repositório, primeiro discuta a alteração e propostas de exemplos que deseja fazer por meio de [issues](./issues), e-maili, whatsapp, telegram, ou qualquer outro método. 4 | 5 | Observe que temos um código de conduta, siga-o em todas as suas interações com o projeto. 6 | Processo de PR (pull request): 7 | 8 | - Certifique-se que se ouver mais de um arquivo referente ao mesmo exemplo, que estejam todos em um mesmo diretório, com nome que identifique claramente do que se trata o exemplo. 9 | - Não use nomes de arquivos e diretórios com espaço, ífens e com mais de 32 caracteres, também não inicie os nomes com números ou qualquer símbolo. 10 | - Atualize o README.md com detalhes, links para localizações de arquivos úteis e parâmetros de execução, descrição das formulas em detalhes. 11 | - Aumente os números de versão em quaisquer arquivos de exemplo e o README.md para a nova versão que este PR representaria. O esquema de controle de versão que usamos é SemVer. 12 | - Você pode mesclar o PR depois de obter a aprovação dos outros desenvolvedores ou, se não tiver permissão para fazer isso, pode solicitar que o segundo revisor faça a mesclagem para você. 13 | 14 | 15 | 16 | # Contribuindo com Exemplos 17 | 18 | Veja como contribuir no repositório https://github.com/RISCuinho/exemplos 19 | 20 | ## Uso de bliotecas de terceiros 21 | 22 | O Uso de bibliotecas de terceiros devem ser evitadasm nas caso sejam necessário, deverá ser acredico no README do exemplo detalhes de como obte-las, instala-las e como compilar o exemplo, 23 | 24 | # Código de Conduta 25 | 26 | ## Nossa promessa 27 | 28 | No interesse de promover um ambiente aberto e acolhedor, nós, como contribuintes e mantenedores, nos comprometemos a tornar a participação em nosso projeto e em nossa comunidade uma experiência livre de assédio para todos, independentemente da idade, tamanho do corpo, deficiência, etnia, identidade e expressão de gênero, nível de experiência, nacionalidade, aparência pessoal, raça, religião ou identidade e orientação sexual. 29 | 30 | ## Nossos Padrões 31 | 32 | Exemplos de comportamento que contribui para a criação de um ambiente positivo incluem: 33 | 34 | - Usar uma linguagem acolhedora e inclusiva 35 | - Respeitar os diferentes pontos de vista e experiências 36 | - Aceitando críticas construtivas com elegância 37 | - Foco no que é melhor para a comunidade 38 | - Mostrar empatia para com outros membros da comunidade 39 | 40 | Exemplos de comportamento inaceitável por parte dos participantes incluem: 41 | 42 | - Uso de linguagem ou imagens sexualizadas e atenção ou avanços sexuais indesejados 43 | - Comentários de trollagem, insultos / depreciativos e ataques pessoais ou políticos 44 | - Assédio público ou privado 45 | - Publicar informações privadas de terceiros, como um endereço físico ou eletrônico, sem permissão explícita 46 | - Outras condutas que poderia ser razoavelmente considerada inadequada em um ambiente profissional 47 | 48 | ## Nossas responsabilidades 49 | 50 | Os mantenedores do projeto são responsáveis por esclarecer os padrões de comportamento aceitável e devem tomar as ações corretivas adequadas e justas em resposta a quaisquer instâncias de comportamento inaceitável. 51 | 52 | Os mantenedores do projeto têm o direito e a responsabilidade de remover, editar ou rejeitar comentários, commits, códigos, edições de wiki, questões e outras contribuições que não estejam alinhadas a este Código de Conduta, ou banir temporária ou permanentemente qualquer contribuidor por outros comportamentos que eles consideram inadequados, ameaçadores, ofensivos ou prejudiciais. 53 | 54 | ## Escopo 55 | 56 | Este Código de Conduta se aplica tanto aos espaços do projeto quanto aos espaços públicos quando um indivíduo está representando o projeto ou sua comunidade. Exemplos de representação de um projeto ou comunidade incluem o uso de um endereço de e-mail oficial do projeto, publicação por meio de uma conta oficial de mídia social ou atuação como representante indicado em um evento online ou offline. A representação de um projeto pode ser posteriormente definida e esclarecida pelos mantenedores do projeto. 57 | 58 | ## Execução 59 | 60 | Casos de comportamento abusivo, de assédio ou de outra forma inaceitável podem ser relatados entrando em contato com a equipe do projeto em ricuinho@carlosdelfino.eti.br. Todas as reclamações serão analisadas e investigadas e resultarão em uma resposta considerada necessária e apropriada às circunstâncias. A equipe do projeto é obrigada a manter a confidencialidade em relação ao relator de um incidente. Mais detalhes de políticas de aplicação específicas podem ser publicados separadamente. 61 | 62 | Os mantenedores do projeto que não seguem ou não aplicam o Código de Conduta de boa fé podem enfrentar represenções temporárias ou permanentes, conforme determinado por outros membros da liderança do projeto. 63 | 64 | ## Atribuição 65 | 66 | Este Código de Conduta foi adaptado do Pacto do Colaborador, versão 1.4, disponível em http://contributor-covenant.org/version/1/4 67 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 3-Clause License 2 | 3 | Copyright (c) 2021, Carlos Delfino 4 | Copyright (c) 2021, DUINOS - O Arduino Multitarefa 5 | All rights reserved. 6 | 7 | Redistribution and use in source and binary forms, with or without 8 | modification, are permitted provided that the following conditions are met: 9 | 10 | 1. Redistributions of source code must retain the above copyright notice, this 11 | list of conditions and the following disclaimer. 12 | 13 | 2. Redistributions in binary form must reproduce the above copyright notice, 14 | this list of conditions and the following disclaimer in the documentation 15 | and/or other materials provided with the distribution. 16 | 17 | 3. Neither the name of the copyright holder nor the names of its 18 | contributors may be used to endorse or promote products derived from 19 | this software without specific prior written permission. 20 | 21 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 24 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 25 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 27 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 28 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 29 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **RISC**uinho 2 | ===================================== 3 | ## A _**scratch**_ in the possibilities in the universe of microcontrollers 4 | 5 | ![RISCuinho](./docs/images/logos/RISCuinho-Logo.png) 6 | 7 | **RISC**uinho (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. 8 | 9 | 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)](https://facebook.com/CursoMaker). RISCuinho (Risquinho) will also be used for my RTOS studies when it is possible to multiply its core to simulate multicore microcontrollers. 10 | 11 | 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. 12 | 13 | All this material was assimilated with the help of conversations in the [RISC-V Brasil group on Telegram](https://t.me/riscvbr), 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: 14 | 15 | * Marcelo Samsoniuk (@samsoniuk) [Core Risc DarkRiscv](https://github.com/darklive/darkriscv) 16 | * Gustavo Nunes (@namoscagnm) [Um Interpretador Assembly RISC-V em Python](https://github.com/namoscagnm/piscado) 17 | * Paulo Matias (@thotypous) 18 | * Lucas Teske (@racerxdl) [Core RISC RISCow](https://github.com/racerxdl/riskow) 19 | * Marcus Medereiros (@zxmarcos) [Core RISC Riscado-V](https://github.com/zxmarcos/riscado-v) 20 | * Jecel Jr 21 | 22 | I will use Portuguese as the official language of this project, but English can also be used for requests for information and suggestions. 23 | 24 | --- 25 | 26 | 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. 27 | 28 | ## Repositório em uma nova Organização 29 | 30 | O Repositório do RISCuinho foi alterado para uma [nova Organização](https://github.com/RISCuinho), 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"](https://github.com/RISCuinho/core), e serão criados repositórios complementáres. Bibliotecas como FPGA-MyLib serão revistas e póderão ter seu nome alterado. 31 | 32 | A Organziação ter os seguintes repositórios de maior relevancia: 33 | 34 | * **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 35 | * **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. 36 | * **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. 37 | * **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. 38 | 39 | ### Exemplos 40 | 41 | A pasta [examples](./examples) possui exemplos para testes, na sua maioria obtidos no curso oferecido pela [Vicilogic](https://www.vicilogic.com/), tais exemplos podem ser obtidos no link [https://www.vicilogic.com/vicilearn/run_step/?s_id=1452](https://www.vicilogic.com/vicilearn/run_step/?s_id=1452) 42 | 43 | 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. 44 | 45 | ## Arquitetura do Microcontrolador 46 | 47 | O **RISC**uinho (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). 48 | 49 | O **RISC**uinho 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. 50 | 51 | O **RISC**uinho 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. 52 | 53 | ## Especificação RISC-V 54 | 55 | 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. 56 | 57 | ## Simulação 58 | 59 | 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. 60 | 61 | As instruções são testadas tanto no ambiente Vicilogic como no simulador [emulsiV](https://carlosdelfino.eti.br/emulsiV) 62 | 63 | ## Sintese e Hardware 64 | 65 | 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. 66 | 67 | ### GoWin 68 | 69 | 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. 70 | 71 | Ainda estou me familiarizando com ela, mas já descobrindo que pode ser uma grande aliada para o RISCuinho. 72 | 73 | ### TangNano 74 | 75 | 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. 76 | 77 | A TangNano disponibiliza todas as portas de forma bem acessível. 78 | 79 | ![](./docs/images/boards/tang_nano_pinout_v1.0.0_w5676_h4000_large.png) 80 | 81 | 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. 82 | 83 | ### Quartus 84 | 85 | Estou usando o Quartus 20.4 Prime Lite Edtion para fazer os testes em uma placa De0-nano. 86 | 87 | ### De0-Nano 88 | 89 | Placa de prototipação e estudos da Terasic. 90 | 91 | Estou usando a De0-nano versão 1.6: 92 | 93 | * FPGA: Altera Cyclone IV EP4CE22FE22F17C6N 94 | 95 | ## Aprendendo e Tirando Dúvidas ao Vivo 96 | 97 | 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](https://twitch.tv/calrosdelfino_tv) ou [https://twitch.tv/arduinominas](https://twitch.tv/arduinominas) 98 | 99 | ## Onde Obter mais informações? 100 | 101 | [Visite nosso Wiki clicando aqui](https://github.com/DuinOS/riscuinho/wiki/VerilogTools). 102 | 103 | ## Você pode colaborar de diversas formas para manutenção deste projeto 104 | 105 | * Dentre elas doando via PIX: apoio.projetos@carlosdelfino.eti.br 106 | * Ou comprando nas lojas [Merch ArduinoMinas](https://merch.streamelements.com/ArduinoMinas) ou [Merch CarlosDelfino_BR](https://merch.streamelements.com/carlosdelfino_br) 107 | 108 | 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. 109 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | # Security Policy 2 | 3 | ## Supported Versions 4 | 5 | Use this section to tell people about which versions of your project are 6 | currently being supported with security updates. 7 | 8 | | Version | Supported | 9 | | ------- | ------------------ | 10 | | 5.1.x | :white_check_mark: | 11 | | 5.0.x | :x: | 12 | | 4.0.x | :white_check_mark: | 13 | | < 4.0 | :x: | 14 | 15 | ## Reporting a Vulnerability 16 | 17 | Use this section to tell people how to report a vulnerability. 18 | 19 | Tell them where to go, how often they can expect to get an update on a 20 | reported vulnerability, what to expect if the vulnerability is accepted or 21 | declined, etc. 22 | -------------------------------------------------------------------------------- /YOSYS.md: -------------------------------------------------------------------------------- 1 | YOSYS 2 | ===== 3 | 4 | Este projeto usa o YOSYS para gerar o RTLView do projeto, criando um diagrama dos módulos e sua composição. 5 | 6 | Deve ser usado a versão mais atual disponível no repositório: https://github.com/RISCuinho/yosys 7 | -------------------------------------------------------------------------------- /docs/VerilogQuickRef.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RISCuinho/core/80666284eaee03d88cba6620288524e95ef9729f/docs/VerilogQuickRef.pdf -------------------------------------------------------------------------------- /docs/images/boards/.gitkeep: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /docs/images/boards/tang_nano_pinout_v1.0.0_w5676_h4000_large.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RISCuinho/core/80666284eaee03d88cba6620288524e95ef9729f/docs/images/boards/tang_nano_pinout_v1.0.0_w5676_h4000_large.png -------------------------------------------------------------------------------- /docs/images/logos/RISCuinho-Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RISCuinho/core/80666284eaee03d88cba6620288524e95ef9729f/docs/images/logos/RISCuinho-Logo.png --------------------------------------------------------------------------------