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

OSCHINA-MIRROR/liangkangnan-tinyriscv

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

Перевод текста на русский язык:

Данный проект в настоящее время имеет три ветви: master, bram и verilator, которые соответствуют уровням входа, перехода и высокого уровня. Каждый может выбрать в соответствии со своими обстоятельствами.

Этот проект постоянно обновляется, ветвь verilator всё ещё находится в разработке. Если однажды она перестанет обновляться, я обязательно сообщу об этом.

Если у вас есть вопросы или предложения по этому проекту, пожалуйста, свяжитесь со мной по электронной почте.

Сопутствующая документация по дизайну находится в каталоге doc (в настоящее время не завершена).

1. Мотивы

Мотивом для создания этого открытого исходного проекта было моё желание изучить RISC-V, ознакомиться с содержанием инструкций и синтаксисом ассемблера RISC-V.

Я очень заинтересован в RISC-V и считаю, что у него большое будущее. Я думаю, что RISC-V — это как Linux для процессоров. Поскольку RISC-V начал быстро развиваться только в последние два года, существует относительно мало учебных материалов, особенно подходящих для начинающих. Поэтому изучение идёт медленно, и у меня возникла идея самостоятельно написать ядро процессора RISC-V с нуля.

Я новичок в FPGA, и чтобы быстро войти в курс дела и глубоко понять RISC-V, я начал изучать FPGA и Verilog. Моя работа связана с встраиваемым программным обеспечением, и я обычно не имею дело с FPGA или RISC-V, поэтому могу учиться только в свободное время.

В интернете есть много открытых проектов, посвящённых RISC-V, но большинство из них написано очень сложно, и для таких новичков, как я, изучение становится очень трудным. Текущий объём кода в этом проекте невелик, он очень прост и понятен, и является хорошим справочным материалом для тех, кто хочет изучить RISC-V. Надеюсь, он сможет привлечь больше людей к изучению RISC-V и способствовать его развитию. Если он сможет сыграть роль «брошенного камня», который вызовет цепную реакцию, это будет ещё лучше. Возможно, сравнение с камнем немного преувеличено, но даже если он сыграет роль песчинки, этого будет достаточно.

2. Введение

Проект реализует одноядерное 32-битное миниатюрное ядро процессора RISC-V (tinyriscv), написанное на языке Verilog. Цель проектирования — соответствовать процессору ARM Cortex-M3. Tinyriscv имеет следующие особенности:

  1. Поддержка набора инструкций RV32IM через тестирование совместимости инструкций RISC-V;
  2. Использование трёхступенчатого конвейера, состоящего из выборки, декодирования и выполнения;
  3. Может запускать программы на C;
  4. Поддерживает JTAG, можно использовать openocd для чтения и записи памяти (онлайн-обновление программы);
  5. Поддерживает прерывания;
  6. Поддерживает шину;
  7. Поддерживает FreeRTOS;
  8. Поддерживает обновление программы через последовательный порт;
  9. Легко переносится на любую платформу FPGA (при достаточных ресурсах);

Каталог rtl содержит все исходные файлы Verilog для tinyriscv;

Каталог sim содержит файлы пакетной обработки bat и сценарии для моделирования;

Каталог tests содержит исходный код тестовых программ, включая каталог example для исходных кодов программ на языке C и каталог isa для исходного кода тестирования инструкций RV32;

Каталог tools содержит компиляторы, ассемблеры и инструменты GNU для программ на C, а также скрипты для преобразования двоичных файлов в формат файлов для моделирования и скрипты для загрузки программ через последовательный порт.

Каталог pic содержит изображения;

Каталог tb содержит файлы testbench;

Каталог fpga содержит файлы, связанные с FPGA, такие как файлы ограничений.

Общая структура tinyriscv выглядит следующим образом:

Tinyriscv в настоящее время поддерживает шесть внешних устройств, каждое из которых имеет размер 256 МБ, а распределение адресного пространства выглядит следующим образом:

3. Тест CoreMark

На платформе Xilinx Artix-7 35T FPGA (тактовая частота 50 МГц) tinyriscv выполняет тест CoreMark, результаты которого выглядят следующим образом:

Можно видеть, что результат теста tinyriscv составляет 2,4.

Были выбраны несколько других микроконтроллеров, и результаты их тестов CoreMark выглядят следующим образом:

Больше результатов тестов микроконтроллеров можно найти на официальном сайте CoreMark.

4. Как использовать

