From aad9cc8ab4c6b6c3fc068cf0efe1087237c77d7c Mon Sep 17 00:00:00 2001
From: Julio Nunes Avelar Versão PDF dos diagramas
-Maquina de estados da unidade de controle
-Esquemático do processadorExemplo de Instância
Maquina de estados da unidade de controle e Esquemático
PDF Version of the Diagrams -Control Unit State Machine -Processor Schematic
+Control Unit State Machine +O Risco 5 \u00e9 um n\u00facleo de processador de c\u00f3digo aberto que implementa o conjunto de instru\u00e7\u00f5es RV32I da arquitetura RISC-V. Foi desenvolvido para uso acad\u00eamico e como o n\u00facleo principal em pequenos SoCs. O projeto tem como foco facilitar a integra\u00e7\u00e3o e utiliza\u00e7\u00e3o, oferecendo uma arquitetura simplificada e eficiente para diversas aplica\u00e7\u00f5es.
"},{"location":"#recursos-disponiveis","title":"Recursos Dispon\u00edveis","text":""},{"location":"#risco-5-core","title":"Risco-5 Core","text":"Um n\u00facleo de processador RISC-V com a implementa\u00e7\u00e3o RV32I do RISC-V.
"},{"location":"#risco-5-soc","title":"Risco-5 SoC","text":"Um SoC com o n\u00facleo Risco-5 contendo mem\u00f3ria e perif\u00e9ricos como GPIOs e UART.
"},{"location":"#risco-5-testes","title":"Risco-5 Testes","text":"Testes escritos em assembly RISC-V para valida\u00e7\u00e3o do Risco 5.
"},{"location":"about/","title":"Sobre o Risco-5","text":""},{"location":"about/#origem-do-projeto","title":"Origem do projeto","text":"O projeto teve in\u00edcio a partir de um projeto de f\u00e9rias cujo objetivo era desenvolver um core RISC-V para fins de aprendizado, inicialmente foi desenvolvida uma vers\u00e3o monocilo, denominada Pequeno Risco-5. O projeto evoluiu rapidamente para uma vers\u00e3o multiciclo pouco tempo depois de seu in\u00edcio.
Esse projeto foi incentivado pelo professor Rodolfo Azevedo, do Instituto de Computa\u00e7\u00e3o da UNICAMP, que sugeriu a constru\u00e7\u00e3o de um processador RISC-V monociclo e posteriormente um RISC-V multiciclo. Ele tamb\u00e9m forneceu as primeiras FPGAs utilizadas para testes e auxiliou com d\u00favidas t\u00e9cnicas.
"},{"location":"about/#nome","title":"Nome","text":"O nome Risco-5 vem de uma piada com o nome RISC-V, a arquitetura que ele implementa, mas tamb\u00e9m pode remeter a algo arriscado.
"},{"location":"about/#familia-risco-5","title":"Fam\u00edlia Risco-5:","text":"O Risco-5 foi projetado por Julio Nunes Avelar e est\u00e1 dispon\u00edvel para uso livre sob as licen\u00e7as listadas abaixo.
Autor da logo: Mateus luck
"},{"location":"about/#licencas","title":"Licen\u00e7as","text":"Licen\u00e7a de Hardware: CERN-OHL-P-2.0
Licen\u00e7a de Software: MIT
Licen\u00e7a da Documenta\u00e7\u00e3o: CC BY-SA 4.0
"},{"location":"contributing/","title":"Contribuindo para o Projeto","text":"Obrigado por considerar contribuir para o Projeto! Estamos felizes em receber contribui\u00e7\u00f5es de qualquer pessoa interessada em melhorar este projeto. Antes de come\u00e7ar, por favor, leia este guia para entender como voc\u00ea pode contribuir de forma eficaz.
"},{"location":"contributing/#como-contribuir","title":"Como Contribuir","text":"Fork do Reposit\u00f3rio: Primeiro, fa\u00e7a um fork deste reposit\u00f3rio para a sua pr\u00f3pria conta.
Clone o Reposit\u00f3rio: Clone o reposit\u00f3rio forkado para o seu ambiente de desenvolvimento local.
git clone https://github.com/JN513/Risco-5.git\n
git checkout -b minha-contribuicao\n
Fa\u00e7a as Mudan\u00e7as: Fa\u00e7a as mudan\u00e7as necess\u00e1rias no c\u00f3digo.
Teste as Mudan\u00e7as: Certifique-se de que as suas altera\u00e7\u00f5es n\u00e3o causam problemas no projeto. Execute testes relevantes, se aplic\u00e1vel.
Commit e Push: Fa\u00e7a commit das suas mudan\u00e7as e envie-as para o seu reposit\u00f3rio forkado.
git commit -m \"Adicionei uma nova funcionalidade\"\ngit push origin minha-contribuicao\n
Crie um Pull Request: Abra um Pull Request (PR) para a branch principal do projeto original. Certifique-se de descrever claramente as mudan\u00e7as que voc\u00ea fez e forne\u00e7a informa\u00e7\u00f5es relevantes.
Revis\u00e3o e Discuss\u00e3o: A equipe do projeto revisar\u00e1 o seu PR e poder\u00e1 solicitar mudan\u00e7as ou esclarecimentos. Esteja disposto a colaborar e ajustar o seu c\u00f3digo conforme necess\u00e1rio.
Aprova\u00e7\u00e3o e Mesclagem: Ap\u00f3s a revis\u00e3o bem-sucedida e a aprova\u00e7\u00e3o da equipe, o seu PR ser\u00e1 mesclado no projeto principal.
Celebra\u00e7\u00e3o: Parab\u00e9ns! Sua contribui\u00e7\u00e3o foi mesclada com sucesso.
Ao contribuir para este projeto, voc\u00ea concorda que suas contribui\u00e7\u00f5es ser\u00e3o licenciadas sob a mesma licen\u00e7a do projeto. Leia a licen\u00e7a para mais detalhes.
"},{"location":"core/","title":"Risco-5 Processor Core","text":""},{"location":"core/#introducao","title":"Introdu\u00e7\u00e3o","text":"O Risco-5 \u00e9 um core RISC-V de 32 bits que implementa o conjunto de instru\u00e7\u00f5es b\u00e1sicas do RISC-V RV32I. O Risco-5 \u00e9 um processador multiciclo, com execu\u00e7\u00e3o em ordem e sem pipeline. Foi projetado para ser simples e de f\u00e1cil utiliza\u00e7\u00e3o, sendo \u00fatil nos mais diversos sistemas.
"},{"location":"core/#arquivos-fonte","title":"Arquivos Fonte","text":"Os arquivos do Risco-5 est\u00e3o dispon\u00edveis na pasta \"core/\" dentro da pasta \"src/\", com o top model estando dispon\u00edvel no arquivo core.v.
"},{"location":"core/#parametros","title":"Par\u00e2metros","text":"Nome Tamanho Descri\u00e7\u00e3o BOOT_ADDRESS 32 bits Endere\u00e7o de boot"},{"location":"core/#sinais","title":"Sinais","text":"Nome Dire\u00e7\u00e3o Tamanho Descri\u00e7\u00e3o clk input 1 bit Sinal de clock halt input 1 bit Para a execu\u00e7\u00e3o do processador reset input 1 bit Sinal de reset memory_response input 1 bit Resposta do barramento de mem\u00f3ria; o core espera at\u00e9 que seja 1 memory_read output 1 bit Habilita leitura na mem\u00f3ria memory_write output 1 bit Habilita escrita na mem\u00f3ria write_data output 32 bits Valores saindo do core read_data input 32 bits Valores vindos da mem\u00f3ria address output 32 bits Endere\u00e7o de mem\u00f3ria option output 3 bits Formato a ser lido da mem\u00f3ria"},{"location":"core/#exemplo-de-instancia","title":"Exemplo de Inst\u00e2ncia","text":"A seguir est\u00e1 um exemplo de como instanciar o core Risco-5 em um m\u00f3dulo Verilog:
Core #(\n .BOOT_ADDRESS(32'h00000000) // Endere\u00e7o de boot - 32 bits\n) Core_inst (\n /* controle */\n .clk(clk), // Sinal de clock - 1 bit\n .halt(halt), // Para a execu\u00e7\u00e3o do processador - 1 bit\n .reset(reset), // Sinal de reset - 1 bit\n /* Dados */\n .memory_response(memory_response), // Resposta do barramento de mem\u00f3ria, o core espera at\u00e9 que seja 1 - 1 bit\n .memory_read(memory_read), // Habilita leitura na mem\u00f3ria - 1 bit\n .memory_write(memory_write), // Habilita escrita na mem\u00f3ria - 1 bit\n .write_data(write_data), // Valores saindo do core - 32 bits\n .read_data(read_data), // Valores vindo da mem\u00f3ria - 32 bits\n .address(address), // Endere\u00e7o de mem\u00f3ria - 32 bits\n .option(option) // Formato a ser lido da mem\u00f3ria - 3 bits\n);\n
"},{"location":"core/#maquina-de-estados-da-unidade-de-controle-e-esquematico","title":"Maquina de estados da unidade de controle e Esquem\u00e1tico","text":"Vers\u00e3o PDF dos diagramas Maquina de estados da unidade de controle Esquem\u00e1tico do processador
"},{"location":"core/#maquina-de-estados-da-unidade-de-controle","title":"Maquina de estados da unidade de controle","text":""},{"location":"core/#esquematico-do-processador","title":"Esquem\u00e1tico do processador","text":"Esquem\u00e1tico atual
Esquem\u00e1tico Inicial
"},{"location":"get_started/","title":"Iniciando com o Risco-5","text":""},{"location":"get_started/#testes-simulacao","title":"Testes / Simula\u00e7\u00e3o","text":"O diret\u00f3rio \"testes\" cont\u00e9m alguns testes para os m\u00f3dulos do projeto. Esses testes foram desenvolvidos para serem utilizados com o Iverilog. Para executar os testes, basta utilizar o Iverilog e o VVP, como mostrado no exemplo abaixo:
iverilog -o build/core_test.o -s core_tb src/core/* src/peripheral/memory.v tests/core_test.v\nvvp build/core_test.o\n
Para facilitar a execu\u00e7\u00e3o dos testes, \u00e9 poss\u00edvel utilizar o script \"run_test\" dispon\u00edvel na raiz do projeto. Ao executar esse script, ele solicitar\u00e1 o nome do teste e o nome de um dos arquivos de teste em assembly dispon\u00edveis no diret\u00f3rio \"software/code/\". Como resultado, ser\u00e1 gerado um arquivo \"soc.vcd\" em \"build/\" que pode ser analisado atrav\u00e9s do GTKWave.
"},{"location":"get_started/#requisitos","title":"Requisitos:","text":"Essas depend\u00eancias podem ser obtidas atrav\u00e9s do oss cad suite ou podem ser instaladas manualmente de forma individual.
"},{"location":"get_started/#fpga","title":"FPGA","text":"O projeto oferece suporte a testes em algumas FPGAs, listadas abaixo:
Os exemplos est\u00e3o dispon\u00edveis no diret\u00f3rio \"FPGA\". Para as FPGAs Sipeed (Tangnano 9k e 20k), os exemplos foram desenvolvidos utilizando a IDE Gowin. Para as FPGAs Lattice/ColorLight, os exemplos foram desenvolvidos utilizando o Yosys + NextPNR e podem ser sintetizados e programados utilizando o makefile dispon\u00edvel nos diret\u00f3rios. Para as FPGAs Xilinx, foi utilizado o Vivado, e os exemplos podem ser utilizados tamb\u00e9m utilizando o makefile dispon\u00edvel no diret\u00f3rio.
"},{"location":"get_started/#requisitos_1","title":"Requisitos","text":"Gowin/Sipeed: Gowin EDA openFPGALoader
Geral: Pyserial ou VSCode Serial ou Minicom ou outro software capaz de utilizar serial
Acesse o diret\u00f3rio \"fpga/???\" com \"???\" sendo o nome da FPGA a ser utilizada, e execute o comando \"make\". Com isso, a s\u00edntese do projeto ser\u00e1 realizada. Para carregar o bitstream para a placa, utilize \"make flash\". Caso queira executar tudo de uma vez, use \"make run_all\".
"},{"location":"get_started/#feedback-da-fpga","title":"Feedback da FPGA","text":"Se tudo ocorrer bem, os LEDs da FPGA come\u00e7ar\u00e3o a piscar em um ritmo de contagem, e na serial come\u00e7ar\u00e1 a ser enviado um caractere ASCII. A serial opera com um baudrate padr\u00e3o de 115200 bps.
"},{"location":"soc/","title":"Risco-5 Processor SoC","text":""},{"location":"en/","title":"Risco 5 Documentation","text":""},{"location":"en/#risco-5","title":"Risco 5","text":"Risco 5 is an open-source processor core that implements the RV32I instruction set of the RISC-V architecture. It was developed for academic use and as the main core in small SoCs. The project focuses on facilitating integration and usage, offering a simplified and efficient architecture for various applications.
"},{"location":"en/#available-resources","title":"Available Resources","text":""},{"location":"en/#risco-5-core","title":"Risco-5 Core","text":"A RISC-V processor core implementing the RV32I of RISC-V.
"},{"location":"en/#risco-5-soc","title":"Risco-5 SoC","text":"An SoC with the Risco-5 core containing memory and peripherals such as GPIOs and UART.
"},{"location":"en/#risco-5-tests","title":"Risco-5 Tests","text":"Tests written in RISC-V assembly for validating the Risco 5.
"},{"location":"en/about/","title":"About Risco-5","text":""},{"location":"en/about/#project-origin","title":"Project Origin","text":"The project began as a summer project aimed at developing a RISC-V core for learning purposes. Initially, a single-cycle version, named Pequeno Risco-5, was developed. The project quickly evolved into a multi-cycle version shortly after its inception.
This project was encouraged by Professor Rodolfo Azevedo from the Institute of Computing at UNICAMP, who suggested the construction of a single-cycle RISC-V processor and later a multi-cycle RISC-V. He also provided the first FPGAs used for testing and assisted with technical questions.
"},{"location":"en/about/#name","title":"Name","text":"The name Risco-5 is a play on the name RISC-V, the architecture it implements, but it can also suggest something risky.
"},{"location":"en/about/#risco-5-family","title":"Risco-5 Family:","text":"Risco-5 was designed by Julio Nunes Avelar and is available for free use under the licenses listed below.
Logo author: Mateus Luck
"},{"location":"en/about/#licenses","title":"Licenses","text":"Hardware License: CERN-OHL-P-2.0
Software License: MIT
Documentation License: CC BY-SA 4.0
"},{"location":"en/contributing/","title":"Contributing to the Project","text":"Thank you for considering contributing to the Project! We are happy to welcome contributions from anyone interested in improving this project. Before you start, please read this guide to understand how you can contribute effectively.
"},{"location":"en/contributing/#how-to-contribute","title":"How to Contribute","text":"Fork the Repository: First, fork this repository to your own account.
Clone the Repository: Clone the forked repository to your local development environment.
bash git clone https://github.com/JN513/Risco-5.git
bash git checkout -b my-contribution
Make Changes: Make the necessary changes to the code.
Test Changes: Ensure that your changes do not cause issues in the project. Run relevant tests if applicable.
Commit and Push: Commit your changes and push them to your forked repository.
bash git commit -m \"Added a new feature\" git push origin my-contribution
Create a Pull Request: Open a Pull Request (PR) to the main branch of the original project. Be sure to clearly describe the changes you made and provide relevant information.
Review and Discussion: The project team will review your PR and may request changes or clarifications. Be prepared to collaborate and adjust your code as needed.
Approval and Merge: After a successful review and approval by the team, your PR will be merged into the main project.
Celebrate: Congratulations! Your contribution has been successfully merged.
By contributing to this project, you agree that your contributions will be licensed under the same license as the project. Read the license for more details.
"},{"location":"en/core/#introduction","title":"Introduction","text":"Risco-5 is a 32-bit RISC-V core that implements the basic instruction set of the RISC-V RV32I. Risco-5 is a multi-cycle, in-order processor without a pipeline. It was designed to be simple and easy to use, making it useful in various systems.
"},{"location":"en/core/#source-files","title":"Source Files","text":"The Risco-5 files are available in the \"core/\" folder within the \"src/\" directory, with the top module located in the core.v file.
"},{"location":"en/core/#parameters","title":"Parameters","text":"Name Size Description BOOT_ADDRESS 32 bits Boot address"},{"location":"en/core/#signals","title":"Signals","text":"Name Direction Size Description clk input 1 bit Clock signal halt input 1 bit Halts the processor execution reset input 1 bit Reset signal memory_response input 1 bit Memory bus response; the core waits until it is 1 memory_read output 1 bit Enables memory read memory_write output 1 bit Enables memory write write_data output 32 bits Values exiting the core read_data input 32 bits Values coming from memory address output 32 bits Memory address option output 3 bits Format to be read from memory"},{"location":"en/core/#instance-example","title":"Instance Example","text":"Below is an example of how to instantiate the Risco-5 core in a Verilog module:
Core #(\n .BOOT_ADDRESS(32'h00000000) // Boot address - 32 bits\n) Core_inst (\n /* control */\n .clk(clk), // Clock signal - 1 bit\n .halt(halt), // Halts the processor execution - 1 bit\n .reset(reset), // Reset signal - 1 bit\n /* Data */\n .memory_response(memory_response), // Memory bus response, the core waits until it is 1 - 1 bit\n .memory_read(memory_read), // Enables memory read - 1 bit\n .memory_write(memory_write), // Enables memory write - 1 bit\n .write_data(write_data), // Values exiting the core - 32 bits\n .read_data(read_data), // Values coming from memory - 32 bits\n .address(address), // Memory address - 32 bits\n .option(option) // Format to be read from memory - 3 bits\n);\n
"},{"location":"en/core/#control-unit-state-machine-and-schematic","title":"Control Unit State Machine and Schematic","text":"PDF Version of the Diagrams Control Unit State Machine Processor Schematic
"},{"location":"en/core/#control-unit-state-machine","title":"Control Unit State Machine","text":""},{"location":"en/core/#processor-schematic","title":"Processor Schematic","text":"Current Schematic
Initial Schematic
"},{"location":"en/get_started/","title":"Getting Started with Risco-5","text":""},{"location":"en/get_started/#tests-simulation","title":"Tests / Simulation","text":"The \"tests\" directory contains some tests for the project modules. These tests were developed to be used with Iverilog. To run the tests, simply use Iverilog and VVP as shown in the example below:
iverilog -o build/core_test.o -s core_tb src/core/* src/peripheral/memory.v tests/core_test.v\nvvp build/core_test.o\n
To facilitate running the tests, you can use the \"run_test\" script available at the root of the project. When running this script, it will prompt for the name of the test and the name of one of the assembly test files available in the \"software/code/\" directory. As a result, a \"soc.vcd\" file will be generated in \"build/\" which can be analyzed using GTKWave.
"},{"location":"en/get_started/#requirements","title":"Requirements:","text":"These dependencies can be obtained through the oss cad suite or can be installed individually.
"},{"location":"en/get_started/#fpga","title":"FPGA","text":"The project supports testing on several FPGAs, listed below:
Examples are available in the \"FPGA\" directory. For Sipeed FPGAs (Tangnano 9k and 20k), the examples were developed using the Gowin IDE. For Lattice/ColorLight FPGAs, the examples were developed using Yosys + NextPNR and can be synthesized and programmed using the makefile available in the directories. For Xilinx FPGAs, Vivado was used, and the examples can also be utilized using the makefile available in the directory.
"},{"location":"en/get_started/#requirements_1","title":"Requirements","text":"Gowin/Sipeed:
General:
Navigate to the \"fpga/???\" directory, with \"???\" being the name of the FPGA to be used, and run the command \"make\". This will perform the project synthesis. To load the bitstream onto the board, use \"make flash\". If you want to do everything at once, use \"make run_all\".
"},{"location":"en/get_started/#fpga-feedback","title":"FPGA Feedback","text":"If everything goes well, the FPGA LEDs will start blinking in a counting rhythm, and an ASCII character will begin to be sent over the serial connection. The serial operates at a standard baud rate of 115200 bps.
"}]} \ No newline at end of file +{"config":{"lang":["en","pt"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Documenta\u00e7\u00e3o do Risco 5","text":""},{"location":"#o-risco-5","title":"O Risco 5","text":"O Risco 5 \u00e9 um n\u00facleo de processador de c\u00f3digo aberto que implementa o conjunto de instru\u00e7\u00f5es RV32I da arquitetura RISC-V. Foi desenvolvido para uso acad\u00eamico e como o n\u00facleo principal em pequenos SoCs. O projeto tem como foco facilitar a integra\u00e7\u00e3o e utiliza\u00e7\u00e3o, oferecendo uma arquitetura simplificada e eficiente para diversas aplica\u00e7\u00f5es.
"},{"location":"#recursos-disponiveis","title":"Recursos Dispon\u00edveis","text":""},{"location":"#risco-5-core","title":"Risco-5 Core","text":"Um n\u00facleo de processador RISC-V com a implementa\u00e7\u00e3o RV32I do RISC-V.
"},{"location":"#risco-5-soc","title":"Risco-5 SoC","text":"Um SoC com o n\u00facleo Risco-5 contendo mem\u00f3ria e perif\u00e9ricos como GPIOs e UART.
"},{"location":"#risco-5-testes","title":"Risco-5 Testes","text":"Testes escritos em assembly RISC-V para valida\u00e7\u00e3o do Risco 5.
"},{"location":"about/","title":"Sobre o Risco-5","text":""},{"location":"about/#origem-do-projeto","title":"Origem do projeto","text":"O projeto teve in\u00edcio a partir de um projeto de f\u00e9rias cujo objetivo era desenvolver um core RISC-V para fins de aprendizado, inicialmente foi desenvolvida uma vers\u00e3o monocilo, denominada Pequeno Risco-5. O projeto evoluiu rapidamente para uma vers\u00e3o multiciclo pouco tempo depois de seu in\u00edcio.
Esse projeto foi incentivado pelo professor Rodolfo Azevedo, do Instituto de Computa\u00e7\u00e3o da UNICAMP, que sugeriu a constru\u00e7\u00e3o de um processador RISC-V monociclo e posteriormente um RISC-V multiciclo. Ele tamb\u00e9m forneceu as primeiras FPGAs utilizadas para testes e auxiliou com d\u00favidas t\u00e9cnicas.
"},{"location":"about/#nome","title":"Nome","text":"O nome Risco-5 vem de uma piada com o nome RISC-V, a arquitetura que ele implementa, mas tamb\u00e9m pode remeter a algo arriscado.
"},{"location":"about/#familia-risco-5","title":"Fam\u00edlia Risco-5:","text":"O Risco-5 foi projetado por Julio Nunes Avelar e est\u00e1 dispon\u00edvel para uso livre sob as licen\u00e7as listadas abaixo.
Autor da logo: Mateus luck
"},{"location":"about/#licencas","title":"Licen\u00e7as","text":"Licen\u00e7a de Hardware: CERN-OHL-P-2.0
Licen\u00e7a de Software: MIT
Licen\u00e7a da Documenta\u00e7\u00e3o: CC BY-SA 4.0
"},{"location":"contributing/","title":"Contribuindo para o Projeto","text":"Obrigado por considerar contribuir para o Projeto! Estamos felizes em receber contribui\u00e7\u00f5es de qualquer pessoa interessada em melhorar este projeto. Antes de come\u00e7ar, por favor, leia este guia para entender como voc\u00ea pode contribuir de forma eficaz.
"},{"location":"contributing/#como-contribuir","title":"Como Contribuir","text":"Fork do Reposit\u00f3rio: Primeiro, fa\u00e7a um fork deste reposit\u00f3rio para a sua pr\u00f3pria conta.
Clone o Reposit\u00f3rio: Clone o reposit\u00f3rio forkado para o seu ambiente de desenvolvimento local.
git clone https://github.com/JN513/Risco-5.git\n
git checkout -b minha-contribuicao\n
Fa\u00e7a as Mudan\u00e7as: Fa\u00e7a as mudan\u00e7as necess\u00e1rias no c\u00f3digo.
Teste as Mudan\u00e7as: Certifique-se de que as suas altera\u00e7\u00f5es n\u00e3o causam problemas no projeto. Execute testes relevantes, se aplic\u00e1vel.
Commit e Push: Fa\u00e7a commit das suas mudan\u00e7as e envie-as para o seu reposit\u00f3rio forkado.
git commit -m \"Adicionei uma nova funcionalidade\"\ngit push origin minha-contribuicao\n
Crie um Pull Request: Abra um Pull Request (PR) para a branch principal do projeto original. Certifique-se de descrever claramente as mudan\u00e7as que voc\u00ea fez e forne\u00e7a informa\u00e7\u00f5es relevantes.
Revis\u00e3o e Discuss\u00e3o: A equipe do projeto revisar\u00e1 o seu PR e poder\u00e1 solicitar mudan\u00e7as ou esclarecimentos. Esteja disposto a colaborar e ajustar o seu c\u00f3digo conforme necess\u00e1rio.
Aprova\u00e7\u00e3o e Mesclagem: Ap\u00f3s a revis\u00e3o bem-sucedida e a aprova\u00e7\u00e3o da equipe, o seu PR ser\u00e1 mesclado no projeto principal.
Celebra\u00e7\u00e3o: Parab\u00e9ns! Sua contribui\u00e7\u00e3o foi mesclada com sucesso.
Ao contribuir para este projeto, voc\u00ea concorda que suas contribui\u00e7\u00f5es ser\u00e3o licenciadas sob a mesma licen\u00e7a do projeto. Leia a licen\u00e7a para mais detalhes.
"},{"location":"core/","title":"Risco-5 Processor Core","text":""},{"location":"core/#introducao","title":"Introdu\u00e7\u00e3o","text":"O Risco-5 \u00e9 um core RISC-V de 32 bits que implementa o conjunto de instru\u00e7\u00f5es b\u00e1sicas do RISC-V RV32I. O Risco-5 \u00e9 um processador multiciclo, com execu\u00e7\u00e3o em ordem e sem pipeline. Foi projetado para ser simples e de f\u00e1cil utiliza\u00e7\u00e3o, sendo \u00fatil nos mais diversos sistemas.
"},{"location":"core/#arquivos-fonte","title":"Arquivos Fonte","text":"Os arquivos do Risco-5 est\u00e3o dispon\u00edveis na pasta \"core/\" dentro da pasta \"src/\", com o top model estando dispon\u00edvel no arquivo core.v.
"},{"location":"core/#parametros","title":"Par\u00e2metros","text":"Nome Tamanho Descri\u00e7\u00e3o BOOT_ADDRESS 32 bits Endere\u00e7o de boot"},{"location":"core/#sinais","title":"Sinais","text":"Nome Dire\u00e7\u00e3o Tamanho Descri\u00e7\u00e3o clk input 1 bit Sinal de clock halt input 1 bit Para a execu\u00e7\u00e3o do processador reset input 1 bit Sinal de reset memory_response input 1 bit Resposta do barramento de mem\u00f3ria; o core espera at\u00e9 que seja 1 memory_read output 1 bit Habilita leitura na mem\u00f3ria memory_write output 1 bit Habilita escrita na mem\u00f3ria write_data output 32 bits Valores saindo do core read_data input 32 bits Valores vindos da mem\u00f3ria address output 32 bits Endere\u00e7o de mem\u00f3ria option output 3 bits Formato a ser lido da mem\u00f3ria"},{"location":"core/#exemplo-de-instancia","title":"Exemplo de Inst\u00e2ncia","text":"A seguir est\u00e1 um exemplo de como instanciar o core Risco-5 em um m\u00f3dulo Verilog:
Core #(\n .BOOT_ADDRESS(32'h00000000) // Endere\u00e7o de boot - 32 bits\n) Core_inst (\n /* controle */\n .clk(clk), // Sinal de clock - 1 bit\n .halt(halt), // Para a execu\u00e7\u00e3o do processador - 1 bit\n .reset(reset), // Sinal de reset - 1 bit\n /* Dados */\n .memory_response(memory_response), // Resposta do barramento de mem\u00f3ria, o core espera at\u00e9 que seja 1 - 1 bit\n .memory_read(memory_read), // Habilita leitura na mem\u00f3ria - 1 bit\n .memory_write(memory_write), // Habilita escrita na mem\u00f3ria - 1 bit\n .write_data(write_data), // Valores saindo do core - 32 bits\n .read_data(read_data), // Valores vindo da mem\u00f3ria - 32 bits\n .address(address), // Endere\u00e7o de mem\u00f3ria - 32 bits\n .option(option) // Formato a ser lido da mem\u00f3ria - 3 bits\n);\n
"},{"location":"core/#maquina-de-estados-da-unidade-de-controle-e-esquematico","title":"Maquina de estados da unidade de controle e Esquem\u00e1tico","text":"Vers\u00e3o PDF dos diagramas Maquina de estados da unidade de controle
Esquem\u00e1tico do processador
"},{"location":"core/#maquina-de-estados-da-unidade-de-controle","title":"Maquina de estados da unidade de controle","text":""},{"location":"core/#esquematico-do-processador","title":"Esquem\u00e1tico do processador","text":"Esquem\u00e1tico atual
Esquem\u00e1tico Inicial
"},{"location":"get_started/","title":"Iniciando com o Risco-5","text":""},{"location":"get_started/#testes-simulacao","title":"Testes / Simula\u00e7\u00e3o","text":"O diret\u00f3rio \"testes\" cont\u00e9m alguns testes para os m\u00f3dulos do projeto. Esses testes foram desenvolvidos para serem utilizados com o Iverilog. Para executar os testes, basta utilizar o Iverilog e o VVP, como mostrado no exemplo abaixo:
iverilog -o build/core_test.o -s core_tb src/core/* src/peripheral/memory.v tests/core_test.v\nvvp build/core_test.o\n
Para facilitar a execu\u00e7\u00e3o dos testes, \u00e9 poss\u00edvel utilizar o script \"run_test\" dispon\u00edvel na raiz do projeto. Ao executar esse script, ele solicitar\u00e1 o nome do teste e o nome de um dos arquivos de teste em assembly dispon\u00edveis no diret\u00f3rio \"software/code/\". Como resultado, ser\u00e1 gerado um arquivo \"soc.vcd\" em \"build/\" que pode ser analisado atrav\u00e9s do GTKWave.
"},{"location":"get_started/#requisitos","title":"Requisitos:","text":"Essas depend\u00eancias podem ser obtidas atrav\u00e9s do oss cad suite ou podem ser instaladas manualmente de forma individual.
"},{"location":"get_started/#fpga","title":"FPGA","text":"O projeto oferece suporte a testes em algumas FPGAs, listadas abaixo:
Os exemplos est\u00e3o dispon\u00edveis no diret\u00f3rio \"FPGA\". Para as FPGAs Sipeed (Tangnano 9k e 20k), os exemplos foram desenvolvidos utilizando a IDE Gowin. Para as FPGAs Lattice/ColorLight, os exemplos foram desenvolvidos utilizando o Yosys + NextPNR e podem ser sintetizados e programados utilizando o makefile dispon\u00edvel nos diret\u00f3rios. Para as FPGAs Xilinx, foi utilizado o Vivado, e os exemplos podem ser utilizados tamb\u00e9m utilizando o makefile dispon\u00edvel no diret\u00f3rio.
"},{"location":"get_started/#requisitos_1","title":"Requisitos","text":"Gowin/Sipeed: Gowin EDA openFPGALoader
Geral: Pyserial ou VSCode Serial ou Minicom ou outro software capaz de utilizar serial
Acesse o diret\u00f3rio \"fpga/???\" com \"???\" sendo o nome da FPGA a ser utilizada, e execute o comando \"make\". Com isso, a s\u00edntese do projeto ser\u00e1 realizada. Para carregar o bitstream para a placa, utilize \"make flash\". Caso queira executar tudo de uma vez, use \"make run_all\".
"},{"location":"get_started/#feedback-da-fpga","title":"Feedback da FPGA","text":"Se tudo ocorrer bem, os LEDs da FPGA come\u00e7ar\u00e3o a piscar em um ritmo de contagem, e na serial come\u00e7ar\u00e1 a ser enviado um caractere ASCII. A serial opera com um baudrate padr\u00e3o de 115200 bps.
"},{"location":"soc/","title":"Risco-5 Processor SoC","text":""},{"location":"en/","title":"Risco 5 Documentation","text":""},{"location":"en/#risco-5","title":"Risco 5","text":"Risco 5 is an open-source processor core that implements the RV32I instruction set of the RISC-V architecture. It was developed for academic use and as the main core in small SoCs. The project focuses on facilitating integration and usage, offering a simplified and efficient architecture for various applications.
"},{"location":"en/#available-resources","title":"Available Resources","text":""},{"location":"en/#risco-5-core","title":"Risco-5 Core","text":"A RISC-V processor core implementing the RV32I of RISC-V.
"},{"location":"en/#risco-5-soc","title":"Risco-5 SoC","text":"An SoC with the Risco-5 core containing memory and peripherals such as GPIOs and UART.
"},{"location":"en/#risco-5-tests","title":"Risco-5 Tests","text":"Tests written in RISC-V assembly for validating the Risco 5.
"},{"location":"en/about/","title":"About Risco-5","text":""},{"location":"en/about/#project-origin","title":"Project Origin","text":"The project began as a summer project aimed at developing a RISC-V core for learning purposes. Initially, a single-cycle version, named Pequeno Risco-5, was developed. The project quickly evolved into a multi-cycle version shortly after its inception.
This project was encouraged by Professor Rodolfo Azevedo from the Institute of Computing at UNICAMP, who suggested the construction of a single-cycle RISC-V processor and later a multi-cycle RISC-V. He also provided the first FPGAs used for testing and assisted with technical questions.
"},{"location":"en/about/#name","title":"Name","text":"The name Risco-5 is a play on the name RISC-V, the architecture it implements, but it can also suggest something risky.
"},{"location":"en/about/#risco-5-family","title":"Risco-5 Family:","text":"Risco-5 was designed by Julio Nunes Avelar and is available for free use under the licenses listed below.
Logo author: Mateus Luck
"},{"location":"en/about/#licenses","title":"Licenses","text":"Hardware License: CERN-OHL-P-2.0
Software License: MIT
Documentation License: CC BY-SA 4.0
"},{"location":"en/contributing/","title":"Contributing to the Project","text":"Thank you for considering contributing to the Project! We are happy to welcome contributions from anyone interested in improving this project. Before you start, please read this guide to understand how you can contribute effectively.
"},{"location":"en/contributing/#how-to-contribute","title":"How to Contribute","text":"Fork the Repository: First, fork this repository to your own account.
Clone the Repository: Clone the forked repository to your local development environment.
bash git clone https://github.com/JN513/Risco-5.git
bash git checkout -b my-contribution
Make Changes: Make the necessary changes to the code.
Test Changes: Ensure that your changes do not cause issues in the project. Run relevant tests if applicable.
Commit and Push: Commit your changes and push them to your forked repository.
bash git commit -m \"Added a new feature\" git push origin my-contribution
Create a Pull Request: Open a Pull Request (PR) to the main branch of the original project. Be sure to clearly describe the changes you made and provide relevant information.
Review and Discussion: The project team will review your PR and may request changes or clarifications. Be prepared to collaborate and adjust your code as needed.
Approval and Merge: After a successful review and approval by the team, your PR will be merged into the main project.
Celebrate: Congratulations! Your contribution has been successfully merged.
By contributing to this project, you agree that your contributions will be licensed under the same license as the project. Read the license for more details.
"},{"location":"en/core/#introduction","title":"Introduction","text":"Risco-5 is a 32-bit RISC-V core that implements the basic instruction set of the RISC-V RV32I. Risco-5 is a multi-cycle, in-order processor without a pipeline. It was designed to be simple and easy to use, making it useful in various systems.
"},{"location":"en/core/#source-files","title":"Source Files","text":"The Risco-5 files are available in the \"core/\" folder within the \"src/\" directory, with the top module located in the core.v file.
"},{"location":"en/core/#parameters","title":"Parameters","text":"Name Size Description BOOT_ADDRESS 32 bits Boot address"},{"location":"en/core/#signals","title":"Signals","text":"Name Direction Size Description clk input 1 bit Clock signal halt input 1 bit Halts the processor execution reset input 1 bit Reset signal memory_response input 1 bit Memory bus response; the core waits until it is 1 memory_read output 1 bit Enables memory read memory_write output 1 bit Enables memory write write_data output 32 bits Values exiting the core read_data input 32 bits Values coming from memory address output 32 bits Memory address option output 3 bits Format to be read from memory"},{"location":"en/core/#instance-example","title":"Instance Example","text":"Below is an example of how to instantiate the Risco-5 core in a Verilog module:
Core #(\n .BOOT_ADDRESS(32'h00000000) // Boot address - 32 bits\n) Core_inst (\n /* control */\n .clk(clk), // Clock signal - 1 bit\n .halt(halt), // Halts the processor execution - 1 bit\n .reset(reset), // Reset signal - 1 bit\n /* Data */\n .memory_response(memory_response), // Memory bus response, the core waits until it is 1 - 1 bit\n .memory_read(memory_read), // Enables memory read - 1 bit\n .memory_write(memory_write), // Enables memory write - 1 bit\n .write_data(write_data), // Values exiting the core - 32 bits\n .read_data(read_data), // Values coming from memory - 32 bits\n .address(address), // Memory address - 32 bits\n .option(option) // Format to be read from memory - 3 bits\n);\n
"},{"location":"en/core/#control-unit-state-machine-and-schematic","title":"Control Unit State Machine and Schematic","text":"PDF Version of the Diagrams Control Unit State Machine
Processor Schematic
"},{"location":"en/core/#control-unit-state-machine","title":"Control Unit State Machine","text":""},{"location":"en/core/#processor-schematic","title":"Processor Schematic","text":"Current Schematic
Initial Schematic
"},{"location":"en/get_started/","title":"Getting Started with Risco-5","text":""},{"location":"en/get_started/#tests-simulation","title":"Tests / Simulation","text":"The \"tests\" directory contains some tests for the project modules. These tests were developed to be used with Iverilog. To run the tests, simply use Iverilog and VVP as shown in the example below:
iverilog -o build/core_test.o -s core_tb src/core/* src/peripheral/memory.v tests/core_test.v\nvvp build/core_test.o\n
To facilitate running the tests, you can use the \"run_test\" script available at the root of the project. When running this script, it will prompt for the name of the test and the name of one of the assembly test files available in the \"software/code/\" directory. As a result, a \"soc.vcd\" file will be generated in \"build/\" which can be analyzed using GTKWave.
"},{"location":"en/get_started/#requirements","title":"Requirements:","text":"These dependencies can be obtained through the oss cad suite or can be installed individually.
"},{"location":"en/get_started/#fpga","title":"FPGA","text":"The project supports testing on several FPGAs, listed below:
Examples are available in the \"FPGA\" directory. For Sipeed FPGAs (Tangnano 9k and 20k), the examples were developed using the Gowin IDE. For Lattice/ColorLight FPGAs, the examples were developed using Yosys + NextPNR and can be synthesized and programmed using the makefile available in the directories. For Xilinx FPGAs, Vivado was used, and the examples can also be utilized using the makefile available in the directory.
"},{"location":"en/get_started/#requirements_1","title":"Requirements","text":"Gowin/Sipeed:
General:
Navigate to the \"fpga/???\" directory, with \"???\" being the name of the FPGA to be used, and run the command \"make\". This will perform the project synthesis. To load the bitstream onto the board, use \"make flash\". If you want to do everything at once, use \"make run_all\".
"},{"location":"en/get_started/#fpga-feedback","title":"FPGA Feedback","text":"If everything goes well, the FPGA LEDs will start blinking in a counting rhythm, and an ASCII character will begin to be sent over the serial connection. The serial operates at a standard baud rate of 115200 bps.
"}]} \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz index cc619cfe21d4a6e68fab879a068a4ec30d10f808..296079abeb3aad1cb2199612614037269b7ef370 100644 GIT binary patch delta 14 VcmaFO{F<3nzMF$XZzJn7MgSwj1ZMyM delta 14 VcmaFO{F<3nzMF%CVI%7^MgSt+1UUcz