8-900-374-94-44
[email protected]
Slide Image
Меню

Nios ii по русски: Nios ii по русски

Использование произвольных DataFlash 25-й серии вместо дорогих конфигураторов FPGA Altera без дополнительной аппаратуры / Хабр

Из любого описания на популярные FPGA известно, что для хранения их конфигураций используются специальные микросхемы – конфигураторы. В комментариях меня поправили, что потихоньку набирают популярность и FPGA, где это не требуется, но пока многие делают разработки именно на классике, где нужен конфигуратор, и с этим надо считаться. Например, для Altera Cyclone используются микросхемы EPCS. Ниже схема от типичной макетной платы с кристаллом семейства Cyclone IV. На ней мы видим конфигуратор EPCS16. Всё бы ничего, но традиционно эти конфигураторы достаточно дороги, поэтому хотелось бы использовать что-нибудь подешевле.

Подробности в длиннющем тексте ниже. Если же очень интересно, но лень читать так много букв, то можно упростить задачу, посмотрев подробное 20-минутное видео.

Итак, вернёмся к нашей проблеме.

Если повертеть в руках ту самую макетную плату с кристаллом семейства Cyclone IV, то мы увидим очень удивительную вещь.

Вот она, ПЛИСина, а вот конфигурационная ПЗУ:

Как ни странно, это никакой не EPCS, а обычная 25-тая флешка. Такие флешки стоят дёшево и продаются достаточно много у кого.

Но, как говорится, не все йогурты одинаково полезны. В частности, наши заказчики на радостях закупили подобные флешки, припаяли на плату и получили глобальную проблему. Заходим в программатор, грузим файл, подготовленный для прошивки, начинаем его прошивать и получаем ошибку:

Вот сообщение об ошибке:

Error (209025): Can’t recognize silicon ID for device 1. A device’s silicon ID is different from its JTAG ID. Verify that all cables are securely connected, select a different device, or check the power on the target system. Make sure the device pins are connected and configured correctly.

Не опознан идентификатор устройства.

То есть у флешки неизвестный идентификатор с точки зрения квартуса. Конкретно у наших заказчиков были закуплены кристаллы 25P32, которые вообще не поддерживаются в принципе, но в жизни может быть и более приземлённая ситуация. В частности, на фото выше припаяна флешка от ST, а определяется она как MICRON. Китайские продавцы и не такое могут намаркировать, а когда партия закуплена и не работает – что можно сделать?

Я полез на форумы. Все русскоязычные, какие удалось осмотреть, пестрели обсуждениями, у каких поставщиков и что следует брать, чтобы не напороться на подобную проблему. Но в нашем случае никто покупать новую партию не хотел. В англоязычных источниках удалось найти лишь одну статью с решением, но в современной среде Quartus Prime данное решение «в лоб» не сработает. Поэтому мы взялись задокументировать данную проблему для современной среды, на русском языке и в видео формате.

Итак, как вообще программируется ПЗУшина?

В ПЛИС вливается специальная конфигурация, по которой становится возможно по JTAG достукиваться до флешки. И потом, пользуясь этой конфигурацией, мы заливаем данные. Оказывается, можно сделать подобную конфигурацию, которая даст нам доступ к флешке и даст прошить, невзирая на ID, причём при этом не придётся писать ни строчки собственного кода, да и утилиты все будут использоваться из поставки Quartus Prime (либо Qiartus II, кто пользуется старыми версиями среды разработки).

То есть нам предстоит сделать 3 шага:

  1. Сделать конфигурацию, которая достукивается до флешки.
  2. Написать файл, в котором флешка описывается.
  3. Прошить.

Давайте этим и займёмся. Начнём с разработки собственной «прошивки» (она же конфигурация), не написав при этом ни одной строчки своего кода.

Заходим в Quartus:

Создаём новый проект:

Назовём его, скажем, flasher:

Это имя следует запомнить – оно нам ещё понадобится.

Создаём пустой проект, семейство у меня Cyclone IV E, используемый в проекте кристалл вот такой:

Так. Заканчиваем создание проекта, нажимаем Finish. Проект создан. Как уже было сказано, мы не пишем ни одной строчки своего кода. Но заставить среду сделать что-то всё-таки нужно. Для этого идем в Tools – Platform Designer.

