1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dengchow-yuheng-riscv-soc

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

14:28 2023/7/2

〇、Предисловие

Юйхэн — самая яркая звезда в созвездии Большой Медведицы.

1. Введение

Данный проект направлен на изучение архитектуры RISC-V ядра и разработку собственного RISC-V ядра с последующей интеграцией в систему на кристалле (SoC).

2. Описание функций

1. Среда

— Ядро и периферийные устройства: YuHeng 5-state RISC-V Core. — Компилятор для программного обеспечения: GNU MCU Eclipse RISC-V Embedded GCC, 64-bit (gcc version 8.2.0). — Среда моделирования: VCS + DVE/Veridi.

Обратите внимание, что при определении макроса PRINT_STDIO_SIM необходимо использовать регистр mscratchcswl для перенаправления xprintf. Для этого требуется поддержка компилятора. Можно использовать версию gcc riscv64-elf-x86_64-20210307 от T-Head.

2. Распределение адресов

Начальный адрес Конечный адрес Размер Периферийное устройство Поддержка
0x0000_0000 0x0fff_ffff 32K ROM
0x1000_0000 0x1fff_ffff 32K RAM
0x2000_0000 0x2fff_ffff 256M TIMER1
0x3000_0000 0x3fff_ffff 256M UART1
0x4000_0000 0x4fff_ffff 256M UART2
0x5000_0000 0x5fff_ffff 256M UART3
0x6000_0000 0x6fff_ffff 256M × ×

Фактический размер пространства можно найти в файле link.lds.

3. Использование

Проект имеет четыре ветви:

— master — моделирование в среде VCS. — iverilog — моделирование в среде iverilog. — fpga — платформа Xilinx FPGA. — gowin — платформа Gowin FPGA.

Между различными ветвями существуют незначительные различия, которые адаптированы к различным платформам. Не рекомендуется использовать их совместно.

1. Тестовые примеры

sim
├── build.mk        // make команда
├── config.mk       // make параметры конфигурации
├── coremark        // #1
├── iap             //   #2
├── iap_app         //     #3
├── iap_boot        //     #3
├── rtthread-nano   // #1
├── simple          // #1
├── systick         // #1
├── timer           // #1
├── uart_rxd        // #1
├── uart_txd        // #1
└── xprintf         // #1

Примечание:

  #1, эти тестовые примеры запускаются с адреса 0.
  #2, имитация iap, приложение как c-array вместе с загрузочной программой.
  #3, имитация iap, iap_app предоставляет пример приложения, iap_boot предоставляет пример загрузочной программы, компилируются отдельно.

2. Изменение пути к инструментам компиляции

VCS и DVE/Veridi уже добавлены в переменные среды, дополнительная настройка не требуется.

Необходимо только изменить путь к инструментам тестирования программ (путь к файлу: sim/config.mk).

EMBTOOLPATH = /home/crazy/Tools/compiler/xuantie/v8.4.0/riscv64-elf-x86_64-20210307
EMBTOOLPREFIX = ${EMBTOOLPATH}/bin/riscv64-unknown-elf

3. Компиляция тестовых программ

1. Пример теста 1

coremark
rtthread-nano
simple
systick
timer
uart_rxd
uart_txd
xprintf
  1. Перейдите в каталог соответствующего примера теста (например, simple).

Измените Makefile, чтобы изменить параметры компиляции. Если определён макрос PRINT_STDIO_SIM, используйте регистр csr для перенаправления xprintf, моделирование выполняется быстрее. В противном случае используйте uart1 для перенаправления xprintf.

CFLAGS         += -O0 -ffunction-sections -fdata-sections
#CFLAGS         += -g
CFLAGS         += -DPRINT_STDIO_SIM
  1. Скомпилируйте и запустите.
make build
make compile
make sim

Эквивалентно: make run

После выполнения команды make sim результаты моделирования следующие:

ic-design@bash:simple>make sim
[INFO] simulate ...
Chronologic VCS simulator copyright 1991-2014
Contains Synopsys proprietary information.
Compiler version I-2014.03_Full64; Runtime version I-2014.03_Full64;  Jun 22 15:23 2023
VCD+ Writer I-2014.03_Full64 Copyright (c) 1991-2014 by Synopsys Inc.
[    117140] UART: add:  1+2+..+100 =  5050, expect:  5050
[    224720] UART: sub: -1-2-..-100 = -5050, expect: -5050
[    303640] UART: mul:  1*2*..*8   = 40320, expect: 40320
[    358340] UART: div:  495, expect: 495
[    359680] DEBG: SIMULATION END.
$finish called from file "../../tb/core_data_monitor_tb.v", line 51.
$finish at simulation time            359680000
           V C S   S i m u l a t i o n   R e p o r t 
