Про Nios II.
Установка Quartus.
Процесс установки Quartus в linux детально описан по любой ссылке в инете. Здесь отмечу что во время прошивки проекта с использованием usb-blaster и если эта операция выполняется впервые, то есть вероятность появления вот такой ошибки:
«Unable to scan device chain. Please check the hardware setup» означает что не хватает прав для доступа к usb-blaster.
Решение очень простое:
1. sudo gedit /etc/udev/rules.d/altera-usb-blaster.rules 2. пишем в файле одну строчку: ATTR{idVendor}=="09fb", ATTR{idProduct}=="6001", MODE="666"
Nios II и hello world.
Весь процесс запуска helloworld для Nios II лучше пояснять с помощью скриншотов из квартуса и эклипса, но на самом деле это всё легко гуглится в инете. Для меня было особой проблемой это просто не понимание того что ваще надо делать и в какой последовательности. Поэтому здесь кратко последовательность шагов для helloworld для Nios II.
Есть платка с EP4CE15F17C8, на платке стоят 4 светодиода. Попробуем ими помигать с помощью Nios II.
1. Запускаем Quartus. Создаем новый проект. File->New Project wizard. Задаем место расположения проекта, имя и на следующей вкладке выбираем семейство «Cyclone IV E» и модель EP4CE15F17C8. Больше не каких настроек не требуется везде жмем «Next». Новый проект создан.
2. Создаём Nios II. Открываем «Qsys». Там уже будет создан компонент «clk_0». Добавляем еще компоненты:
«Nios II» - во вкладке «Jtag Debug Module» выставляем «No Debugger». Больше ничего не изменяем.
«On-Chip Memory (RAM or ROM)» - размер памяти укажем 8192.
«Pio (Parallel I/O)» - width = 4. Экспортируем выводы Leds наружу.
Соединяем связи. Назначаем адреса с помощью System->Assign Base Addresses. Назначаем «Reset Vector». «Exception Vectror», «Break Vectror» в настройках «Nios II». Нажимаем «Generate».
«Nios II» создан. Добавляем компонент «Nios II» на схему.
3. Создаём и добавляем на схему компонент «PLL»
4. Соединяем «PLL» и «Nios II». Остальные контакты определяем с помощью Tools->Tcl Scripts. Схема создана.
5. Напишем hello world для светодиодов. Запустим Eclipse: Tools->Nios II Software Build tools for Eclipse.
Создадим новый проект «File->New->Nios II Application and BSP from Template». Будет создано два проекта.
Тот который bsp. ПКМ->Nios II->Generate BSP.
Ток который не bsp. ПКМ->New->file->main.c. Вставляем туда:
#include "system.h" #include "altera_avalon_pio_regs.h" int main () { char leds = 0xf; long i = 0; while(1) { IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, leds); for (i=0; i<0xffffff; i++); // Delay // Johnson code counter on leds leds = leds ^ 0xf; } return 0; }
Собираем программу : ПКМ->Build project.(ctrl+B)
Конвертируем elf в hex. ПКМ->Make Targets->Build..->mem_init_generate.
Появится hex файл в директории проекта. Скопируем его в корень проекта Quartus.
6. Выполним компиляцию проекта в Quartus ->Start compilation. В результате чего получим sof файл пригодный для прошивки с помощью usb-blaster. Прошиваем его и смотрим как мигают светодиоды.