Вот он загрузился. Конкретно у меня в этой плате кварц на 60 Гц, поэтому я подправлю установки частоты:

То, что я делаю сейчас, мы делаем один раз для платформы. То есть если изготовлена какая-то плата, то вот этот загрузчик будет для нее для любого проекта работать.

Я подготовил кварц – теперь мы ставим процессор. В библиотеке слева находим «Процессоры и Периферия», «Встроенные процессоры» и затем – Nios II Processor:

Выбираем его и нажимаем «Добавить».

В открывшемся окне, в свойствах, выбираем Nios II/e, потому что он абсолютно бесплатный и к нему не нужна никакая лицензия.

Ошибки сообщают нам, что не настроены вектора. Мы не собираемся ничего программировать для этого процессора. Поэтому вектора мы просто направляем в первое попавшееся место из списка:

Нам очень важно, чтобы у процессора работал модуль JTAG:

После наших манипуляций ошибки ушли.

С процессором закончено. Нажимаем Finish и двигаемся дальше.

Теперь мы идём в основные функции. Здесь есть конфигураторы:

Раскрываем список конфигураторов – ближе к концу находим EPCS-ки – наши конфигураторы:

Всё оставляем по умолчанию:

Теперь начинаем их связывать. Тактовые сигналы пропускаем на оба модуля, сигнал сброса пропускаем на оба модуля. Сигнал сброса, выходящий из аппаратуры JTAG, – debug_reset_request – мы также пропускаем на оба модуля. Дальше data_master пропускаем на оба модуля. Instruction_master пропускаем только на отладчик. И запрос на прерывания мы также пропускаем:

Дальше мы переходим к внешним ножкам – external. Экспортируем их, для чего дважды щелкаем в поле Double-click to export:

Для простоты назову epcs, чтобы меньше длина была:

Теперь привычным движением руки назначаем базовые адреса:

И назначаем прерывания:

Автоматически назначенный адрес для нашего flash-контроллера – 0×800 – нам следует запомнить:

Он нам еще пригодится. А всё остальное, в принципе, само сделалось и будет работать.

Сейчас очень важно, так как мы не собираемся писать ни одной строчки своего кода, чтобы имя процессорной системы совпадало с именем проекта. Проект у нас был flasher.

Сохраняем систему, называем flasher:

Именно тогда у нас топ-модуль будет именно этот процессор, и поэтому нам не придется ничего делать.

Следующий наш шаг:

Все оставляем по умолчанию, потому что мы просто пользуемся тем, что уже готово:

Завершаем:

Появилось сообщение о том, что нам надо не забыть добавить файл в проект:

Давайте добавим. Идём в Project – Add/Remove Files in Project:

Находим наш файл на компьютере.

Вот он, наш файл flasher с расширением qsys.

Добавили его:

Теперь делаем черновую компиляцию:

Она завершилась успешно.

Теперь, когда она прошла, мы можем назначить выводы. Идем в Pin Planner:

JTAG-овские ножки нам назначать не надо – мы назначаем ножки флешки.

Для каждой микросхемы, для каждого корпуса они свои. В принципе, можно смотреть документацию на микросхему или на свою плату. Например, вот у нас двенадцатая ножка DCLK:

У меня список уже подготовлен – просто вобьём по нему.

Так, epcs_data0, LOCATION: PIN13, epcs_dclk – PIN12, epcs_sce – PIN8, epcs_sdo – PIN6. И конкретно на плате наших заказчиков тактовая частота PIN24, reset_n – PIN88.

Ножки назначили. Запускаем компиляцию. Выдаются ошибки:

Все потому, что я сделал вид, что забыл произвести очень важную настройку. Мы сейчас подключили флешку к служебным линиям. И, по окончании конфигурирования, часть этих линий вообще не доступна, а часть – используется для служебных целей. Поэтому нам выдали сообщения, что у нас конфликт:

Чтобы это устранить, идем в Assignments – Device:

Device and Pin Options:

Здесь выбираем Dual-Purpose Pins. И все эти линии по окончании программирования мы просим сделать обычными линиями ввода-вывода:

Жмём OK, запускаем компилятор. И всё получилось.

