From 6a622194160f6d982ea9ca30adff48bbef517681 Mon Sep 17 00:00:00 2001 From: AndrejChoo <97045273+AndrejChoo@users.noreply.github.com> Date: Wed, 20 Sep 2023 10:28:20 +0300 Subject: [PATCH] Update README.MD --- README.MD | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.MD b/README.MD index 733266b..5b6587a 100644 --- a/README.MD +++ b/README.MD @@ -15,6 +15,13 @@ TIMER0: функционально идентичен оригиналу. Работа ядра была опробована на Altera CycloneIV и Xilinx Spartan6. Также на начальных этапах проверялось на GOWIN, но ближе к финальной версии на данной платформе ядро просто перестало работать, долго не стал разбираться, почему. Так как другие мои крупные проекты, отлаженные на Альтере, также некорректно работали на Gowin. Видимо, эта китайская платформа ещё сыровата. В общем, весь проект, включая ядро, периферию, прерывания, а также дополнительно динамическую индикацию для отладки занял после всех возможных (для меня) оптимизаций - 5740 ячеек LUT4 (Altera), 2920 ячеек LUT5 (Xilinx, не уверен, что это корректная цифра). Не знаю, много это или нет? +Структура проекта очень проста: +soft_avr_top.v - модуль верхнего уровня, в нём в основном расположены все соединения между модулями, внешне порты, а также делитель входной частоты. +core.sv - основной модуль, где распололожено само ядро. +io.sv - модуль, где расположена вся периферия, общается с модулем core с помощью шин данных, адреса и линий чтения/записи IODIN,IODOUT,IOCNT,IOW,IOR. +params.sv - файл с основными настройками ядра (размер ROM,RAM, включение/выключение компиляции команд и прерываний для эконосии ресурсов ПЛИС). +din7seg.v - дополнительный модуль для подключения динамической индикации к линиям ядра для отладки (отключактся макросом в TOP модуле). + Для успешной компиляции проекта необходимо создать модули памяти DUAL PORT ROM с разрядностью шины данных 16 бит и соответствующим количеством ячеек памяти (4096 для Atmega8), DUAL PORT RAM с разрядностью шины данных 8 бит и соответствующим количеством ячеек памяти (1024 для Atmega8). Особенность для Altera: при создании обоих модулей памяти выбирать раздельный CLOCK на каналы A и B, убрать защёлки с выходных шин данных. Особенности для Xilinx: при создании модуля RAM выбирать TRUE DUAL PORT RAM. Прошивка микроконтроллера зашивается на стадии компиляции проекта при создании модулей DUAL PORT ROM (указывается файл инициализации памяти: *.mif для Altera, *.coe для Xilinx). Для создания файлов инициализации, я написал свой конвертер (расположен в папке software): для создания файла выбираем HEX прошивки, устанаыливаем галочку на соответствующий вид ПЛИС, выбираем ширину шины 16 бит и соответствующий размер прошивки (в 16 битных словах, т.е. 4096 для Atmega8) и нажимаем кнопку "Конвертировать", сохраняем полученный файл с правильным расширением.