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

OSCHINA-MIRROR/xiaowuzxc-Yduck-processor

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
系统结构.md 7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 4 месяцев назад 115f538

Структура процессора «Большая жёлтая утка»

Процессор «Большая жёлтая утка» использует гарвардскую архитектуру, в которой инструкции и данные передаются по разным шинам.

Ядро

Ядро процессора «Большая жёлтая утка» имеет 16-битную ширину для операций, адресов, инструкций и данных, а также 16 регистров. Инструкции и данные должны быть выровнены по двум байтам. Гарвардская архитектура разделяет адреса инструкций и данных. Реализовано отображение регистров ввода-вывода. Встроен контроллер прерываний, который может обрабатывать немаскируемые прерывания. Процессор поддерживает двойное выполнение, при котором две 8-битные инструкции могут выполняться параллельно. Существует двухуровневый конвейер, и если происходит переход, то необходимо заполнить два пустых такта.

Система прерываний

Система прерываний включает в себя контроллер прерываний YD_int.v и менеджер прерываний intc.v. Прерывания в процессоре «Большая жёлтая утка» являются немаскируемыми, и при возникновении прерывания программа переходит на адрес 0x0004, а следующий адрес инструкции исходной программы сохраняется в регистре RC. У процессора есть 8 каналов прерываний, каждый из которых можно настроить на срабатывание по высокому или низкому уровню, нарастающему или спадающему фронту сигнала. Можно настроить два уровня приоритета для каждого канала прерывания, и прерывания с одинаковым приоритетом будут обрабатываться в порядке поступления от младших каналов к старшим. После обработки прерывания номер канала записывается в регистр для идентификации источника прерывания программой.

Шина инструкций

Шина инструкций имеет ширину 16 бит для адреса и данных. Есть только одно ведущее устройство (ядро процессора) и одно ведомое устройство (память инструкций), поэтому можно считать, что шины нет, и ядро процессора напрямую обращается к памяти инструкций.

Шина данных

Ширина шины данных также составляет 16 бит. Используется структура ведущий-множество ведомых устройств, где ведущим устройством является ядро процессора, а ведомыми устройствами — различные внешние устройства, такие как SRAM, регистры ввода-вывода и другие. Шина данных делит пространство данных на 16 блоков, и выбор блока осуществляется с помощью битов [15:12] адреса. Каждый блок имеет 12 линий адреса [11:0], 16-бит данных и может адресовать 4 килоединицы или 8 килобайт пространства. На шине данных может быть только один ведущий, и все коммуникации инициируются ведущим. Ведущий может одновременно обращаться только к одному блоку, и порядок чтения и записи всех блоков должен быть согласован.

RAM

Память RAM расположена на шине данных в блоке s0, с базовым адресом 0x0000 и диапазоном адресов 0x0000–0x0FFF. Моделирование поведения выполняется с использованием Verilog, и память может быть синтезирована в BRAM в среде FPGA IDE. Параметр RAM_AW определяет ёмкость и ширину адреса памяти, которая по умолчанию равна 7, если не задана.

IO

Устройства ввода-вывода расположены на шине данных в блоке s1, с базовым адресом 0x1000 и диапазоном адресов 0x1000–0x1FFF.

Регистр Смещение адреса Функция
gpio_in_reg 0x00 Только чтение, данные входного порта
gpio_out_reg 0x01 Чтение и запись, выходные данные

Timer

Таймер расположен на шине данных в блоке s2, с базовым адресом 0x2000 и диапазоном адресов 0x2000–0x2FFF. Он выполняет функции таймера и генератора сигналов широтно-импульсной модуляции (PWM) и генерирует запрос на прерывание при переполнении таймера. Включает в себя делитель частоты DIV и две группы таймеров T0/T1, которые получают счётные сигналы от главного тактового сигнала через делитель.

intc

intc — это контроллер прерываний, расположенный на шине данных в блоке s3, с базовым адресом 0x3000 и диапазоном адресов 0x3000–0x3FFF. Контроллер прерываний отвечает за управление всеми внешними устройствами и запросами внешних прерываний и взаимодействует с контроллером прерываний внутри ядра процессора «Большая Жёлтая Утка». Может управлять максимум 8 каналами прерываний с двумя уровнями приоритета.

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

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

1
https://gitlife.ru/oschina-mirror/xiaowuzxc-Yduck-processor.git
git@gitlife.ru:oschina-mirror/xiaowuzxc-Yduck-processor.git
oschina-mirror
xiaowuzxc-Yduck-processor
xiaowuzxc-Yduck-processor
master