Nios II — это 32-битная архитектура встраиваемого процессора, разработанная специально для семейства интегральных схем Altera с программируемыми пользователем вентильными матрицами (FPGA) . Nios II включает в себя множество усовершенствований по сравнению с оригинальной архитектурой Nios, что делает ее более подходящей для более широкого спектра встраиваемых вычислительных приложений, от цифровой обработки сигналов (DSP) до управления системой.
Nios II является преемником первого конфигурируемого 16-битного встраиваемого процессора Altera Nios , представленного в 2000 году. [1]
Как и оригинальный Nios, архитектура Nios II представляет собой RISC -программную архитектуру, которая полностью реализована в программируемых логических блоках и блоках памяти ПЛИС Altera. В отличие от своего предшественника, это полностью 32-битная конструкция:
Программная природа процессора Nios II позволяет разработчику системы указать и сгенерировать пользовательское ядро Nios II, адаптированное под его или ее конкретные требования к приложению. Разработчики системы могут расширить базовую функциональность Nios II, например, добавив предопределенный блок управления памятью или определив пользовательские инструкции и пользовательские периферийные устройства.
Подобно собственным инструкциям Nios II, пользовательские инструкции принимают значения из двух 32- битных исходных регистров и опционально записывают результат обратно в 32-битный целевой регистр. Используя пользовательские инструкции, разработчики системы могут точно настроить аппаратное обеспечение системы для достижения целей производительности, а также разработчик может легко обрабатывать инструкции как макросы на языке C.
Для систем, критически важных для производительности, которые тратят большую часть циклов ЦП на выполнение определенного раздела кода, определяемое пользователем периферийное устройство может потенциально переложить часть или всю нагрузку на выполнение программного алгоритма на определяемую пользователем аппаратную логику , повышая энергоэффективность или пропускную способность приложения.
Представленный в Quartus 8.0, дополнительный MMU позволяет Nios II запускать операционные системы, которым требуется аппаратная подкачка и защита, такие как ядро Linux. Без MMU Nios ограничен операционными системами, которые используют упрощенную защиту и виртуальную модель памяти: например, μClinux и FreeRTOS .
Представленный в Quartus 8.0, дополнительный MPU обеспечивает защиту памяти, аналогичную той, которую обеспечивает MMU, но с более простой моделью программирования и без накладных расходов на производительность, связанных с MMU.
Nios II classic предлагается в 3 различных конфигурациях: Nios II/f (быстрая), Nios II/s (стандартная) и Nios II/e (экономичная). Nios II gen2 предлагается в 2 различных конфигурациях: Nios II/f (быстрая) и Nios II/e (экономичная).
Ядро Nios II/f разработано для максимальной производительности за счет размера ядра. Особенности Nios II/f включают:
Ядро Nios II/s разработано для поддержания баланса между производительностью и стоимостью. Эта реализация ядра больше не поддерживается для Altera Quartus II v.17 и более новых версий. Возможности Nios II/s включают:
Ядро Nios II/e разработано для наименьшего возможного логического использования ПЛИС. Это особенно эффективно для недорогих приложений Cyclone II ПЛИС. Особенности Nios II/e включают:
Nios II использует коммутационную матрицу Avalon в качестве интерфейса для встроенных периферийных устройств. По сравнению с традиционной шиной в процессорной системе, которая позволяет только одному мастеру шины получать доступ к шине одновременно, коммутационная матрица Avalon, использующая схему арбитража на стороне ведомого устройства, позволяет нескольким мастерам работать одновременно.
Разработка Nios II состоит из двух отдельных этапов: создание оборудования и создание программного обеспечения.
Разработка размещается внутри приложения Altera, называемого Embedded Design Suite (EDS). EDS содержит полную интегрированную среду разработки для управления как аппаратным, так и программным обеспечением в два отдельных этапа:
Разработчики оборудования Nios II используют инструмент системной интеграции Qsys, компонент пакета Quartus-II, для настройки и создания системы Nios. Графический пользовательский интерфейс конфигурации (GUI) позволяет пользователям выбирать набор функций Nios-II и добавлять периферийные устройства и блоки ввода-вывода (таймеры, контроллеры памяти, последовательный интерфейс и т. д.) во встроенную систему. Когда спецификация оборудования завершена, Quartus-II выполняет синтез, размещает и маршрутизирует для реализации всей системы на выбранной целевой ПЛИС.
Qsys заменяет старый SOPC (System-on-a-Programmable-Chip) Builder, который также может использоваться для сборки системы Nios II, и рекомендуется для новых проектов. [2]
Отдельный пакет, называемый Embedded Design Suite (EDS), управляет разработкой программного обеспечения. Основанный на Eclipse IDE, EDS включает компилятор C/C++ (на основе GNU toolchain ), отладчик и симулятор набора инструкций. EDS позволяет программистам тестировать свои приложения в симуляции или загружать и запускать свои скомпилированные приложения на реальном хосте FPGA.
Поскольку цепочка разработки C/C++ основана на GCC, подавляющее большинство программного обеспечения с открытым исходным кодом для Linux компилируется и запускается с минимальными изменениями или без них. Сторонние операционные системы также были портированы на Nios II. К ним относятся Micrium MicroC/OS-II , eCos , Segger Microcontroller embOS, ChibiOS/RT , μCLinux и FreeRTOS .
Nios II сопоставим с MicroBlaze , конкурирующим программным процессором для семейства ПЛИС Xilinx . В отличие от MicroBlaze, Nios II лицензируется для ASIC со стандартными ячейками через стороннего поставщика IP, Synopsys Designware. С помощью лицензии Designware проектировщики могут переносить проекты на основе Nios с платформы ПЛИС на устройство ASIC массового производства.