Итак, первый шаг завершен. У нас получилась конфигурация, через которую мы можем достукиваться до флешки.

Теперь наша задача – сделать файл, с помощью которого система нашу флешку будет опознавать.

Идём во все программы, Intel FPGA (для старых версий это будет Altera), Nios II Command Shell.

Здесь мы идём в каталог, где мы только что все собрали. При этом не забываем, что слэши тут должны быть не обратные, а прямые, и что результирующий файл flasher.sof лежит в каталоге output_files:

Теперь начинаем произносить волшебные заклинания. Итак, нам нужно влить только что сформированную конфигурацию. Для этого мы пишем:

nios2-configure-sof flasher.sof

и нажимаем Enter:

Файл залился – теперь у нас есть доступ к флешке. Для того, чтобы определить все, что касается доступа к флешке, нам нужно запустить следующую программу:

nios2-flash-programmer —epcs —base=0x800—debug.

где 0x800 – это тот самый адрес, который автоматически назначился на блок epcs и который надо было не забыть.

Нажимаем Enter:

Что он нам сказал? Он попытался осмотреть ту область, которую мы назвали. И по смещению 0 по адресу 800 не нашёл ничего. По адресу с00 он нашёл то, что нам требуется:

Теперь мы запоминаем не просто базовый адрес 800, а конкретный адрес с00 – в дальнейшем работа будет вестись с ним.

Он нашел флешку, ее идентификатор 202016, но сказал, что понятия не имеет, что с ней делать, потому что её не знает.

Вот документация на нашу флешку:

Её полный идентификатор 202016 – именно его она возвращает в ответ на команду запроса своего кода.

Так что всё правильно – флешка нашлась правильная.

Он нам говорит, что должен быть файл с секцией EPCS-202016.

Замечательно. Изменить – Пометить. Выделяем её имя и берём в буфер обмена.

Создаём файл ovr.txt и секцию с именем, которое только что скопировали:

В документации на нашу флешку, в разделе Memory Map, мы можем посмотреть, что она состоит из 64 секторов. Каждый сектор имеет размер 64 Кбайт, потому что от 0000 до FFFF.

Поэтому файл с конфигурацией, который мы только что создали, должен выглядеть вот так:

64 сектора размером по 64 Кбайта, или 65536 байта, каждый.
Второй шаг готов. У нас имеются файлы flasher.sof и ovr.txt, который содержит конфигурацию флешки.

Переходим к третьему шагу.

Напомню, что рабочий проект был USB16_my. А файл для прошивания назывался Test1.sof. Мы копируем flasher.sof и ovr.txt к нему.

Теперь мы закончили все подготовительные шаги – приступаем к непосредственным боевым действиям. Чтобы подчеркнуть отсутствие связи между подготовкой и работой, я войду в терминал ещё раз, как будто это происходит на следующий день, через неделю, через месяц или через любой срок после завершения подготовки.

Первое, что нам нужно сделать, это сформировать выходной файл. Потому что файл sof не шьется в ПЗУ – шьется немного другой файл. Для того чтобы его сформировать, мы пишем:

Получился файл Test1. flash:

Теперь, чисто формально, пришёл черёд действий, которые должны делать сборщики плат. В первую очередь, они точно так же должны загрузить наш flasher, то есть:

После чего они должны прошить ПЗУ:

Собственно, на этом всё. Задача решена, флешка прошита – можно ее использовать, даже несмотря на то, что основной путь говорил про несовпадение ID-шников. И совершенно не требуется покупать дорогие конфигураторы или искать, у какого поставщика 25-е флешки имеют совместимые ID. Мы подготовили «прошивальщик» для нашей конкретной платы (и любых других, где стоит такой же кристалл и Reset с генератором подключены к тому же выводу), мы подготовили текстовый файл для конфигуратора, после чего влили «прошивку», пользуясь утилитами, идущими в комплекте поставки штатной среды Quartus Prime (они же шли и со средой Quartus II).

Quartus — ALT Linux Wiki

Содержание

  • 1 Общая информация
  • 2 Совместимость с версиями ОС
    • 2. 1 Базовая установка
    • 2.2 Доработки и исправления
    • 2.3 JTAG
    • 2.4 Известные баги
    • 2.5 Итог