Time: 359680000 ps
CPU Time:      1.580 seconds;       Data structure size:   0.2Mb
Thu Jun 22 15:24:03 2023
[INFO] execute done
  1. Просмотрите форму сигнала.
make wave

2. Пример теста 2

iap

Этот пример теста используется для имитации iap и приложения как c-массива вместе с загрузочным приложением.

Перейдите в каталог iap и выполните следующие команды по очереди.

make build_app
make build
make compile
make sim

Эквивалент: make build_app && make run

Результаты моделирования после выполнения команды make sim следующие:

ic-design@bash:iap>make sim
[INFO] simulate ...
Chronologic VCS simulator copyright 1991-2014
Contains Synopsys proprietary information.
Compiler version I-2014.03_Full64; Runtime version I-2014.03_Full64;  Jun 22 15:23 2023
VCD+ Writer I-2014.03_Full64 Copyright (c) 1991-2014 by Synopsys Inc.
[    135180] UART: load iap file...
[    502100] UART: load finished.
[    531100] UART: jump to 00001000
[    551780] UART: app start.
[    571560] UART: hello, yu.heng!
[    572900] DEBG: SIMULATION END.
$finish called from file "../../tb/core_data_monitor_tb.v", line 51.
$finish at simulation time            572900000
           V C S   S i m u l a t i o n   R e p o р t 
Time: 572900000 ps
CPU Time:      1.940 seconds;       Data structure size:   0.2Mb
Thu Jun 22 15:23:10 2023
[INFO] execute done
``` **Нужно обратить внимание, пожалуйста, обратитесь к файлу lds для определения размера программных файлов, по умолчанию: boot-16KB/app-4KB.**

#### 3. Тестовый случай 3

iap_app iap_boot


Этот тестовый случай используется для имитации iap, iap_app предоставляет пример приложения, iap_boot предоставляет загрузочный пример, компилируется отдельно.

1. Войдите в каталог `iap_app`, последовательно выполните следующие команды:

make build_app


2. Войдите в каталог `iap_boot`, последовательно выполните следующие команды:

make build_app make build make compile make sim


Эти команды эквивалентны команде `make build_app && make run`.

Ниже приведены результаты моделирования после выполнения команды `make sim` (моделирование занимает много времени):

ic-design@bash:iap_boot>make sim
[INFO] simulate ...
Chronologic VCS simulator copyright 1991-2014
Contains Synopsys proprietary information.
Compiler version I-2014.03_Full64; Runtime version I-2014.03_Full64;  Jun 22 15:30 2023
VCD+ Writer I-2014.03_Full64 Copyright (c) 1991-2014 by Synopsys Inc.
[     26760] UART: recv bin file...
[ 572420680] UART: recv bin file finished.
[ 572446380] UART: hello, yu.heng!
[ 572447720] DEBG: SIMULATION END.
$finish called from file "../../tb/core_data_monitor_tb.v", line 51.
$finish at simulation time         572447720000
           V C S   S i m u l a t i o n   R e p o r t 
Time: 572447720000 ps
CPU Time:    447.050 seconds;       Data structure size:   0.2Mb
Thu Jun 22 15:38:32 2023
[INFO] execute done
## Четыре. Благодарности

В процессе проектирования Юйхэн (YuHeng) я ссылался и вдохновлялся многими замечательными проектами с открытым исходным кодом.

## Пять. Журнал изменений

- v3.1_vcs  
  - Протестированы все тестовые случаи в каталоге sim (2023/7/2, 14:28).  

- v3.0  
  - Рефакторинг кода (2023/6/14, 13:08).  

- v2.0  
  - Унификация структуры файлов нескольких проектов (2022/4/5, 11:45).  

- v1.0  
  - Создание проекта и интеграция тестирования (2022/4/4, 18:05).  

## Шесть. Поддержка

Если у вас есть какие-либо вопросы или предложения, вы можете оставить комментарий ниже или связаться со мной по электронной почте (E-mail:ytesliang@163.com), и я постараюсь ответить в течение 24 часов.

ATONEMAN  
2022.07.02

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Юйхэн — это процессор с RISC-V ядром, написанный с нуля. Он реализован на языке аппаратного проектирования Verilog. Процессор имеет пятиуровневую конвейерную архитектуру. Поддерживает набор инструкций RV32IM. Имеет возможность обработки прерываний. Работает под управлением RT-Thread Nano 3.1.5. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/dengchow-yuheng-riscv-soc.git
git@api.gitlife.ru:oschina-mirror/dengchow-yuheng-riscv-soc.git
oschina-mirror
dengchow-yuheng-riscv-soc
dengchow-yuheng-riscv-soc
master