Имитационная модель
Nios2s
| Библиотека: | Компоненты SoC |
| Появился в версии: | 3.2 |
| Внешний вид: |
![]() |
Поведение
Имитационная модель процессора Nios2 — это полноценная имитационная модель архитектуры команд (ISA) микропроцессорного ядра Intel Nios II (за исключением f-версии). Её можно использовать для демонстрации выполнения программы на встроенной системе. Обратите внимание, что хотя эта модель выполняет одну инструкцию за такт, данное моделирование не является потактно-точным, поскольку в нём не учитываются такие аспекты, как задержки кэша, задержки из-за зависимости данных, циклы ожидания шины и т.д. Он обеспечивает функциональное моделирование для демонстрации разработки систем на кристалле (SoC) на этапах, когда физическое оборудование ещё недоступно.
Контакты
На верхней стороне компонента имитационной модели процессора Nios2 расположены сигналы интерфейса пользовательских инструкций (custom instructions), где вы можете подключить собственные аппаратные ускорители пользовательских инструкций для использования при моделировании. Пожалуйста, обратитесь к документации Intel по пользовательским инструкциям Nios II для получения информации об их использовании.
На левой стороне компонента имитационной модели процессора Nios2 расположены следующие входы:
- Reset: вход сброса компонента имитационной модели процессора Nios2, который асинхронно сбрасывает процессор при уровне «1» и разрешает работу процессора при уровне «0».
- Clock: тактовый вход компонента имитационной модели процессора Nios2. При каждом переходе из низкого уровня в высокий (фронте) на этом входе происходит выборка и выполнение новой инструкции.
- IRQ[0..31]: имитационная модель процессора Nios2 предоставляет до 32 входов прерываний (определяется атрибутом количества линий прерываний). Каждое из этих прерываний имеет активный высокий уровень. Пожалуйста, обратитесь к документации Intel по поведению прерываний для корректной подачи сигналов на эти входы.
Атрибуты
Компонент имитационной модели процессора Nios2 поддерживает следующие атрибуты:
- Вектор сброса (Reset vector): этот атрибут задаёт адрес в памяти для первой инструкции, выполняемой при активации контакта Reset. Как правило, указанное здесь значение должно быть адресом точки входа вашей программы. Обратите внимание, что все адреса представляют собой 32-разрядные значения.
- Вектор исключения (Exception vector): при обнаружении прерывания (см. контакты IRQ выше) или программного исключения имитационная модель процессора Nios2 начнет выполнять программу с этого адреса. Как правило, указанное здесь значение должно быть адресом обработчика прерываний в вашей программе.
- Вектор отладки (Break vector): задаёт адрес в памяти для подпрограммы отладки, выполняемой при обнаружении инструкции break.
- Количество линий прерываний: задаёт количество доступных внешних контактов прерываний IRQ. Значение может быть от 0 (нет линий прерываний) до 32 (максимальное количество).
- Отображение состояния (State visible): при отключении отображения состояния (значение «Нет») скорость моделирования может быть увеличена (см. примечание по скорости моделирования в описании библиотеки).
- Метка (Label): имя компонента. Обратите внимание, что метка используется во многих местах для ссылки на данный компонент. Если метка не задана, компонент будет обозначаться как «Nios2s simulator @x,y», где x и y — абсолютные координаты точки привязки компонента на холсте.
- Шрифт метки (Label font): с помощью этого атрибута можно настроить шрифт метки.
- Отображение метки (Label visible): определяет, будет ли метка видна на схеме.
- Подключенная шина (Connected Bus): этот атрибут позволяет подключить имитационную модель процессора Nios2 к компоненту шины. Для успешного моделирования необходимо подключить ваш процессор к такому компоненту.
Отображаемые компоненты
Имитационная модель процессора Nios2 имеет несколько компонентов состояния, которые отображаются, когда атрибут Отображение состояния установлен в значение Да. Большинство из них также можно визуализировать в отдельном окне, когда сам компонент скрыт внутри подсхемы (см. контекстное меню подсхемы ниже). Доступны следующие компоненты:
- Регистровый файл. Процессор Nios2 содержит 32 регистра общего назначения (r0..r31). Текущие значения этих регистров отображаются в левой верхней области с заголовком Регистровый файл. Если значение регистра отображается в виде последовательности вопросительных знаков, это означает, что значение неизвестно (стандартное поведение процессора при запуске). При записи нового значения в регистр соответствующая строка подсвечивается синим цветом.
- Счётчик команд (PC). Счётчик команд хранит текущий адрес, с которого будет производиться выборка следующей инструкции.
- Регистр состояния (status). Хранит информацию о текущем состоянии процессора Nios2. Описание полей см. в документации Intel по процессору Nios II.
- Регистр состояния исключения (estatus). Хранит копию регистра состояния при входе в обработчик прерывания/исключения.
- Регистр состояния отладки (bstatus). Хранит копию регистра состояния при выполнении инструкции break.
- Окно трассировки выполнения. Окно трассировки показывает последние 21 инструкцию, выполненную процессором
Nios2. Последняя выполненная инструкция отображается сверху. Окно трассировки предоставляет три вида
информации:
- Адрес счётчика команд (PC), с которого была выбрана инструкция.
- Двоичный код операции (opcode) выбранной инструкции.
- Ассемблерный мнемокод инструкции (если код операции распознан).
- Индикатор состояния IRQ, маски IRQ и ожидающих прерываний. Отображается в случае, если атрибут Количество линий прерываний больше 0. Для каждого контакта прерывания верхний квадрат показывает текущий физический уровень линии IRQ, квадрат под ним показывает соответствующий бит маски в регистре ienable, а нижний квадрат показывает, ожидает ли обработки немаскированное прерывание. Примечание: этот индикатор не отображает состояние глобального разрешения прерываний, находящегося в регистре status.
- Индикатор подключенной шины. В левом нижнем углу компонента расположен индикатор подключения к компоненту шины. При успешном подключении индикатор становится зелёным и выводит метку подключенной шины. Этот индикатор недоступен в режиме отдельного окна и не скрывается атрибутом Отображение состояния.
- Компонент управления моделированием. Справа от индикатора подключенной шины расположен компонент управления моделированием. См. подробное описание здесь.
Динамические элементы
Компонент имитационной модели процессора Nios2 предоставляет контроллер моделирования SoC в качестве динамического компонента.
Пункты меню
При нажатии правой кнопкой мыши на графическое обозначение имитационной модели процессора Nios2 открывается контекстное меню. В это меню добавлены три уникальных пункта:
- Открыть ассемблер (Open assembler). Открывает встроенный ассемблер, в котором можно писать собственные ассемблерные программы и запускать их на процессоре Nios2.
- Считать ELF-файл (Read elf file). Открывает окно выбора файла для загрузки скомпилированного исполняемого ELF-файла (например, полученного с помощью кросс-компилятора GCC для Nios II). Содержимое файла загружается в память проекта, вектор сброса процессора устанавливается на точку входа загруженной программы, а имитационная модель инициализируется в состоянии сброса. Загрузка ELF-файла не изменяет значение атрибута Вектор сброса.
- Показать загруженную программу (Show loaded program). Доступен только если программа была загружена через ассемблер или ELF-файл. Открывает дизассемблер.
Пункты меню родительской схемы
Если имитационная модель процессора Nios2 находится внутри подсхемы, она добавляет четыре пункта в контекстное меню этой подсхемы при её использовании в родительской схеме:
- <имя>: Открыть ассемблер. Открывает встроенный ассемблер.
- <имя>: Считать ELF-файл. Открывает окно выбора ELF-файла.
- <имя>: Показать состояние CPU. Открывает отдельное окно с компонентами состояния процессора (пункты 1–7 из раздела «Отображаемые компоненты»).
- <имя>: Показать загруженную программу. Открывает дизассемблер.
В этих пунктах меню <имя> — это метка имитационной модели процессора Nios2. Если метка не задана, имя генерируется автоматически в виде Nios2@x,y, где x и y — координаты точки привязки имитационной модели Nios2 внутри подсхемы.
Поддерживаемые инструкции
| Арифметические и логические инструкции | |||||
| and | or | xor | nor | sub | mul |
| div | divu | mulxss | mulxuu | mulxsu | andi |
| ori | xori | andhi | orhi | xorhi | addi |
| subi | muli | nop | mov | movhi | movi |
| movui | movia |
|
|||
| Инструкции сравнения | |||||
| cmpeq | cmpne | cmpge | cmpgeu | cmplt | cmpltu |
| cmpgt | cmpgtu | cmple | cmpleu | cmpeqi | cmpnei |
| cmpgei | cmpgeui | cmplti | cmpltui | cmpgti | cmpgtui |
| cmplei | cmpleui |
|
|||
| Пользовательские инструкции | |||||
| custom |
|
||||
| Инструкции передачи данных | |||||
| ldw | ldh | ldhu | ldb | ldbu | ldwio |
| ldhio | ldhuio | ldbio | ldbuio | stw | sth |
| stb | stwio | sthio | stbio |
|
|
| Другие инструкции управления | |||||
| trap | eret | break | bret | rdctl | wrctl |
| flushd | flushda | flushi | initd | initda | initi |
| flushp | sync |
|
|||
| Инструкции управления программой | |||||
| callr | ret | jmp | call | jmpi | br |
| bge | bgeu | blt | bltu | beq | bne |
| bgt | bgtu | ble | bleu |
|
|
| Инструкции сдвига и циклического сдвига | |||||
| rol | ror | sll | sra | srl | roli |
| slli | srai | srli |
|
||
Поддерживаемые регистры управления
| Регистр | Имя | Примечания |
| 0 | status | Только константа RSIE в значении 1 и PIE. |
| 1 | estatus |
|
| 2 | bstatus |
|
| 3 | ienable | Количество битов зависит от значения атрибута Количество линий прерываний. |
| 4 | ipending | Количество битов зависит от значения атрибута Количество линий прерываний. |
