Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Я поражен тем, какие ответы я получаю в этом блоге. Спасибо, ребята, что посетили мой блог и побудили меня поделиться с вами своими знаниями. На этот раз я собираюсь представить дизайн еще одного интересного модуля, который мы видим во всех SOC - Контроллер прерываний.
Мы будем проектировать простой, но мощный программируемый контроллер прерываний. Это полностью настраиваемый и параметризованный дизайн, который можно переносить на разные платформы. Я разработал это после того, как много читал о некоторых популярных архитектурах контроллеров прерываний, таких как NVIC, 8259a, RISC-V PLIC, Microblaze's INTC и т. Д. Надеюсь, вы, ребята, найдете этот блог полезным и поможет вам понять, как прерывания обрабатываются процессором. с помощью контроллера прерываний.
Шаг 1: Технические характеристики
Ниже приведены характеристики IP:
- Интерфейс AHB3-Lite.
-
Статически настраиваемые параметры:
- Кол-во внешних источников прерываний; поддерживает до 63 прерываний.
- Количество уровней приоритета; поддерживает до 63 уровней.
- Количество уровней вложенности; поддерживает до 8 уровней вложенности.
- Ширина автобуса; 32 или 64.
- Глобально и локально маскируемые прерывания.
- Динамически настраиваемый уровень приоритета для каждого прерывания.
- Два режима работы - полностью вложенный режим и режим равного приоритета.
- Поддерживает прерывания, чувствительные к активному высокому уровню.
В конструкции использован механизм квитирования прерывания, основанный на спецификациях RISC-V PLIC.
Упреждение прерывания основано на 8259a
Прочие чтения: Microblaze INTC, NVIC
Шаг 2: Обзор PIC
Программируемый контроллер прерываний (PIC) получает несколько прерываний от внешних периферийных устройств и объединяет их в один выход прерывания для ядра целевого процессора.
PIC контролируется через регистры управления и состояния. Все регистры PIC отображены в память и доступны через интерфейс шины AHB3-Lite.
Банк регистров состоит из регистра конфигурации, регистров разрешения, регистров ожидания, регистров обслуживания, регистров приоритета и регистра идентификатора, которые типичны для контроллеров прерываний.
Регистр конфигурации используется для установки режима работы PIC. Он может работать как в полностью вложенном режиме, так и в режиме равного приоритета.
Каждому прерыванию можно назначить приоритеты и индивидуально замаскировать. Также поддерживается глобальное маскирование всех прерываний.
Банк регистров взаимодействует с Priority Resolver и BTC (Binary-Tree-Comparator), чтобы определить приоритеты ожидающих прерываний и соответственно заявить прерывание процессору. Регистр ID содержит ID ожидающего прерывания с наивысшим приоритетом.
Шаг 3: Разработка и реализация RTL
При проектировании PIC упор делается на уменьшение задержки решения приоритетов, что является наиболее критичной по времени частью проекта. Поскольку проект решает приоритеты за один тактовый цикл, производительность ухудшается с увеличением количества источников со сложностью Log2.
Дизайн был успешно реализован, и синхронизация проверена до следующих частот на ПЛИС Artix-7.
- До 15 источников: 100 МГц
- До 63 источников: 50 МГц
Задержка прерывания, добавляемая только PIC, составляет 3 тактовых цикла (исключая время переключения контекста процессора и время выборки первой инструкции ISR).
Шаг 4: важные примечания и прикрепленные файлы
Важные заметки:
- Если интерфейс AHB3-Lite нежелателен, вы можете изменить верхний модуль и использовать каркасный дизайн PIC. Однако предоставленный тестовый стенд предназначен для IP с интерфейсом AHB3-Lite.
- PIC IP v1.0 - это полностью переносимый, чистый RTL-дизайн.
- Функционально проверено для работы в обоих режимах.
Прикрепленные файлы:
- Коды проектирования и тестовая среда на VHDL.
- Полная документация по IP.
Это проект с открытым исходным кодом … Не стесняйтесь использовать …
По любым вопросам, в любое время:
Миту Радж