Skip to content

Educational project for the development of a SoC based on a processor with RISC-V architecture

License

Notifications You must be signed in to change notification settings

alexmangushev/EduSoCRV

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Учебная система на кристалле

Общее описание

Система состоит из ряда модулей, написанных на языке SystemVerilog и реализует простую систему на кристалле (SoC) микроконтроллерного класса. Программма сохраняется на внешнем носителе и после подачи питания переносится в ОЗУ, после чего начинает выполняться. Предполагается запуск как в симуляторе(Modelsim), так и на FPGA (Altera DE2-115)

Общая схема модуля

Разрабатываемые компоненты:

  • UART - модуль приемопередатчика UART
  • GPIO - модуль для управления портами ввода-вывода
  • RAM - контроллер оперативной памяти
  • ROM - контроллер ПЗУ, содержащей начальный загрузчик
  • Flash - контролллер памяти, которая содержит исполняемую программу

Карта памяти

Диапазон Описание
0x8000_0000 - 0x8fff_ffff Основная память (RAM)
0x9000_0000 - 0x90ff_ffff ROM память
0x9100_0000 - 0x91ff_ffff Flash память
0x9200_0000 - 0x92ff_ffff Периферия - UART
0x9300_0000 - 0x93ff_ffff Периферия - GPIO

Регистры блока UART

Адрес Имя Описание
0x9200_0000 UART_CONTROL [RW] UART Configuration Register
0x9200_0004 UART_STATUS [R] UART Status Register
0x9200_0008 UART_RX [R] UART Data Register
0x9200_000C UART_TX [W] UART Data Register

Схема блока

Регистры блока GPIO

Адрес Имя Описание
0x9300_0000 GPIO_DIRECTION [RW] Configuration Register
0x9300_0004 GPIO_INPUT [R] GPIO Input Status
0x9300_0008 GPIO_OUTPUT [RW] GPIO Output Control

Схема блока

ROM controller

Схема блока

RISC-V ядро

Общее описание

Однотактное процессорное ядро на архитектуре RISC-V.

Поддерживаемые команды: ADD, SUB, SLL, SRL, SRA, SLT, SLTU, XOR, OR, AND, ADDI, SLLI, SRLI, SRAI, SLTI, SLTIU, XORI, ORI, ANDI, LUI, BEQ, BNE, BLT, BGE, BLTU, BGEU, LB, LBU, LH, LHU, LW, SB, SH, SW

Ядро подключается к памяти через интерфейс AXI4-lite по двум шинам: INSTR и DATA. INSTR шина использует каналы AXI, предназначенные для чтения, которые в top модуле rtl\core\soc_riscv_core.sv имеют названия core_instr_.... DATA шина использует каналы AXI, предназначенные как для чтения так и для записи, которые в top модуле rtl\core\soc_riscv_core.sv имеют названия core_data_....
Каналы интерфейса тактируются на той же частоте, что и ядро.

Симуляция

Вы можете провести симуляцию ядра с использованием ModelSim и cocotb. Для этого требуется записать программу на hex коде RISC-V в файл sim\core\try_it\program.mem и запустить sim\core\try_it\run_test.py. При желании можно проинциализировать память с данными, записав значения в файл sim\core\try_it\memory.mem. В ModelSim рекомендуется запустить скрипт sim\core\try_it\soc_riscv_core_script.tcl.

Программа запишет состояние системы, характерезующеся значениями архитектурных регистров и основной памятью с данными в файлы sim\core\try_it\core_state. Файл sim\core\try_it\core_state\memory_list.mem содержит значения слов памяти. Файл sim\core\try_it\core_state\gpr_list.mem содержит значения архитектурных регистров.

About

Educational project for the development of a SoC based on a processor with RISC-V architecture

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •