1. Некоторые системы со встроенным процессором Nios II запускают после сброса процессора небольшую программу загрузки, которая отыскивает нужную программу в энергонезависимой памяти, копирует её в RAM (обычно внутри чипа), инициализирует важные компоненты системы и переводит на точку входа образа программы приложения. Подобные программы загрузки могут быть стандартными, просто копирующими код приложения, и расширенными, с открытым кодом, позволяющими вам лично управлять ходом загрузки. Нашей целью будет получение .jic файла, хранящего информацию о конфигурировании FPGA и о коде программы для Nios II.
2. Для начала создадим проект Quartus II под нашу задачу. Нашей задачей будет исполнение простой программки "Hello World!". При этом программа должна загружаться из EPCS памяти (в которой обычно хранится информация о конфигурировании FPGA) при каждом включении отладочной платы. Выберем New > New Project Wizard. В окне New Project Wizard укажем директорию нового проекта и его название, затем кликнем Finish. Следуя тому, что название проекта должно соответствовать его назначению, назовём проект nios_epcs.
3. Открываем Assignments > Device и выбираем чип, установленный на вашей отладочной плате, в моём случае, это "младший представитель" семейства Cyclone III – EP3C5E144C8. Кликаем на кнопку Device and Pin Options... В категории Configuration выбираем Configuration scheme – Active Serial. В категории Unused Pins – As input tri-stated with weak pull-up. В категории Voltage - Default I/O standard указываем стандарт, соответствующий вашей схеме питания I/O банков. Кликаем Ok.
4. Создаём файл верхнего уровня. File>New. В раскрывшемся списке выбираем удобный для вас формат файла описания проекта, мне предпочтительнее Verilog HDL. Кликаем Ok. Сохраняем файл File >Save As... , проверяем директорию сохранения, оставляем отметку добавления файла к текущему проекту (Add file to current project), а в графе File name пишем nios_epcs.v. Кликаем Ok.
5. Создание системы SOPC Builder. Кликаем Tools>SOPC Builder. В окне Clock settings устанавливаем рабочую частоту процессора в соответствии с частотой тактового генератора, например 25 МГц.
6. Добавление внутри чиповой памяти. На вкладке System Contents выбираем Library>Memories and Memory Controllers>On-Chip>On-Chip Memory (RAM or ROM). На вкладке General Settings создаём настройки согласно рис. 24. А на вкладке Memory initialization отметим Enable In-system memory content editor и укажем имя Instance ID как sys. Кликнем Finish, а затем правым кликом на блоке памяти выберем Rename и введём имя блока RAM_sys.
рис. 24
7. Добавление процессора Nios II. На вкладке System Contents выбираем Processors > Nios processor. Выбираем ядро Nios II/e и кликаем Finish, а затем правым кликом на блоке процессора выберем Rename и введём имя блока cpu. К редактированию процессора вернёмся позднее.
8.
Добавление модуля идентификации системы. На вкладке System Contents выбираем Debug and Performance > System ID Peripheral. Модуль не имеет
настройки. Кликнем Finish, а затем правым кликом на
блоке выберем Rename и введём имя блока sysid.
9.
Добавление модуля отладки. На вкладке System Contents выбираем Interface Protocols > Serial > JTAG UART. Кликнем Finish, а затем правым
кликом на блоке выберем Rename и введём имя блока
jtag_uart.
10. Добавление ядра последовательного флеш контроллера EPCS. На вкладке System Contents выбираем Memories and Memory Controllers > Flash > EPCS Serial Flash Controller. Кликнем Finish, а затем правым кликом на блоке выберем Rename и введём имя блока epcs_flash.
11. Выполним автоназначение базовых адресов. В панели меню выберем System > Auto-Assign Base Addresses.
12. Для того, чтобы наша программа загружалась из EPCS необходимо установить вектор сброса процессора Nios II на контроллер EPCS. Выбираем модуль cpu и создаём настройки согласно рис. 25. По завершении кликаем Finish.
рис. 25
13.
Система готова для генерирования. Кликаем Generate. По завершении
генерирования, закрываем SOPC Builder.