Міністерство освіти та науки України
Національний університет ”Львівська політехніка”
ІКТА
Кафедра СКС
Лабораторна робота №5
з дисципліни «ДОСЛІДЖЕННЯ ТА ПРОЕКТУВАННЯ СПЕЦІАЛІЗОВАНИХ КОМП’ЮТЕРНИХ СИСТЕМ Ч.1»
Лабораторна робота №5
Тема роботи: Створення проекту засобами Quartus II та Nios II Software Build Tools for Eclipse з використанням процесорного ядра Nios II.
Мета роботи: навчитися створювати апаратну та програмну частини проекту в середовищах Quartus II та Nios II Software Build Tools for Eclipse на прикладі виводу інформації на світлодіодні індикатори навчальної плати DE0.
Хід роботи:
Запускаємо Quartus II. Створюємо новий проект та вибираємо Tools -> Qsys.
Qsys це інструмент інтеграції процесорної системи в FPGA.
2. В основному вікні Qsys в полі пошуку ядра шукаєм ядро процесора набравши: Nios.
3. Вибравши ядро процесора відкривається вікно його налаштування:
4. Вибираємо тип процесора Nios II/s нажимаєм Finish, залишивши решту налаштувань по замовчуванню.
5. Далі для майбутньої процесорної системи вибираєм пам’ять програм для процесора. Пам’ять програм для процесора має назву: On-Chip Memory (RAM or ROM). У вікні налаштування пам’яті в полі розміру пам’яті встановлюєм розмір 20480 байт (20кбайт). Залишивши решту параметрів по замовчуванню завершуєм налаштування пам’яті натисканням кнопки Finish.
6. Наступним кроком у вікні налаштування процесора (крок 4) необхідно вказати процесору пам’ять в якій буде розміщена програма. В налаштуваннях процесора (крок 4) вибираєм в полі Reset vector i exception vector пам’ять, яку ми щойно створили:
7. Для можливості вводу/виводу даних з процесора, необхідно підключити до нашої системи інтерфейс вводу/виводу. JTAG UART - це ядро вводу/виводу для процесора яке створює логічний інтерфейс UART з комп’ютером через фізичний JTAG інтерфейс. Вставляємо ядро JTAG UART в нашу систему, залишивши всі його налаштування по замовчуванню.
8. Кожна процесорна система має мати свій ідентифікатор для визначення її в системі створення програми. Цей ідентифікатор має бути унікальним для кожної апаратної системи для того, щоб при запуску програми перевіряти, що ми запускаємо програму на потрібній апаратній платформі. Вибираємо ядро SYSTEM ID PERIPHERAL, і в полі SYSTEM ID вводимо унікальний ідентифікаційний код. Також це ядро має мати назву sysid в процесорній системі, для коректного сприймання його системою для створення програм.
9. Для того, щоб зробити можливим звернення процесорної системи до зовнішніх портів вводу/виводу на ПЛІС потрібно перенести в систему ядро портів вводу/виводу PIO. Встановлюємо розрядність порта рівною 10 і спрямованість на вихід.
10. Також необхідно надати логічні назви ядрам в системі:
11. Для уникнення конфлікту адрес в системі автоматично назначаєм адреси перефирії командою: System -> Assign Base Addresses
12. Після завершення додавання всіх необхідних ядер в систему, наша система буде мати наступний вигляд:
13. Для завершення створення системи нажимаємо кнопку Generate у вкладці Generation, після збереження файла процесорної системи почнеться процес створення системи по завершенню якого процесорна система буде готовою для вставки в проект Quartus.
14. Додаємо щойно створену процесорну систему в проект Quartus. Вибираєм Assignments -> Settings…
15. В категорії Files вибираємо файл процесорної системи нажавши кнопу «…»:
16. Шукаємо необхідний файл процесорної системи в дереві каталогів, попередньо встановивши фільтр відображення на «All files», таким чином: <папка проекту Quartus> \ <папка з назвою процесорної системи Qsys> \ synthesis \ <назва системи>.qip
17. В головний BDF файл вставляємо нашу процесорну систему:
18. Підключаємо всі входи/виходи:
19. Після завершення усіх підключень компілюємо повністю систему. Таким чином ми завершили створення апаратної частини процесорної системи, тепер для того, щоб система почала працювати для неї потрібно створити і запустити програму.
20. Запускаємо Nios II Software Build Tools for Eclipse.
21. Створюєм новий проект File -> New -> Nios II Application and BSP from Template.
22. У вікні створення нового проекту вибираємо SOPC файл нашої процесорної системи і вводимо назву проекту.
23. Залишаємо решту параметрів по замовчуванню і нажимаєм кнопку finish.
Таким чином було створено два проекти:
Lab5 – основний проект для програми.
Lab5_bsp – допоміжний проект, який містить допоміжні дані про апаратні ядра для програми.
24. У вікні project explorer в контекстному меню проекту lab5_bsp вибираємо пункт properties.
25. У вкладці Nios II BSP properties вимикаємо пункт Support C++ і вмикаємо Small C Library.
26. Завершуємо редагування налаштувань натисканням Аpply і ОК.
27. Компілюємо проекти Lab5 і Lab5_BSP вибором пунктів Build project в контекстних меню у вікні Project Explorer.
28.Завантажуємо створений бінарний файл з нашою системою для прошивки в FPGA через “Programmer”.
29. Запускаємо тестову програму на процесорі. Вибираємо run -> run configurations.
У вікні Run Configurations, якщо процесорна система завантажена в ПЛІС і коректно підключена, кнопка Run буде підсвічена.
30. Запускаємо тестову програму натиснувши кнопку Run. Тестова програма запуститься і результат її роботи буде зображено у консольному вікні.
31. Після того, як ми запустили тестову програму, створюємо власну програму згідно заданого варіанту замінивши код тестової програми. У вікні Project Explorer вибираємо Hello_world.c і проводимо заміну.
Приклад програми на мові С:
#include <stdio.h>
#include "system.h"
#include "io.h"
int main()
{
int i, n;
printf("Hello from Nios II!\n");
while(1){
//вводимо затримку
for(n = 0; n < 0xFFFF; ++n);
//виводимо значення змінної в порт виводу
IOWR_32DIRECT(LED_PIO_BASE,0x0,i++);
//виводимо напис на консоль
printf("Hello from Nios II! in %d time\n", i);
}
return 0;
}
КОНТРОЛЬНІ ЗАПИТАННЯ
Призначення та основні характеристики процесора Nios II.
основні характеристики процесора Nios II :
- більше 2-х гігабайт адресного простору;
- окремий кеш інструкцій і кеш даних;
- апаратне виконання множення і ділення;
- 6-ти стадійний конвеєр;
- підтримка винятків;
- система захисту пам'яті;
- система віртуальної пам'яті;
- виконання операції множення і зсуву за один такт;
- динамічне пророкування розгалужень;
- використання до 256 користувальницьких інструкцій;
- широкі можливості налагодження через JTAG модуль;
- реалізація вимагає 1400-1800 логічних елементів FPGA;
- реалізація включає 3 блоки пам'яті M4K, плюс блоки для кеш пам'яті;
- продуктивність процесора 51000000 операцій в секунду (51 DMIPS) на частоті 50 МГц.
Які бібліотечні елементи для периферії містить процесор Nios II.
Процесор Nios II і інтерфейси для сполучення з оперативною пам'яттю і іншими периферійними компонентами системи реалізуються в кристалі FPGA. Приклад процесорної системи «DE2-70 Media Computer» наведено в попередньому розділі навчального посібника. Для з'єднання компонентів процесорної системи використовується синхронна шина Avalon. Як випливає з [8], шина Avalon може містити такі типи:
• Avalon Clock Interface, для передачі синхросигналов та управління ними;
• Avalon Reset Interface, для передачі сигналів скидання;
• Avalon Streaming Interface (Avalon-ST), для підтримки односпрямованих потоків даних, включаючи мультиплексовані, пакетні і дані цифрових сигнальних процесорів;
• Avalon Memory Mapped Interface (Avalon-MM), для читання / запису з адресацією типу ведучий / ведений;
• Avalon Tri-State Conduit Interface (Avalon TC), для сполучення з модулями поза кристала;
• Avalon Interrupt Interface, для реалізації пріоритетної системи переривань;
• Avalon Conduit Interface, для об'єднання окремих сигналів або груп сигналів, які не підходять під будь-який інший тип шини Avalon.
Призначення середовища Nios II Software Build Tools for Eclipse.
Altera забезпечує підтримку забезпечення за вказаною нижче Nios® II збірки програмного забезпечення інструменти для Eclipse. Користувачі можуть швидко і легко створювати програмні додатки для своїх систем Embedded Processor Nios II за допомогою докладної документації фірми Altera, базу знань, навчальні посібники з використання II Програмне забезпечення Nios Створення Інструменти для Eclipse, і приклади програмного забезпечення.
Nios II інтегрована середовище розробки (IDE) є спадщиною інструмент, який більше не поставляється як частина Nios II Embedded Design Suite (EDS). Nios II збірки програмного забезпечення інструменти для Eclipse, є рекомендується і підтримується потік інструмент для розробки програмного забезпечення Nios II.
Висновок:
Навчився створювати апаратну та програмну частини проекту в середовищах Quartus II та Nios II Software Build Tools for Eclipse на прикладі виводу інформації на світлодіодні індикатори навчальної плати DE0.