КОМПЛЕКС УЧЕБНЫЙ ЛАБОРАТОРНЫЙ SDK-6.1

advertisement
Научно-производственная фирма «ЛМТ»
КОМПЛЕКС УЧЕБНЫЙ ЛАБОРАТОРНЫЙ
SDK-6.1
«Система на кристалле» с процессором NIOS
Руководство по применению
Данное руководство ориентировано на версию оборудования SDK-6.1 Rev.2.
При использовании оборудования версии SDK-6.1 Rev.1 пользователь должен
самостоятельно изменить подключение выводов ПЛИС к ядру NIOS.
Версия документа: 1.0.2
Дата изменения: 16.06.06
Санкт-Петербург
2006
ООО «ЛМТ»
SDK-6.1. SOC на базе ядра NIOS. Руководство пользователя.
Содержание
1.
ВВЕДЕНИЕ ...........................................................................................................................3
2.
СОЗДАНИЕ «СИСТЕМЫ НА КРИСТАЛЛЕ» С ПРОЦЕССОРОМ NIOS ..............3
2.1. СОЗДАНИЕ ПРОЕКТА В СРЕДЕ QUARTUS II ...................................................................... 3
2.2. СОЗДАНИЕ НОВОЙ «СИСТЕМЫ НА КРИСТАЛЛЕ» ............................................................. 3
2.3. ДОБАВЛЕНИЕ МОДУЛЕЙ В СИСТЕМУ ............................................................................... 3
2.3.1.
Процессор NIOS .....................................................................................................3
2.3.2.
Встроенное ОЗУ (On-Chip RAM) .........................................................................5
2.3.3.
Параллельные порты ввода/вывода .....................................................................6
2.3.4.
Контроллер Flash-памяти ....................................................................................7
2.3.5.
Контроллер шины Avalon......................................................................................8
2.4. РАСПРЕДЕЛЕНИЕ АДРЕСНОГО ПРОСТРАНСТВА................................................................ 8
2.5. ДОПОЛНИТЕЛЬНЫЕ НАСТРОЙКИ ПРОЦЕССОРА ............................................................... 9
2.6. ГЕНЕРИРОВАНИЕ СИСТЕМЫ .......................................................................................... 10
2.7. КОМПИЛЯЦИЯ И ЗАГРУЗКА СИСТЕМЫ В СТЕНД SDK-6.1.............................................. 10
3.
СОЗДАНИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ДЛЯ ПРОЦЕССОРА NIOS .10
3.1. РАЗРАБОТКА ПРОГРАММЫ............................................................................................. 10
3.1.1.
В корневом каталоге проекта (nios32_for_sdk61) после генерации системы
появится подкаталог nios_0_sdk, в котором, в свою очередь, будет каталог src. В этом
каталоге по умолчанию находятся примеры программ на языке C для процессора Nios.
В этот же каталог (nios32_for_sdk61\nios_0_sdk\src) нужно поместить собственный
файл nios_for_sdk61.c, содержащий C-программу, зажигающую светодиоды. Исходный
код программы приведен в листинге 1. .................................................................................10
3.2. КОМПИЛЯЦИЯ ............................................................................................................... 11
3.3. ПРЕОБРАЗОВАНИЕ SREC-ФАЙЛА В BIN-ФАЙЛ ................................................................ 11
3.4. ЗАПИСЬ ПРОГРАММЫ ВО FLASH-ПАМЯТЬ СТЕНДА ........................................................ 11
4.
ЗАПУСК СИСТЕМЫ........................................................................................................12
стр. 2из 12
ООО «ЛМТ»
SDK-6.1. SOC на базе ядра NIOS. Руководство пользователя.
1. Введение
В данном руководстве рассматривается процесс создания «системы на кристалле» с 32разрядным процессором Altera NIOS для учебного стенда SDK-6.1 и тестовой программы
для нее. Программа записывается во Flash-память стенда, откуда ее и исполняет процессор
Nios-32, загруженный в ПЛИС “Cyclone”.
При создании проекта использовалось следующее программное обеспечение:
− Altera Quartus II 4.1 SP2;
− Altera Nios Development Kit, Version: 3.20.
В случае отсутствия этого программного обеспечения его необходимо установить.
2. Создание «системы на кристалле» с процессором NIOS
2.1. Создание проекта в среде Quartus II
В среде Quartus II создать новый проект с именем nios32_for_sdk61 для микросхемы Altera
Cyclone EP1C3T144C8, не добавляя в него никаких файлов, после чего открыть созданный
проект;
2.2. Создание новой «системы на кристалле»
Запустить программу SOPC Builder из меню Tools среды Quartus II. В появившемся
диалоговом окне “Create New System” ввести имя создаваемой системы (“sdk61nios”),
выбрать требуемый язык HDL (Verilog или VHDL) и нажать кнопку “OK” (рис. 1);
Рисунок 1. Диалоговое окно “Create New System”
2.3. Добавление модулей в систему
В открывшемся окне “Altera SOPC Builder – sdk61nios” во вкладке “System Contents” в
выпадающем списке “Device Family” выбрать “Cyclone”, в поле “System Clock Frequency”
ввести частоту тактового генератора (40 МГц для стенда SDK-6.1), после чего выбрать и
добавить в систему необходимые модули из списка в левой части окна:
2.3.1. Процессор NIOS
Добавить в систему процессор Altera NIOS. Для этого выбрать пункт “Nios Processor –
Altera Corporation” во вкладке “Avalon Modules” и нажать кнопку “Add”. Откроется
диалоговое окно настройки процессора, в котором необходимо:
стр. 3из 12
ООО «ЛМТ»
SDK-6.1. SOC на базе ядра NIOS. Руководство пользователя.
- в блоке “Processor Architecture” выбрать архитектуру “Nios-32”;
- в блоке “Configuration Options” из выпадающего списка “Preset Configurations”
выбрать “Standard Features / Average LE usage”, не отмечая флажками опции “Enable
advanced configuration controls” и “Smart Regeneration”.
После этого нажать кнопку “Finish” (рис. 2).
В результате в окне “Altera SOPC Builder – sdk61nios” в списке модулей появится первый
модуль – “nios_0”, а так же новая вкладка “Nios More “nios_0” Settings”, к которой мы
вернемся позднее (рис. 3);
Рисунок 2. Диалоговое окно настройки процессора
стр. 4из 12
ООО «ЛМТ»
SDK-6.1. SOC на базе ядра NIOS. Руководство пользователя.
Рисунок 3. Добавлен модуль процессора “nios_0”
2.3.2. Встроенное ОЗУ (On-Chip RAM)
Добавить в систему модуль встроенной памяти (памяти, которая будет физически
размещена внутри ПЛИС “Cyclone” вместе с процессором). Для этого выбрать пункт “OnChip Memory (RAM or ROM) ” во вкладке “Avalon Modules -> Legacy Components” и нажать
кнопку “Add”. Откроется диалоговое окно настройки встроенной памяти, в котором
необходимо:
- во вкладке “Attributes” в блоке “Memory Type” выбрать “RAM (writeable)”, не отмечая
флажком опцию “Dual-Port Access”, в блоке “Size” установить ширину шины данных
равной 16 битам и размер памяти равным 4 килобайтам;
- во вкладке “Contents” отметить флажком вариант “Blank”.
После этого нажать кнопку “Finish” (рис. 4).
В результате в окне “Altera SOPC Builder – sdk61nios” в списке модулей появится модуль
“onchip_memory_0”;
стр. 5из 12
ООО «ЛМТ»
SDK-6.1. SOC на базе ядра NIOS. Руководство пользователя.
Рисунок 4. Диалоговое окно настройки встроенной памяти
2.3.3. Параллельные порты ввода/вывода
Добавить в систему модуль параллельных портов ввода/вывода. Для этого выбрать пункт
“PIO (Parallel I/O)” во вкладке “Avalon Modules -> Other” и нажать кнопку “Add”. Откроется
диалоговое окно настройки параллельных портов ввода/вывода, во вкладке “Basic Settings”
которого необходимо:
- в блоке “Width” установить ширину порта равной 8 битам (состояние порта будет
отображаться на линейку светодиодов);
- в блоке “Direction” выбрать вариант “Output ports only”.
После этого нажать кнопку “Finish” (рис. 5).
В результате в окне “Altera SOPC Builder – sdk61nios” в списке модулей появится модуль
“pio_0”;
стр. 6из 12
ООО «ЛМТ»
SDK-6.1. SOC на базе ядра NIOS. Руководство пользователя.
Рисунок 5. Диалоговое окно настройки параллельных портов ввода/вывода
2.3.4. Контроллер Flash-памяти
Добавить в систему модуль контроллера Flash-памяти. Для этого выбрать пункт “AMD
29LV800 Flash for EP20K200E Nios Development Board” во вкладке “Avalon Modules ->
EP20K200E Nios Development Board” и нажать кнопку “Add”. Откроется диалоговое окно
настройки модуля контроллера Flash-памяти, в котором необходимо:
- во вкладке “Attributes” которого необходимо установить ширину шины данных
контроллера равной 18 битам;
- во вкладке “Simulation” выбрать вариант “Do Not Create Simulation Model”.
После этого нажать кнопку “Finish” (рис. 6). В результате в окне “Altera SOPC Builder –
sdk61nios” в списке модулей появится модуль “nios_dev_board_flash_0”;
Рисунок 6. Диалоговое окно настройки контроллера Flash-памяти
стр. 7из 12
ООО «ЛМТ»
SDK-6.1. SOC на базе ядра NIOS. Руководство пользователя.
2.3.5. Контроллер шины Avalon
Добавить в систему модуль контроллера тристабильной шины Avalon. Для этого выбрать
пункт “Avalon Tri-State Bridge” во вкладке “Avalon Modules -> Bridges” и нажать кнопку
“Add”. Откроется диалоговое окно настройки модуля контроллера тристабильной шины
Avalon, в котором необходимо выбрать вариант “Registered” в блоке “Incoming Signals”,
после чего нажать кнопку “Finish” (рис. 7).
В результате в окне “Altera SOPC Builder – sdk61nios” в списке модулей появится модуль
“tri_state_bridge_0”;
Рисунок 7. Диалоговое окно настройки контроллера тристабильной шины Avalon
2.4. Распределение адресного пространства
После добавления в систему модулей необходимо распределить между ними адресное
пространство процессора. Для иллюстрации распределения памяти на рис. 8 приведена ее
карта:
Рисунок 8. Карта памяти
Страницы 0 – 3 Flash-памяти стенда отображаются в адресное пространство процессора, т.
о. процессор имеет возможность исполнять программу, записанную в эти страницы, при
этом адрес, с которого процессор начинает считывать команды после включения питания,
задается константой “Reset Location” (см. п. 5). Чтобы при записи образа программы во
Flash-память не повредить загрузчик, расположенный в нулевой странице, значение “Reset
стр. 8из 12
ООО «ЛМТ»
SDK-6.1. SOC на базе ядра NIOS. Руководство пользователя.
Location” соответствует адресу начала 3-ей страницы Flash-памяти стенда (0x060000), т.о.
программу необходимо записывать в третью страницу. Размер программы не может
превышать размера одной страницы (128Кб).
После распределения адресных пространств модулей (начальный адрес которых указан в
соответствующих строках столбца “Base”, конечный – столбца “End”) необходимо
убедиться, что они не перекрываются (рис. 9);
Рисунок 9. Окно “Altera SOPC Builder” после добавления модулей
2.5. Дополнительные настройки процессора
Во вкладке “Nios More “nios_0” Settings” окна “Altera SOPC Builder – sdk61nios” нужно
функциям “Reset Location”, “Vector Table”, “Program Memory”, “Data Memory”, “Primary
Serial Port” и “Auxiliary Serial Port” назначить модули так, как показано на рис. 10;
стр. 9из 12
ООО «ЛМТ»
SDK-6.1. SOC на базе ядра NIOS. Руководство пользователя.
Рисунок 10. Назначение модулей функциям
2.6. Генерирование системы
Во вкладке “System Generation” окна “Altera SOPC Builder – sdk61nios” нужно отметить
флажками только опции “SDK” и “HDL”, после чего нажать кнопку “Generate”. В случае
успешной генерации системы появится надпись “SUCCESS: SYSTEM GENERATION
COMPLETED”. После этого можно закрыть SOPC Builder либо внести изменения и заново
генерировать систему.
2.7. Компиляция и загрузка системы в стенд SDK-6.1
В результате выполнения п.6 в корневом каталоге проекта (nios32_for_sdk61) было
создано 4 файла с описанием системы на языке Verilog: sdk61nios.v, nios_0.v,
onchip_memory_0.v и pio_0.v. Эти файлы нужно вручную добавить в проект в среде Quartus
II, после чего скомпилировать его, не забыв назначить используемым в проекте портам
ввода/вывода конкретные выводы микросхемы (используя “Assignment Editor”). В результате
компиляции должен быть получен конфигурационный rbf-файл, который при помощи
программы sdk61fw.exe нужно записать в любую страницу Flash-памяти стенда SDK-6.1, не
используемую для хранения конфигурационных файлов, данных или программ (в примере,
приведенном на рис. 8, использовалась страница 14). Для более подробного ознакомления с
процессом записи файлов во Flash-память рекомендуется воспользоваться документацией к
стенду SDK-6.1.
3. Создание программного обеспечения для процессора
NIOS
3.1. Разработка программы
3.1.1. В корневом каталоге проекта (nios32_for_sdk61) после генерации
системы появится подкаталог nios_0_sdk, в котором, в свою очередь,
стр. 10из 12
ООО «ЛМТ»
SDK-6.1. SOC на базе ядра NIOS. Руководство пользователя.
будет каталог src. В этом каталоге по умолчанию находятся примеры
программ на языке C для процессора Nios. В этот же каталог
(nios32_for_sdk61\nios_0_sdk\src) нужно поместить собственный файл
nios_for_sdk61.c, содержащий C-программу, зажигающую светодиоды.
Исходный код программы приведен в листинге 1.
#include "excalibur.h"
int main()
{
long i, j;
np_pio *p = na_pio_0;
p->np_piodirection = 0xFF;
p->np_piodata
= 0x5A;
while(1) {
for (i = 0; i
p->np_piodata
for (j = 0; j
p->np_piodata
}
<
=
<
=
400000; i++);
0xF8;
400000; j++);
0x07;
return 0;
}
Листинг 1. Программа, зажигающая светодиоды
3.2. Компиляция
Необходимо скомпилировать файл nios_for_sdk61.c. Для этого нужно запустить Nios SDK
Shell (Пуск -> Программы -> Altera -> Nios Development Kit 3.20 -> Nios SDK Shell), перейти
в каталог nios32_for_sdk61\nios_0_sdk\src и выполнить команду
nb –b 0x060000 nios_for_sdk61.c
где 0x060000 – адрес “Reset Location”. В результате будет создан файл
nios_for_sdk.srec;
3.3. Преобразование srec-файла в bin-файл
Файл nios_for_sdk61.srec нужно преобразовать в файл nios_for_sdk61.bin при помощи
программы srec2bin.exe:
srec2bin –o 0x060000 nios_for_sdk61.srec nios_for_sdk61.bin
где 0x060000 – адрес “Reset Location”;
3.4. Запись программы во Flash-память стенда
Полученный файл nios_for_sdk61.bin при помощи программы sdk61fw.exe нужно записать
в третью страницу Flash-памяти стенда SDK-6.1:
стр. 11из 12
ООО «ЛМТ»
SDK-6.1. SOC на базе ядра NIOS. Руководство пользователя.
sdk61fw write page3 nios_for_sdk61.bin com1
или
sdk61fw write 0x060000 nios_for_sdk61.bin com1
где 0х060000 – адрес начала страницы 3, com1 – имя используемого COM-порта.
4. Запуск системы
Загрузив в стенд конфигурационный файл из 14 страницы Flash-памяти стенда SDK-6.1,
система начнет исполнять программу, записанную в третью страницу Flash-памяти стенда.
стр. 12из 12
Download