Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

Запуск Verilog на микроконтроллере CH32V003 (ядро RISC-V) ( Аппаратная эмуляция ...

Дата публикации: 24-08-2026 19:37:09

Запуск Verilog на микроконтроллере CH32V003 (ядро RISC-V)
( Аппаратная эмуляция FPGA )
Это те самые 0,1-долларовые PLD, которые уже лежат у вас в ящике.
Превратите микроконтроллер CH32V003 в крошечную перепрограммируемую «связующую» микросхему.
Пишите логику малой плотности на Verilog или SystemVerilog, подавайте исходный код на вход bin/cli.js — и на выходе получите прошивку на C без рантайма, которая программно управляет выводами GPIO, эмулируя работу схемы. Это медленнее, чем настоящий PLD, но дёшево и гибко.
- - - - -
Как это работает?
1) Запускает Verilator с ключом —cc, чтобы преобразовать Verilog/SystemVerilog в C++.
2) Извлекает тело преобразованной логики (___ico_sequent__TOP__0).
3) Транслирует это тело в обычный C (без рантайма Verilator — он используется только для хост-среды и не собирается для голого железа rv32ec). Проекты с оператором case преобразуются в табличный просмотр с постоянным пулом констант, данные которого хранятся в отдельном файле V__ConstPool_.cpp; эти таблицы переписываются в виде статических константных массивов на чистом C, чтобы тело могло собираться автономно.
4) Оборачивает всё это в GPIO-прослойку: читает входные пины через GPIOx->INDR, вычисляет логику, записывает выходные пины через GPIOx->OUTDR.
5) Генерирует funconfig.h и Makefile, собирает прошивку и выполняет анализ таймингов по дизассемблированному коду.
- - - - -
Примеры:
| Пример | Функция | Исходник | Размер прошивки |
|--------|---------|----------|-----------------|
| 7400 | сдвоенный 2-входовой NAND (4 элемента) | top.v | 852 байт |
| 74x02 | сдвоенный 2-входовой NOR (4 элемента) | top.v | 828 байт |
| 74x04 | шестикратный инвертор (6 вентилей) | top.sv | 748 байт |
| 74x47 | дешифратор BCD → 7-сегментный индикатор | ic_74x47.v | ~1100 байт |
**74x47** — это первый пример, в котором используется оператор `case`: Verilator преобразует его в табличный просмотр с постоянным пулом констант, а `cli.js` транскрибирует этот пул в статический константный массив в `main.c` (см. шаг 3 выше).
В каждом каталоге примера есть `config.js`, исходник на Verilog, а также (после запуска `cli.js`) сгенерированные `main.c`, `funconfig.h` и `Makefile`. Размеры прошивки указаны ориентировочно — они зависят от версии ch32fun и инструментария.
- - - - -
Производительность
Две точки с осциллографа подтверждают модель медленного пути (Tslow = (количество инструкций + 1,6)/f + число обращений к MMIO · 0,1 мкс):
Тактовая частота Tslow (измерено) Tslow (по модели)
48 МГц (PLL) 0,4 мкс 0,40 мкс
24 МГц (HSI) 0,6 мкс 0,60 мкс
Ссылка:
https://github.com/wavedrom/cherepanov.git
Перевод выполнил ИИ [ai deepseek chat]

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1MIK32 Амур + PlatformIO: пошаговый гайд по настройке среды разработки на Windows011.2507-07-2026
2Учиться в МИФИ: Верификатор электроники должен знать и физику, и программирование06.8610-08-2026
3Двенадцать символов, двадцать один байт: как я научил голый RISC-V говорить «Привет, мир!»010.8101-08-2026
4Как мы ускоряли прошивку ESP (спойлер: совы не то, чем кажутся)09.6623-07-2026
5Сегодня ночью ShadPS4 присоединится к охоте — так начинается история ...-18.8527-08-2026
6MSP430G2453IRHB32R — это 32-контактный микроконтроллер смешанного RISC-архитектуры в сверхтонком корпусе ...017.612-08-2026
7[Benchmark] Radeon RX 460 (6.2.6)011.6421-06-2026
8C++ для STM32. Часть 1: организация пакетов данных для отправки по интерфейсам связи018.3227-07-2026
9Железный ключ к Secure Boot RK35xx09.3911-08-2026
10🧠 НЕЙРОМОРФНАЯ РЕВОЛЮЦИЯ: КАК МЫ ПЕРЕСОЗДАЁМ РАЗУМ ПОЛНОЕ РУКОВОДСТВО ПО ...5717-07-2026

Классификация: . Схожих патентов: 0. Схожих новостей: 10. Тональность: 0. Информативность: 10.76. Источник: vk.com.