Quartus II — основная среда проектирования для ПЛИС компании Intel FPGA (Altera до 2015 года).

Light-версия САПР бесплатна.

Кроме платформы Windows®, доступна также версия, предназначенная для запуска в ОС Red Hat Enterprise Linux. Это даёт возможность запускать САПР в нашей операционной системе.

Данная инструкция подходит для установки Quartus версий 16.x и 17.x на Alt Linux x86_64 p8 и p9. Другие комбинации версий ОС и САПР предположительно тоже будут работать.

Базовая установка

Скачать .tar архив с сайта Altera: [1]. Распаковать и запустить скрипт «setup.sh». При необходимости также скачать и установить обновления. Пути с пробелами и не-ASCII символами могут вызвать ошибки.

Система поставится в домашнюю папку по адресу ~/intelFPGA_lite/${ver}/, где ver — версия (ver=»16.1″, ver=»17.1″…).

Также следует установить из репозитория пакеты:

i586-libXft. 32bit
libudev0

Первый из них — для ModelSim, второй — для jtagd.

Доработки и исправления

  • В запущенном Quartus во вкладке Tools -> Options -> General -> Internet Connectivity в поле Path вписать /opt/firefox-env.

Создать исполнимый скрипт /opt/firefox-env:

#!/bin/sh
exec /usr/bin/env --unset=LD_LIBRARY_PATH firefox "$@"

Это исправляет запуск справки. В противном случае, firefox со справкой пытается вместо системных загрузить стандартные бинарные библиотеки из комплекта Quartus, от чего завершается аварийно.

  • В файле ~/intelFPGA_lite/${ver}/modelsim_ase/bin/vsim на строке 210 добавить ядра Linux современных версий в список архитектур:
        case $utype in
          2.4.[7-9]*)       vco="linux" ;;
          2.4.[1-9][0-9]*)  vco="linux" ;;
          2.[5-9]*)         vco="linux" ;;
          2.[1-9][0-9]*)    vco="linux" ;;
          3.[0-9]*)    	    vco="linux" ;;
          4.[0-9]*)         vco="linux" ;;
          5. [0-9]*)         vco="linux" ;;
          *)                vco="linux_rh60" ;;
        esac
  • Из Alt Linux p7 притащить бинарную 32-битную библиотеку libfreetype.so.6.10.0 (Скачать RPM по ссылке, извлечь .so из RPM вручную, проверить sha1sum:ab90aab56f30b0cdc5be9839f755a8540af9ce74, gost12sum:85699b149c4aad9bf3940f79a7a3e89bbe6c24939dbad4cbbff81e7075ba8fec). Системная версия libfreetype не подходит начиная с p8.

Сохранить её в ~/intelFPGA_lite/${ver}/lib_old_compat/.

В lib_old_compat/ создать ссылку:

$ ln -s libfreetype.so.6.10.0 libfreetype.so.6

В папке ~/intelFPGA_lite/${ver}/modelsim_ase/linuxaloem переименовать оригинальный vish в vish.zzzz.

Создать скрипт-подмену vish:

cd ~/intelFPGA_lite/${ver}/modelsim_ase/linuxaloem
mv vish vish.zzzz
touch vish
chmod a+x vish
vim vish

В скрипт-подмену vish записать:

#!/bin/sh
LD_LIBRARY_PATH=$MODEL_TECH/../../lib_old_compat/
export LD_LIBRARY_PATH
exec -a $MODEL_TECH/vish $MODEL_TECH/vish. zzzz "$@"

Это позволяет подгрузить правильную версию библиотеки libfreetype в нужном месте комплекса программ ModelSim. Передача LD_LIBRARY_PATH всему ModelSim не работает — где-то по пути переменная удаляется.

JTAG

Для работы с jtag-программатором следует создать группу jtag и добавить в неё пользователя, от имени которого будет запускаться Quartus.

groupadd jtag
usermod -a -G jtag ИМЯ_ПОЛЬЗОВАТЕЛЯ

Также следует создать udev-правило для разных моделей программаторов, по которому их файл устройства подключается в нужное место с адекватными правами доступа. В файл /etc/udev/rules.d/99-altera-usb-blaster.rules следует записать:

# USB-Blaster
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6001", MODE="0660", GROUP="jtag", SYMLINK+="usbblaster/%k"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6002", MODE="0660", GROUP="jtag", SYMLINK+="usbblaster/%k"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6003", MODE="0660", GROUP="jtag", SYMLINK+="usbblaster/%k"
# USB-Blaster II
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6010", MODE="0660", GROUP="jtag", SYMLINK+="usbblaster2/%k"
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6810", MODE="0660", GROUP="jtag", SYMLINK+="usbblaster2/%k"

После выполнения всех операций по настройке jtag следует перезапустить udevd командой

service udevd restart

и перелогиниться. Или просто перезапустить компьютер.

Известные баги

  • При настройке PLL ПЛИС MAX10 через интерфейс MegaWizard запускается окно с полем, частично скрытым ползунками прокрутки. При попытке взаимодействия с оконными примитивами формы программа MegaWizard зависает. Чтобы обойти этот баг, следует при запуске интерфейса первым действием растянуть окно за правый нижний угол так, чтобы всё содержимое формы поместилось в окне.
  • Также иногда меню «IP components» в интерфейсе Quartus перестаёт реагировать на попытки открыть ядра (двойной щелчок/Enter). Ситуация исправляется после перезапуска Quartus.
  • При генерации PLL для Cyclone V и других ядер, требующих исполнения tcl скриптов (чаще всего — более современные ядра) tcl падает уже после исполнения своей задачи, в результате чего в пользовательском интерфейсе возникает сообщение об ошибке при генерации ядра. При этом, однако же, ядра генерируются корректно.

Итог

  • Quartus запускается из командной строки по прямому пути ~/intelFPGA_lite/${ver}/quartus/bin/quartus.
  • Quartus Programmer — ~/intelFPGA_lite/${ver}/quartus/bin/quartus_pgmw
  • ModelSim — ~/intelFPGA_lite/${ver}/modelsim_ase/bin/vsim

Для диагностики проблем подключения программатора можно запустить jtag демон в отладочном режиме:

jtagd --foreground --debug

Перед этим следует убить работающую копию сервера, запускаемую автоматическими любым инструментом, использующим jtag (напр. Programmer и SignalTap).

Добавление ярлыков на рабочий стол оставим на усмотрение читателя =)

ПО, не входящее в репозитории ALT Linux

Adobe Acrobat Reader • Alfabank eToken • Apache OpenOffice • Bifit • BIFIT Signer • Brave • CookBook • Crossover • CVAT • Discord • DOSBox Game Launcher • Double GIS • Edge • Google Chrome • GoogleEarth • JavaPlugin • Kingsoft Office • Microsoft Teams • OnlyOffice • Q4Wine • Quartus • Scratch • Skype • Skype/isolation • Spotify • TeamViewer • UnknownHorizons • Vivaldi • Альт Рабочая станция К 8 советы • Ассистент

 

Altera Nios II Embedded Evaluation Kit, Cyclone III Edition Circuit Note

  • Особенности и преимущества

Особенности и преимущества

  • Компания Analog Devices тесно сотрудничала с производителями ПЛИС и процессоров для разработки проверенных решений по питанию, оптимизирующих стоимость, размер и эффективность в высокопроизводительных приложениях
  • Наши эталонные проекты поддерживаются интуитивно понятным набором инструментов проектирования и IP
  • .
  • Наша команда может предоставить проекты для быстрых прототипов, которые могут ускорить вывод на рынок самых сложных приложений

Категории продуктов

Используемые детали

  • LT3461
  • LT1963
  • LT1117
  • LT1959
  • LTC3413
  • LTM4603

