Софт процессор Nios II - Часть 2

Процессор Nios II может быть сконфигурирован под требуемую задачу. Существует 3 различные версии конфигурации процессора.

  • Nios II/f (fast) – версия процессора, предназначенная для достижения максимальной производительности. Конфигурация имеет широкий набор опций для оптимизации процессора по производительности.
  • Nios II/s (standart) – стандартная версия процессора, требующая меньше ресурсов для реализации, и характеризующаяся меньшей производительностью.
  • Nios II/e (economy) – экономичная версия процессора, требующая наименьшее количество ресурсов кристалла для реализации, и обладающая ограниченным набором возможностей.

Мы будем использовать версию economy и подключим необходимый минимум переферии:

  • JTAG-UART
  • On-chip Memory
  • PIO - порт ввода-вывода
  • Timer - таймер
Для начала этого нам хватит, даже с избытком.

Тут следует сделать отступление и поговорить о используемой плате/кристалле. Я использую клон платы от DIGIACIS.




Based on Altera EP2C5T144 FPGA chip

Configuration EPROM chip EPCS4, size 4Mbit

Onboard 50M active patch oscillator (crystal oscillator in the board's back)

5V power supply

The board has the power indicator light and reset switch

Onboard 3 SMD LED


All the IO ports and clock pin through the pin to bring out (any of these interfaces can be used for memory and peripheral expansion)


Создаем новый проект в Quartus2, выбираем нужный чип. В готовом проекте создаем top-level файл.


Выберете пункт Block Diagram / Schematic File. Откроется файл с сеткой, где вы сможете должны собрать следующую схему :


Схема собирается из простых примитивов.

Далле в меню Tools -> Qsys . Запустится мастер Qsys, в списке компонентов выберете Nios 2 Processor. Откроется окно настроек процессора.


По умолчанию мастер настроек предлагает создать Nios2/f. Нам же нужен Nios2/e, к тому же версии Standart и Full версии являются лицензируемыми. Остальные настройки оставьте теми же.

Далее добавляем компоненты JTAG-UART, и OnChip Memory. Если настройки первого оставляем дефолтными, то настройки памяти надо изменить. В пункте Tital memory size впишите 8192, что составляет 8к байт.




Далее добавьте компонент PIO (Parallel IO), по умолчанию установите ширину 8 бит, направление Output и установите галку Enable individual bit setting/clearning. 

Следующим шагом добавьте компонент таймера. Введите в поиске "Timer" и добавьте компонент.

В настройках укажите период 100us (100 микросекунд или 1/10 секунды).
Когда все компоненты добавлены, их необходимо соединить.


Соедините линии reset, clk и s1 как показано на рисунке. Создав эти соединения вы создадите единую систему тактирования, сброса и дины инструкций и данных.

Далее необходимо назначить адреса переферии, памяти и процессора. Для этого выберите пункт меню System -> Assign Base Adresses. Адреса автоматически установятся. Без этого вы получите массу ошибок о взаимном перекрытии адресов (overlaps).
Далее необходимо установить приоритет прерываний двойным щелчком установите "0" приоритет у таймиера и "16" у jtag прерываний.


Как видите у нас все еще остались две ошибки. двойным щелчком откройте настройки процессора nios2. 

В разделах Reset Vector и Exception Vector установите oncip_memory2_0. Это позволит загружаться контроллеру из оперативной памяти.

Это последний шаг по конфигурированию в Qsys. Перейдите во вкладку Generation и нажмите кнопку Generate.

После недолгого ожидания система будет сгенерирована.


Добавьте сгенерированный компонет на схему : 


Для продолжения нажмите кнопу Start Analysis & Synthesis. Проект удет проверен на ошибки и подготовлен к симуляции. В случае отсутствия ошибок откройте компонент Pin Planner и расположите пины : output типа по своему усмотрению, а clk - на вывод к которому подключен выход тактового генератора.

Последним шагом является компиляция. Нажмите кнопку Start Compilation, и скомпилируйте проект.

Всё. Теперь остается только загрузить файл прошивки в плату!




Комментарии