Этот проект может работать на платформах Windows и Linux (теоретически также возможно на macOS), а инструментами для компиляции и моделирования являются iverilog и vpp. Инструмент для просмотра формы волны — gtkwave.

4.1 Настройка среды на платформе Windows

Перед использованием необходимо установить следующие инструменты:

  1. Установите инструмент iverilog.

Его можно загрузить с сайта http://bleyer.org/icarus/, во время установки убедитесь, что iverilog добавлен в переменную окружения. Конечно, вы также можете добавить его вручную после установки. После установки iverilog, vvp и gtkwave также будут установлены.

  1. Установите набор инструментов GNU.

Вы можете скачать его с Baidu Cloud (ссылка: https://pan.baidu.com/s/1bYgslKxHMjtiZtIPsB2caQ, пароль: 9n3c) или с Weiyun (https://share.weiyun.com/5bMOsu9), после завершения загрузки распакуйте сжатый пакет в каталог tools этого проекта. Обратите внимание на структуру каталогов, после распаковки путь инструмента должен быть следующим:

tinyriscv\tools\gnu-mcu-eclipse-riscv-none-gcc-8.2.0-2.2-20190521-0004-win64\bin\riscv-none-embed-gcc

  1. Установите make.

Вы можете загрузить его с Baidu Cloud (ссылка: https://pan.baidu.com/s/1nFaUIwv171PDXuF7TziDFg, пароль: 9ntc) или с Weiyun (https://share.weiyun.com/59xtmWR), после завершения загрузки просто распакуйте его, затем добавьте путь make в переменную среды.

  1. Установите python3.

Перейдите на официальный сайт Python (https://www.python.org/) и загрузите версию Python для Windows. Обратите внимание, что вам нужно загрузить версию Python 3. Пользователи с медленным интернет-соединением могут загрузить её с Baidu Cloud (ссылка: https://pan.baidu.com/s/1gNC8L5dZTsN6E5TJD2rmnQ, пароль: 3b4t) или Weiyun (https://share.weiyun.com/XwzSQHND). После завершения установки добавьте Python в переменную среды.

  1. Загрузите код tinyriscv.

Используйте команду git clone для загрузки, не используйте метод zip для загрузки, иначе некоторые файлы будут иметь проблемы с форматом.

git clone https://gitee.com/liangkangnan/tinyriscv.git

4.2 Настройка среды на платформе Linux

Здесь в качестве примера используется система Ubuntu.

  1. Загрузите исходный код iverilog.

git clone https://github.com/steveicarus/iverilog.git

  1. Переключитесь на ветку v11 (необходимо использовать V11 или выше).

git checkout v11-branch

  1. Установите зависимости.

sudo apt-get install autoconf gperf flex bison build-essential

  1. Скомпилируйте, установите iverilog и vvp.
sh autoconf.sh
./configure
make
make install
  1. Создайте мягкую ссылку на python.

sudo ln -s /usr/bin/python3.8 /usr/bin/python

Где /usr/bin/python3.8 соответствует фактически установленному вами питону.

  1. Установите gtkwave.

sudo apt-get install gtkwave

  1. Установите набор инструментов GNU.

Вы можете загрузить его из Baidu Cloud (ссылка: https://pan.baidu.com/s/10uLZYf_cgtH94kZI_N6JhQ, пароль: uk0w) или загрузить другую версию самостоятельно. После загрузки распакуйте её в каталог tools.

Наконец, убедитесь, что содержимое файла tests/example/common.mk соответствует установленному набору инструментов.

4.3 Запуск командных тестовых программ

Здесь в качестве примера рассматривается платформа Windows, платформа Linux аналогична.

4.3.1 Запуск старых командных тестовых программ

Старые командные тестовые программы представляют собой более ранний метод тестирования совместимости команд, хотя RISC-V официально больше не обновляется, они по-прежнему являются хорошим эталоном для тестирования.

Далее в качестве примера рассмотрим инструкцию add, объясним, как запустить старую командную тестовую программу.

Откройте окно CMD, перейдите в каталог sim и выполните следующую команду:

python .\sim_new_nowave.py ..\tests\isa\generated\rv32ui-p-add.bin inst.data

Если запуск пройдёт успешно, вы увидите вывод «PASS». Для других инструкций используйте аналогичный метод.

Также можно одновременно протестировать все инструкции, выполнив следующие действия.

Откройте окно CMD и перейдите в каталог sim, выполните следующую команду:

python .\test_all_isa.py

4.3.2 Запуск новых командных тестовых программ

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

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

Введение

Одно ядро процессора RISC-V, написанное с нуля и очень простое для понимания. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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