{{#каждый список}}

{{/каждый}}

Схема демонстрационной платы
  • Стартовый комплект DK-START-3C25N / Схема оценочного комплекта DK-N2EVAL-3C25N

    04. 08.2014

Комплект Nios II Embedded Evaluation Kit, Cyclone III Edition делает оценку встроенных решений Altera проще, чем когда-либо. Десяток различных процессорных систем, предназначенных для недорогих маломощных FPGA Cyclone III, можно оценить, просто используя цветной сенсорный ЖК-дисплей для прокрутки и загрузки выбранной вами демонстрации. Nios II Embedded Evaluation Kit, Cyclone III Edition поставляется с комплексным набором для разработки программного обеспечения — Nios II Embedded Design Suite (EDS) — а также примерами процессорных систем Nios II, которые включают полный исходный код. Оценочный комплект Nios II, Cyclone III Edition состоит из стартового комплекта Cyclone III PGA и дочерней платы LCD/VGA HSMC.

Альтера Ниос II | Онлайн-документация для продуктов Altium

Замороженное содержимое

Изменено администратором 13 сентября 2017 г.

Рисунок 1. 32-разрядный процессор Nios II.

Nios II — это 32-разрядный RISC-процессор, совместимый с Wishbone, для использования в проектах FPGA, предназначенных для поддерживаемых семейств Altera физических устройств FPGA.
 

В настоящее время Altium Designer поддерживает использование процессора Nios II со следующими семействами устройств Altera FPGA:

Cyclone® , Cyclone® II , Cyclone® III , Stratix® , Stratix® II , Stratix® III , Stratix® GX , Stratix® II GX .

 
Процессор выпускается в трех вариантах: быстрый, стандартный и экономичный. Хотя каждый из них помещен в проект FPGA на основе Altium Designer как Nios II, по сути это оболочка, совместимая с Wishbone, которая позволяет использовать соответствующее «мягкое» процессорное ядро ​​Altera Nios II.

Все инструкции имеют разрядность 32 бита и большинство из них выполняются за один такт (только для стандартных и быстрых вариантов). В дополнение к быстрому доступу к регистрам, Nios II имеет определяемый пользователем объем оперативной памяти блока состояния с нулевым ожиданием с настоящим двухпортовым доступом.

Только проекты, предназначенные для поддерживаемых устройств Altera FPGA, могут использовать процессор. Если вам нужна свобода аппаратной платформы 32-разрядной системы, независимой от поставщика устройства и FPGA, используйте доступный 32-разрядный RISC-процессор TSK3000A.
 

Поставка этих программных ядер в соответствии с положениями и условиями Лицензионного соглашения с конечным пользователем Altium не передает и не подразумевает каких-либо патентных прав на поставляемые технологии. Пользователей предупреждают, что для любого использования, на которое распространяются такие патентные права, включая реализацию этого ядра в интегральной схеме или любом другом устройстве, требуется действующая лицензия Nios II от Altera. Вам также потребуется лицензионная установка программного обеспечения Altera Quartus® II. Для получения дополнительной информации:
http://www.altera.com
 
В настоящее время Altium Designer поддерживает версии 3.0–8.0 (включительно) программного обеспечения Altera Quartus II и версии 5.1–8.0 (включительно) процессорного ядра Nios II, доступные в соответствующем Altera Nios II Embedded Design Suite

Особенности at-a -glance

  • Конвейерный RISC-процессор
     
    • Nios2f: 6-этапный конвейер
    • Nios2s: 5-этапный конвейер
    • Nios2e: 1-этапный конвейер
       

    3 архитектура0004

  • Поддержка встроенной блочной оперативной памяти и/или внешней памяти
  • Адресное пространство 4 ГБ (включая 2 ГБ внешнего адресного пространства)
  • Полноценные порты ввода/вывода и памяти Wishbone для упрощенного подключения периферийных устройств 9 00025

    4 Цепочка инструментов разработки программного обеспечения на основе Viper — компилятор C/ассемблер/отладчик/профилировщик на уровне исходного кода

  • C-код, совместимый с другими 8-битными и 32-битными процессорными ядрами Altium Designer, совместимыми с Wishbone, для упрощения миграции проекта.

Доступность

Доступны три варианта ядра процессора Nios II:

  • Nios2f – «быстрый» вариант, оптимальный для критически важных приложений и приложений с большим объемом кода и/или данных (например, системная полнофункциональная операционная система). Этот вариант имеет отдельные кэши инструкций и данных. Он обеспечивает наивысшую производительность, но значительно больше по размеру.
  • Nios2s – «стандартный» вариант, оптимальный для недорогих приложений средней производительности, в том числе с большим объемом кода и/или данных. Этот вариант имеет кэш инструкций, но не кэш данных. Он обеспечивает ядро ​​меньшего размера, не слишком жертвуя производительностью.