# FPGA based MCU Design **Repository Path**: lanzhoo/fpga-based-mcu-design ## Basic Information - **Project Name**: FPGA based MCU Design - **Description**: 使用Verilog语言设计RISC-V MCU的入门引导,提供了若干简单的MCU原型,自编简单step-by-step RISC-V Core,基于高云FPGA芯片(9k&20k),软件程序使用MounRiver IDE及gcc toolchain开发,OpenOCD下载。 - **Primary Language**: Verilog - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-09-27 - **Last Updated**: 2025-09-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FPGA based MCU Design ## 简介 使用Verilog语言设计RISC-V MCU的入门引导,提供了若干简单的MCU原型,自编简单step-by-step RISC-V Core,基于高云FPGA芯片(9k&20k),软件程序使用MounRiver IDE及gcc toolchain开发,OpenOCD下载。 ### MCU原型简介 #### 内核版本 zh_core_v01.v:支持运算指令、跳转指令、LOAD/STORE指令。 zh_core_v011.v:zh_core_v01.v的基础上,增加halt端口。 zh_core_v02.v:支持运算指令、跳转指令、LOAD/STORE指令、CSR指令、MRET指令。包含halt端口和外部中断端口;支持中断和中断CSR、定时器CSR和软件中断CSR; #### 存储器版本 zh_rom_async_v01.v:单口ROM,静态异步读。通过代码文件设置初始化内容(32bit/地址单元)。 zh_dprom_async_v01.v:双口ROM,静态异步读。双只读端口。通过代码文件设置初始化内容(8bit/地址单元)。 zh_dprom_v01.v:双口ROM,同步读。双只读端口。通过代码文件设置初始化内容(8bit/地址单元)。 zh_dprom_v02.v:双口ROM,同步读写。端口A为只读端口,端口B为读写端口。端口B的地址锁存时钟与写时钟分开。不带wmask。通过代码文件设置初始化内容(8bit/地址单元)。 zh_sram_async_v01.v:RAM,静态异步读,同步写。带wmask。 zh_sram_v01.v:RAM,同步读写。地址锁存时钟与写时钟分开。带wmask。 #### MCU原型版本 9k_mcu01_mycore01:zh_core_v01;zh_dprom_async_v01,zh_sram_async_v01;不支持中断;无JTAG;27MHz; 9k_mcu01a_mycore01:zh_core_v01;zh_dprom_v01,zh_sram_v01;不支持中断;无JTAG;32MHz; 9k_mcu02_mycore01:zh_core_v011;zh_dprom_v02,zh_sram_v01;不支持中断;带JTAG;16MHz; 9k_mcu02_mycore02:zh_core_v02;zh_dprom_v02,zh_sram_v01;支持中断;带JTAG;16MHz; #### Step-By-Step Core设计演示版本(无外设) 9k_mycore_v001:仅支持2条指令的Core;静态异步ROM(zh_rom_async_v01);led接Core x16; 9k_mycore_v002:v001基础上,支持所有运算指令和跳转指令; 9k_mycore_v003:v002基础上,增加RAM和LOAD/STORE指令;单口ROM改为双口ROM(zh_dprom_async_v01);zh_sram_async_v01; ### 学习指引 教程主要分三大部分: 1. 怎样使用MCU原型进行编程; 2. 怎样设计外设; 3. 怎样逐步设计Core; (待续)