Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Пояснювальна записка
Курсової роботи
з дисципліни „Дослідження і проектування спеціалізованих
комп'ютерних систем”
Підготував:
ст. гр. KIМ-13
Булейко В.В.
Перевірив:
Трембач Б. Р.
Львів 2016
Анотація
У цій курсовій роботі проводиться проектування системи обміну пакетами даних та розробка її Verilog HDL-моделі засобами Qsys.
Основою даного мікрокомп’ютера є мікропроцесор Nios II – 32-розрядний RISC мікропроцесор.
Також потрібно спроектувати архітектуру системи обміну пакетами згідно варіанту з використанням мови апаратного опису Verilog HDL та середовища Qsys. Вибраний спосіб побудови моделі пристрою за допомогою цієї мови та інструментального засобу Quartus та Qsys забезпечує можливість швидкої модифікації архітектури.
Зміст
Завдання………………………………………………………………..
4
Вступ…………………………………………………………………...
5
1.
Середовище розробки Qsys…………………………………………..
7
1.1.
Архітектура Qsys систем……………………………………………..
7
1.2.
Функції середовища Qsys…………………………………………….
10
2.
Інтерфейс Avalon-MM………………………………………………...
11
2.1.
Високорівневий опис…………………………………………………
12
2.2.
Функції інтерфейсу…………………………………………………...
13
3.
Інтерфейс Avalon-ST………………………………………………….
19
3.1.
Високорівневий опис…………………………………………………
19
3.2.
Поєднання інтерфейсів Avalon-ST та Avalon-MM………………….
20
4.
Компоненти середовища Qsys………………………………………..
22
4.1.
Апаратна структура компонентів……………………………………
23
4.2.
Визначені користувачем компоненти………………………………..
24
4.3.
Організація файлів компонентів……………………………………..
25
5.
Розробка алгоритму…………………………………………………...
26
5.1.
Аналіз завдання……………………………………………………….
26
5.2.
Граф-схема алгоритму………………………………………………..
27
5.3.
Розробка елементів системи………………………………………….
29
6.
Результати роботи…………………………………………………….
31
Висновок……………………………………………………………….
32
Список використаних джерел………………………………………..
33
Додатки………………………………………………………………...
34
Завдання
Розробити систему обміну повідомленнями, доповнивши мікропроцесорну систему, зроблену у 5-ій лабораторній роботі, генератором чисел, співпроцесором та монітором.
Дані та керуючі сигнали між генератором, співпроцесором і монітором мають передаватися засобами інтерфейсу Avalon-ST, розробленим компанією Altera. Зв'язок із системою, зробленою у 5-ій лабораторній роботі, має здійснюватися засобами інтерфейсу Avalon-MM.
Генератор має передавати пакети розміром 36 байт. Вміст кожного байту пакету – порядковий номер цього байту в пакеті.
Співпроцесор має додавати до вмісту кожного байту пакету порядковий номер попереднього пакету.
Монітор має виконувати вивід вмісту останнього байту пакету на чотири семисегментні індикатори навчальної плати DE-0.
Інтерфейс Avalon-ST має мати такі сигнали:
Дані, розмір шини 8 біт;
Сигнал початку пакету;
Сигнал кінця пакету;
Сигнал валідності передачі.
Вступ
Мета курсового проекту полягає в опануванні методів проектування вузлів мікропроцесорних систем на прикладі створення мікропроцесорних систем засобами Quartus та Qsys з використанням мови апаратного опису Verilog HDL, тестуванні роботи мікропроцесорної системи на апаратному рівні. Розроблюваний пристрій є різновидом мікрокомп’ютерів. Він містить усі стандартні пристрої, необхідні для реалізації цифрової системи мінімальної конфігурації, а саме — процесор, пам'ять команд, пам'ять даних, внутрішній тактовий генератор, асинхронний інтерфейс для відлагодження, монітор для виводу інформації.
Основну увагу під час розробки системи обміну повідомленнями приділено проектуванню архітектури системи обміну повідомленнями з використанням мови апаратного опису Verilog HDL та засобів середовища Qsys. Вибраний спосіб побудови моделі пристрою за допомогою мови Verilog HDL та інструментальних засобів Quartus та Qsys фірми Aldec забезпечує можливість швидкої модифікації архітектури, є самоописовим, тобто він дозволяє швидко виявляти та усувати помилки проектування. Альтернативою опису моделі за допомогою мов апаратного опису є схемотехнічний синтез та синтез архітектури мікропроцесорної системи з використанням функцій алгебри логіки.
Метод схемотехнічного синтезу базується на синтезі з використанням як окремих логічних функцій, так і елементів, що побудовано на основі логічних функцій. Схемотехнічний дизайн є зручним і наочним для схем невеликої складності. Проте цей метод є практично неприйнятним для схем великої складності (від 10 тисяч логічних елементів), оскільки складно формулюється, не дає змоги швидко модифікувати проект, вчасно виявляти та усувати помилки проектування.
Незручність схемотехнічного проектування складних систем дала поштовх розробці низки мов проектування. Зокрема, на початку 80-х років почалася розробка мови Verilog HDL (Verilog hardware description language) Філом Марбі та Прабу Гоелом у фірмі Automated Integrated Design Systems (з 1985 року Gateway Design Automation) як мову моделювання апаратури.
Мова Verilog дозволяє охопити водночас декілька рівнів проектування — від архітектурного до логічного. Ця мова апаратного опису дає змогу описати пристрій як на поведінковому, так і на структурному рівнях та провести симуляцію. Тут синтез топології кристала виконують засобами автоматизованого синтезу на основі поведінкового та структурного описів пристрою. У складних проектах застосування мови Verilog та потужного засобу логічного синтезу дозволяє синтезувати пристрої, які за ефективністю перевищують аналогічні, з використанням схемотехнічного методу синтезу.
Середовище розробки Qsys
Qsys - потужний інструмент розробки для того, щоб створювати системи, засновані на процесорах, периферійних пристроях, і блоках пам'яті. Qsys дозволяє визначити і генерувати повну "систему на кристалі" (SOPC) набагато швидше ніж вручну. Qsys включений в Quartus® II і доступний для всіх Altera® клієнтів.
Qsys дозволяє створювати проекти як засновані на процесорі NiosII, так і довільні проекти, що не містять процесор.
Qsys автоматизує завдання об'єднання компонентів апаратних засобів у велику систему. Використовуючи традиційні методи проектування (SOC), необхідно вручну написати файли HDL верхнього рівня, які пов'язують разом частини системи. Використовуючи Qsys, визначаються компоненти системи в графічному інтерфейсі користувача (GUI), і Qsys генерує логіку міжз'єднань автоматично. Qsys генерує і HDL Verilog і VHDL не віддаючи переваг. Qsys вихідні HDL файли визначають всі компоненти системи, а HDL-файл верхнього рівня з'єднує компоненти разом.
На доданок, Qsys також служить відправною точкою для моделювання системи і вкладеного створення програмного забезпечення. Qsys має особливості, що дозволяють спростити написання ПО і прискорити моделювання системи.
Архітектура Qsys систем
Qsys component (компонент) - модуль проекту, який Qsys розпізнає і може автоматично додати в систему. Qsys з'єднує безліч компонентів разом, щоб створити файл HDL верхнього рівня, названий system module (системний модуль). Qsys генерує system interconnect fabric (систему міжз'єднань), яка містить логіку управління зв'язку всіх компонентів в системі.
Компоненти Qsys - стандартні блоки system module. Компоненти Qsys використовують інтерфейс Avalon® для фізичного зв'язку між собою, і можна використовувати Qsys, щоб підключити будь логічний пристрій (або на-кристалі або поза кристала), який має інтерфейс Avalon.
Є два різних інтерфейси шини Авалон:
Avalon®, з розподіленою пам'яттю (Avalon-MM), інтерфейс використовує протокол читання/запису з таблицею адрес, який дозволяє побудувати гнучку топологію з'єднання master компонентів із slave компонентами;
Avalon Streaming (потоковий) (Avalon-ST), інтерфейс є високошвидкісним, односпрямованим, який дозволяє організувати двоточкові зв'язки між потоковими компонентами.
Компоненти Qsys можуть використовувати або Avalon-MM або Avalon-ST інтерфейси або обидва одночасно.
Приклад системи:
Рисунок 1.1 показує проект FPGA, включаючи system module Qsys і визначені користувачем логічні модулі. Користувацька логіка може бути інтегрована всередині або зовні system module. У цьому прикладі, користувальницький модуль проекту всередині system module - компонент Qsys і спілкується з іншими модулями через інтерфейс майстра Avalon-MM. Користувацька логіка поза system module пов'язана з system module через інтерфейс PIO. System module включає два компоненти Qsys з Avalon-ST джерелом і інтерфейсами зливу (приймачем потоку). Системне мsжз'єднання з'єднує всі компоненти Qsys, використовуючи Avalon-MM або Avalon-ST відповідно.
Компонент може бути логічним пристроєм, який повністю утримується в межах system module, типу компонента процесора, показаного на рисунку 1.1. Альтернативно, компонент може діяти, як інтерфейс до пристрою поза кристалом, типу DDR2 компонента на рисунку 1.1. На доданок до Avalon інтерфейсу, компонент може мати інші сигнали, які з'єднуються з логікою поза системним модулем. Сигнали-Avalon можуть забезпечити інтерфейс спеціального призначення до system module, типу PIO на рисунку 1.1.
/
Рисунок 1.1 Приклад проекту ПЛІС.
Визначені користувачем компоненти.
Qsys дозволяє легко наробити власних компонентів. Користувацькі компоненти можуть використовувати або Avalon-MM, або Avalon-ST інтерфейси, або обидва. З інтерфейсом Avalon-MM, обумовлена користувачем логіка повинна дотримуватися тільки простого інтерфейсу, з адресою, даними, дозволом читання і запису. З інтерфейсом Avalon-ST, визначена користувачем логіка повинна дотримуватися протоколу інтерфейсу Avalon-ST, що конфігурується.
Використовується наступний прорядок проектування, щоб інтегрувати налаштовувану логіку в систему Qsys:
Визначити інтерфейс до визначеного користувачем компоненту;
Якщо логіка компонента розташовується на-чіпі, написати файли HDL, що описують компонент або в HDL Verilog або в VHDL;
Використовувати майстер редактора компонентів Qsys, щоб визначити інтерфейс і упакувати файли HDL в компонент Qsys;
System Interconnect Fabric.
System Interconnect Fabric з'єднує всі компоненти системи Qsys. Для компонентів Avalon-MM, system interconnect fabric - сукупність сигналів і логіки, яка з'єднує майстер і підлеглі компоненти, включаючи дешифровку адреси, мультиплексування інформаційного каналу, генерацію стану очікування, арбітраж, контролер переривання, і встановлення ширини даних. Для компонентів Avalon-ST, system interconnect fabric створює двоточкові зв'язки між потоковими компонентами.
Функції середовища Qsys
Визначення та Генерація Апаратних засобів Системи
Завдання GUI Qsys полягає в тому, щоб дозволити легко визначати структуру системи апаратних засобів, і потім генерувати систему. GUI призначений для завдань, що додають компоненти до системи, формуючи компоненти, і визначаючи, як вони з'єднуються разом.
Після того, як додати всі компоненти і визначати всі необхідні параметри системи, Qsys готовий генерувати системні міжз’єднання і вихідні файли HDL, які описують систему. Протягом генерації системи, Qsys згенерує наступні елементи:
Файл HDL для system module верхнього рівня і для кожного компонента в системі;
Файл Символу Блоку (.bsf) представляє system module верхнього рівня для використання в Файлах Блок-схеми Quartus II (.bdf);
Файли ПО (опціонально);
Тестбенчі для system module і фали моделювання ModelSim® (опціонально).
Після того, як згенеруєтья system module, він може бути включений в проект безпосередньо в Quartus II.
Створення карти пам'яті для розробки ПЗ
Для кожного мікропроцесора в системі, Qsys довільно генерує заголовний файл header, який визначає адресу кожного підлеглого компонента Avalon-MM. Крім того, кожен підлеглий компонент може забезпечуватися програмними драйверами та іншими функціями програмного забезпечення та бібліотеками для процесора.
Створення моделей симуляції і тестбенч
Qsys генерує і модель симуляції і тестбенчі для всієї системи. Тестбенчі включають наступні можливості:
Приклади застосування системного модуля;
Драйвери всіх тактових імпульсів та скидів відповідно;
Опціонально може включати моделі off-chip пристроїв.
Інтерфейс Avalon-MM
System interconnect fabric для інтерфейсів з розподіленою пам'яттю - структура міжз’єднань з широкою смугою пропускання для з'єднання компонентів, які використовують Avalon-MM інтерфейс.
Високорівневий опис
System interconnect fabric - сукупність міжз’єднань і логічних ресурсів, яка з'єднує Avalon-MM майстер і підлеглі порти на компонентах в системі. Qsys генерує system interconnect fabric, щоб відповідати потребам певних компонентів в системі. System interconnect fabric інкапсулює деталі зв'язку в системі. Це гарантує, що сигнали між головними і підлеглими портами підуть правильно, поки порти дотримуються правил специфікації інтерфейсу Avalon-MM.
System interconnect Avalon-MM підтримує:
Будь-яка кількість головних і підлегли. Відносини майстер-підлеглий можуть бути один до одного, один до багатьох, багато до одного, або багато до багатьох;
Компоненти на-чіпі;
Інтерфейс до пристроїв поза чіпом;
Різна ширина шини даних;
Різні джерела тактування;
Багатопортові компоненти.
Малюнок 2-1 показує спрощену діаграму system interconnect fabric в прикладі системи з розподіленою пам'яттю з багатьма майстрами.
/
Рис. 2.1 Приклад з’єднання пристроїв інтерфейсом Avalon-MM
Генерація system interconnect fabric - первинна мета Qsys.
System interconnect fabric складається з синхронної логіки і ресурсів маршрутизації в FPGA. Для кожного інтерфейсу порту на компонентах, system interconnect fabric управляє передачами Avalon-MM, взаємодіючи і відповідаючи на сигнали на пов'язаному компоненті. Сигнали, які з'являються на головному порту і відповідному підпорядкованому порту пари майстер-підлеглий, можуть бути відмінними в залежності від того, як system interconnect fabric транспортує сигнали між головними і підлеглими портами. System interconnect fabric може наставити між майстром і підлеглим комбінаторики, реєстрів або взагалі нічого крім проводів.
Функції інтерфейсу
Декодування адреси;
Мультиплексування інформаційного каналу (даних);
Додавання станів очікування;
Конвеєрна обробка для підвищення ефективності;
Управління конвеєром;
Endian Conversion;
Динамічне вирівнювання шини адреси;
Арбітраж для Мультімайстер;
Burst Management;
Розводка сигналів тактування;
Контролер переривань;
Розподіл скидів.
Поведінка цих функцій в певній системі Qsys залежить від схеми компонентів в системі і настройки, зроблених в графічному інтерфейсі користувача Qsys (GUI).
Декодування адреси
Виробляє сигнал chipselect. Рисунок 2.2 показує блок-схему логіки дешифрування адреси для одного майстра і двох підлеглих портів. Окрема логіка дешифрування адреси згенерована для кожного головного порту в системі.
/
Рис. 2.2 Блок-схема логіки дешифрування адреси для одного майстра і двох підлеглих портів.
У GUI Qsys, конфігуровані користувачем аспекти логіки дешифрування адреси контролюються в базових установках в списку активних компонентів в таблиці змісту, як показано на рисунку 2.3.
/
Рис. 2.3 Вигляд графічного інтерфейсу Qsys
Мультиплексування інформаційного каналу
Об'єднує сигнали readdata від безлічі підлеглих портів. На рисунку 2.4 показана блок-схема логіки мультиплексування інформаційного каналу для одного майстра і двох підлеглих портів. Qsys генерує окрему логіку мультиплексування інформаційного каналу для кожного головного порту в системі.
Мультиплексування інформаційного каналу не потрібно в напрямку запису даних. Сигнали writedata розподілені однаково всім підлеглим портам, і кожен підлеглий порт ігнорує writedata за винятком того, коли логіка дешифрування адреси вибирає той порт. У GUI Qsys, генерація логіки мультиплексування інформаційного каналу визначається з використанням панелі зв'язків на сторінці змісту системи, як показано на рисунку 2.5.
/
Рис. 2.4 Блок-схема логіки мультиплексування інформаційного каналу
/
Рис. 2.5 Панель зв'язків на сторінці змісту системи
Вставка циклів очікування
На рисунку 2.6 показана блок-схема логіки вставки стану очікування між одним майстром і одним підлеглим.
/
Рис. 2.6. Блок-схема логіки вставки стану очікування
System interconnect fabric може змусити головний порт чекати з кількох причин на додаток до потреб стану очікування підлеглого порту. Наприклад, арбітражна логіка в мультімастерной системі може змусити головний порт чекати, поки не буде надано доступ до підлеглого порту. SOPC Builder генерує логіку циклів очікування, грунтуючись на властивостях всіх підлеглих портів.
Конвеєрна обробка
Qsys може автоматично конвертувати system interconnect fabric, вставляючи регістри між усіма парами майстер-підлеглий зі специфічною тактовкою. Можна вручну конвеєризувати зв'язок між певними парами майстер-підлеглий, вставляючи компонент Avalon-MM Pipeline Bridge.
Автоматична конвеєризація, найбільш ймовірно, поліпшить роботу у випадку багатьох майстер-портів, які поділяють загальний підлеглий порт. Для господарів N, які отримують доступ до підлеглого порту, збільшений час очікування перебуває в межах (log2N + 1).
Конвеєрне управління або управління конвеєром
Інтерфейс Avalon-MM підтримує конвеєризацію передач читання. Конвеєризований порт Avalon-MM може виконувати операції читання послідовно, не чекаючи завершення попередніх.
Qsys генерує system interconnect fabric з конвеєрною логікою управління, щоб використовувати в своїх інтересах конвейеризацию компонентів скрізь, де можливо, грунтуючись на конвеєрних властивостях кожної пари майстер-підлеглий в системі.
Незалежно від конвеєрного часу очікування (конвеєрної латентності) цільового підлеглого порту, Qsys гарантує, що прочитані дані досягають кожного головного порту в порядку запиту. Оскільки головні і підлеглі порти часто вже не співпадають за конвеєрним часом очікування, system interconnect fabric часто містить логіку, щоб прибрати відмінності. Можливі випадки перераховані в таблиці 2.1.
Qsys генерує логіку для конвеєра, грунтуючись на властивостях майстрів і підлеглих портів. Формуючи систему в SOPC Builder, немає ніяких параметрів настроювання GUI, які безпосередньо керують конвеєрної логікою управління в system interconnect fabric.
Таблиця 2.1 Можливі випадки за конвеєрним часом очікування
Майстер
порт
Підлеглий
порт
Логіка конвеєрного управління
немає конв.
немає конв.
Не додає логіки
немає конв.
конв. з фікс. або змінною латентністю
System interconnect fabric змушує головний порт чекати. Ця пара майстер-підлеглий не отримує ніяких вигод конвеєрної обробки, тому що головний порт не конвеєризований і тому чекає завершення кожної операції перед початком нової. Однак, у той час як головний порт чекає, підлеглий порт може прийняти операції від іншого головного порту.
конв.
немає конв.
System interconnect fabric виконує операції, як ніби ніякий порт не конвеєризований, змушуючи головний порт чекати підлеглих даних.
конв.
конв. з фікс. латентністю
System interconnect fabric координує головний порт, щоб захопити дані в правильному тактовому циклі, коли дані дійсні на підпорядкованому порті. Цей випадок дозволяє цій парі досягти максимальної пропускної здатності.
конв.
конв. із змінною латентністю
Це найпростіший випадок, в якому підлеглий порт стверджує сигнал, коли його дані дійсні, і головний порт захоплює дані. Цей випадок дозволяє цій парі досягти максимальної пропускної здатності.
Управління пакетами
System interconnect fabric забезпечує логіку управління пакетами, щоб пристосувати можливості пакетів кожного порту в системі, включаючи порти, які не підтримують передачі пакетів. Логіка управління пакетами - кінцевий автомат, який транслює послідовні адреси і сигнали управління між підпорядкованою стороною і головною стороною.
Максимальна довжина пакета для кожного порту визначена відповідно до проекту і незалежна від інших портів в системі. Якщо головний порт ініціалізує пакет на 16 передач до підлеглого порту з максимальною довжиною пакету 8, логіка управління пакетами ініціалізує два пакети довжиною 8 до підлеглого порту. Якщо головний порт ініціалізує пакет 16 передач до підлеглого порту, який не підтримує пакети, логіка управління пакетами ініціалізує 16 окремих передач до підлеглого порту.
Перетин областей тактування (Clock Domain Crossing)
System interconnect fabric підтримує протокол Avalon-MM з кожним портом незалежно, і тому кожен порт Avalon-MM повинен тільки знати про його власні області тактування. Логіка CDC в system interconnect fabric забезпечує наступні вигоди, які спрощують зусилля з проектування систем:
Дозволяють складовим інтерфейсам працювати на частоті відмінній від тієї з якою працює логіка системи;
Усуває потребу проектувати апаратні засоби CDC вручну;
Кожен порт Avalon-MM працює тільки в одній області тактування, що зменшує складність компонентів;
Дозволяє головним портам отримати доступ до будь-якого підлеглого порту без обізнаності про його тактування;
Дозволяєте зосереджувати зусилля на оптимізації роботи тільки компонентів, які вимагають великої тактової частоти.
Логіка CDC складається з двох кінцевих автоматів (FSM), один в кожній області імпульсів, які використовують простий протокол процедури встановлення зв'язку, щоб розмножити сигнали управління (запит читання, запит запису) поперек кордону імпульсів. Рисунок 2.7 показує блок-схему області тактових імпульсів, що перетинає логіку між одним господарем і одним підлеглим портом.
/
Рис. 2.7 Блок-схема області тактових імпульсів
Розподіл сигналів скидання
System interconnect fabric генерує і розподіляє імпульси скидання в system module. Тривалість сигналу скидання - принаймні один тактовий період. System interconnect fabric стверджує скидання всієї системи в наступних випадках:
Глобальний вхід скидання до system module встановлений;
Підлеглий порт встановлює сигнал resetrequest;
FPGA переконфигурирует.
Всі повинні підтримувати цей сигнал, він асинхронний.
Інтерфейс Avalon-ST
Avalon-ST з'єднує компоненти з широкою смугою пропускання, низькою латентністю, які використовують Avalon-ST інтерфейс. Це створює інформаційні канали для односпрямованого трафіку, включаючи багатоканальні потоки, пакети і DSP дані.
Високорівневий опис
Avalon-ST - логіка, яка генерується Qsys. Використовуючи GUI Qsys, визначаєтmcz, як з'єднуються джерело Avalon-ST і порти прийому. Qsys створює високоефективне двухточкове з’єднання між цими двома компонентами. Застосування, наприклад, для Ethernet 802.3. У всіх випадках, ширина шини, пакети, і помилкові умови визначені користувачем. Рисунок 3.1 ілюструє найпростіший приклад системи, який генерує з'єднання між джерелом і приймачем. Ця пара джерело-приймач включає тільки дані і сигнали достовірності.
/
Рис. 3.1 Приклад системи, який генерує з'єднання між джерелом і приймачем
Всі передачі даних відбуваються синхронно по передньому фронту тактового сигналу. Регістри в приймачі не потрібні. Регістри в джерелі підвищують максимальну частоту. Але можна регістри поставити і в приймачі для підвищення швидкості.
Поєднання інтерфейсів Avalon-ST та Avalon-MM
Avalon-ST і Avalon-MM комплементарні. Avalon-MM інтерфейс може використовуватися для доступу до сигналів управління - Рисунок 3.2.
/
Рис. 3.2 Доступ до сигналів керування
Адаптери - конфігуровані компоненти SOPC Builder, які є частиною межсоединения:
Адаптери формату даних;
Адаптери часових співвідношень;
Адаптери каналів.
Адаптери формату даних дозволяють з'єднати інтерфейси з різними параметрами даних. Наприклад, до 128-бітної шини кілька 32-бітних інтерфейсів - Рисунок 3.3.
/
Рис. 3.3 Підключення до більшої шини декількох менших
Адаптер вибору часу дозволяє з'єднувати складові інтерфейси, які вимагають різного числа циклів перед передачею або отриманням даних. Цей адаптер вставляє FIFO між джерелом і приймачем. Адаптер може також використовуватися для зв'язку інтерфейсів, що мають сигнал готовності і не мають його.
Адаптер каналів. Наприклад, якщо канал джерела є більш вузьким ніж канал приймача, Можна використовувати цей адаптер, щоб з'єднати їх. Старші біти каналу приймача будуть обнулені. Можна також використовувати цей адаптер, щоб з'єднати джерело з більш широким каналом до приймача з більш вузьким каналом; однак, це викличе попередження, що дані можуть бути втрачені.
Ці три адаптера можуть бути об'єднані з поточними компонентами, щоб створити інформаційні канали, вхідні і вихідні потоки яких мають різні властивості. Рисунок 3.4 - приклад з подвоєнням частоти; 3.5 - з подвоєнням ширини шини та збереженням частоти; 3.6 - з підвищенням частоти.
/
Рис. 3.4 Приклад з подвоєнням частоти
/
Рис. 3.5 Приклад з подвоєнням ширини шини та збереженням частоти
/
Рис. 3.6 Приклад з підвищенням частоти
Компоненти середовища Qsys
Компонент Qsys - блок апаратних засобів проекту, доступний в межах Qsys, який може міститися в system module Qsys.
Компонент задовольняє наступним цілям:
Визначає інтерфейс на апаратні засоби компонента, типу імен і типів I / O сигналів;
Оголошує будь-які параметри, які визначають структуру складової компонент логіки і компонента;
Описує графічний інтерфейс користувача (GUI) щоб конфігурувати компонент в Qsys;
Забезпечує Qsys скріптами та іншою інформацією, щоб згенерувати опис компонента на мові (HDL) для і інтегрувати його в system module;
Містить зв'язану з компонентом інформацію, типу програмних драйверів, необхідну для вбудовування в Qsys.
У кінцевому рахунку, компонент проявляється як код HDL, що міститься в системі Qsys.
Апаратна структура компонентів
Існують два типи компонентів:
Компоненти, що зв'язуються з логікою в system module;
Компоненти, що зв'язуються з логікою поза system module.
Компоненти, які мають логіку в системному модулі
Для компонентів, які включають логіку в system module, компонент забезпечує повний опис його апаратних засобів. У перебігу генерації системи, Qsys включає логіку компонента в system module і автоматично пов'язує компонент з іншою частиною системи. Усередині system module, компонент з'єднується з system interconnect fabric. Компонент може також мати специфічні для програми сигнали інтерфейсу, які Qsys не з'єднує автоматично. Qsys експортує специфічні для програми сигнали в system module верхнього рівня, так, щоб можна було вручну з'єднати їх з логікою поза system module.
Взагалі, компоненти з'єднуються з system interconnect fabric, використовуючи або Avalon-MM або Avalon-ST інтерфейси. Один компонент може забезпечити більше ніж один порт Авалона. Наприклад, компонент міг би містити порт джерела Avalon-ST для високошвидкісних даних, на додаток до підлеглого порту Avalon-MM, призначеному для управління статусом апаратних засобів і потоком даних.
Компоненти, що зв'язуються з логікою поза системним модулем
Для компонентів, які з'єднуються з логікою поза system module, складові файли описують тільки інтерфейс до зовнішньої логіки. Протягом генерації системи, Qsys не вставляє ніякої логіки для такого компонента. Замість цього Qsys експортує інтерфейс компонента в system module верхнього рівня. Необхідно вручну зв'язати інтерфейс з зовнішньою логікою, типу модуля HDL або пристрою поза кристалом.
Визначені користувачем компоненти
Визначені користувачем компоненти - розроблені користувачем проекти HDL, які Qsys може розпізнати як компоненти.
Component Description File (_hw.tcl)
Як мінімум, визначений користувачем компонент включає наступні файли:
Verilog або файл VHDL, який визначає модуль верхнього рівня користувальницького компонента;
Файл опису компонента, який є файлом tcl з ім'ям <ім'я файлу HDL> _hw.tcl.
_hw.tcl файл визначає все, що SOPC Builder повинен знати про ім'я та місцезнаходження складових файлів проекту. _hw.tcl файл визначає наступні аспекти компонента:
ідентифікатор компонента, включаючи наступні властивості, які ідентифікують компонент:
Name - користувальницьке ім'я компонента;
Class - Унікальний ідентифікатор, використовується Qsys, щоб розрізняти компоненти. Коли створюєте компонент, залиште ім'я класу по-замовчуванню;
Version - Версія компонента;
Group - Визначає, в якій категорії компонент з'являється в списку доступних компонентів в GUI Qsys.
Апаратні деталі, включають:
Розташування файлу HDL верхнього рівня - Де файл проекту HDL верхнього рівня розташований. Шлях може бути відносно _hw.tcl файлу або абсолютним
Місцезнаходження файлів HDL моделювання.
Ім'я модуля верхнього рівня - модуля компонента верхнього рівня, який повинен бути визначений у файлі проекту верхнього рівня.
Інтерфейс до компоненту - чорний ящик, який визначає ім'я, тип і напрямок кожного сигналу інтерфейсу.
Конфігуровані користувачем параметри - _hw.tcl файл оголошує конфігуровані користувачем параметри, визначені модулем верхнього рівня.
Організація файлів компонентів
Немає жодних обмежень на те, де зберігаються визначені користувачем складові файли, поки Quartus II може знайти _hw.tcl файл. Можна зберігати _hw.tcl файли в директорії проекту Quartus II або в директорії користувача бібліотеки. Можна змішати файли з іншими проектними файлами, або відокремити їх в підкаталог.
Типовий компонент використовує наступну структуру каталогів. Імена директорій не істотні.
Component directory /
HDL / - файли HDL і _hw.tcl
<Component name> _hw.tcl - файл опису компонента
<Component name> .v or .vhd - HDL, який містить модуль верхнього рівня
Software / містить програмні драйвери або бібліотеки, пов'язані з компонентом
Qsys ігнорує будь-які файли, які не може ідентифікувати у власних цілях. Елементи, які можна знайти в директорії компонента, включають наступне:
Підкаталог inc - Цей каталог включає реєстрову карту для компонентів з підлеглими портами Avalon-MM. Реєстрова карта зазвичай оголошується як файл header мовою C, де визначаються символи і макроси необхідні для доступу до апаратних засобів компонента в програмах C. Qsys не використовує цю інформацію безпосередньо. Використоується для систем процесора Nios II;
Підкаталог HAL - Цей каталог містить програмні драйвери для компонента. Qsys не використовує цю інформацію безпосередньо. Для Nios II;
Підкаталог UCOSII - програмні драйвери для компонента, визначеного для операційної системи в реальному часі MicroC / OS-II (RTOS). Для Nios II;
Файли даних та інші.
Розробка алгоритму
Аналіз завдання
Виходячи із поставленого завдання, необхідно розробити систему обміну повідомленнями, доповнивши мікропроцесорну систему, зроблену у 5-ій лабораторній роботі, генератором чисел, співпроцесором та монітором.
Дані та керуючі сигнали між генератором, співпроцесором і монітором мають передаватися засобами інтерфейсу Avalon-ST. Зв'язок із системою, зробленою у 5-ій лабораторній роботі, має здійснюватися засобами інтерфейсу Avalon-MM.
Генератор має передавати пакети розміром 6 байт. Вміст кожного байту пакету – порядковий номер цього байту в пакеті.
Співпроцесор має додавати до вмісту кожного байту пакету порядковий номер попереднього пакету.
Монітор має виконувати вивід вмісту останнього байту пакету на чотири семисегментні індикатори навчальної плати DE-0.
Інтерфейс Avalon-ST має мати такі сигнали:
Дані, розмір шини 8 біт;
Сигнал початку пакету;
Сигнал кінця пакету;
Сигнал валідності передачі.
Граф-схема алгоритму
На рисунку 5.1 наведена граф-схема алгоритму роботи системи обміну повідомленнями засобами інтерфейсу Avalon-ST.
На першому етапі Генератор створює пакети даних, вмістом кожного байту яких є порядковий номер цього байту. Передача відбувається побайтово. При передачі першого байту співпроцесору також відсилається сигнал «початок пакету». При відсиланні останнього байту, також відсилається сигнал «кінець пакету». При тому як відбувається передача, на всьому протязі встановлюється сигнал валідності передачі.
Наступним кроком співпроцесор отримує згенеровані пакети від генератора. При отриманні сигналу валідності передачі та сигналу «початку пакету» співпроцесор модифікує отримані байти, додаючи до вмісту кожного байту порядковий номер попереднього байту. Далі співпроцесор відправляє модифіковані дані монітору разом із керуючими сигналами валідності передачі і «початку і кінця пакету».
Далі монітор при отриманні сигналу валідності та сигналу «початку пакету» чекає сигналу «кінця пакету», для того щоб можна було вивести на 4-ри 7-ми сегментних індикатора вміст останнього байту пакету.
Рис. 5.1 Граф-схема алгоритму
Розробка елементів системи
Розробка генератора
Генератор має з’єднюватись із співпроцесором та передавати інформацію засобами інтерфейсу Avalon-ST. Для цього було обрано 3 керуючих сигнал та шина даних розміром 8 біт (вихідні сигнали), сигнал тактових імпульсів та сигнал скиду (вхідні сигнали).
Керуючі сигнали:
Сигнал початку пакету;
Сигнал кінця пакету;
Сигнал валідності передачі.
/
Рис. 5.2 Вигляд компоненту генератора
Розробка монітора
Монітор має з’єднюватись із співпроцесором та отримувати від нього дані засобами інтерфейсу Avalon-ST, та має з’днюватись із зовнішнім світом, тобто із 4-ма 7-ми сегментними індикаторами.
Для інтерфейсу Avalon-ST було вибрано вхідні сигнали початку і кінця пакету, сигнал валідності передачі, та сигнал даних – шина розміром 8 біт.
Було вибрано сигнали тактових імпульсів, та сигнал скиду.
Для зв’язку із зовнішнім світом монітор має вихідний сигнал – шину даних 32 біта.
Програми для кожного компоненту наведені у додатках.
/
Рис. 5.3. Вигляд компоненту монітор
Результати роботи
Відлагодження програми відбувається на основі спеціально створених тестів за допомогою автоматизованого відлагоджувача який присутній в середовищі Quartus II, в покроковому режимі перевіряється значення потрібних змінних і вмістиме потрібних структур даних. За допомогою breakpoints відбувається зупинка виконання програми в тих місцях де відбулася логічна помилка або в місцях визначених студентом.
/
Рис. 6.1 Вигляд готової системи обміну пакетами
/
Рис. 6.2 Відлагоджувальна плата DE-0 із результатом роботи
Висновок
У процесі виконання курсового проекту було досліджені методи створювання апаратної та програмної частин проекту в середовищах Quartus II та Qsys на прикладі виводу інформації на семисегментні індикатори навчальної плати DE0. Були детально досліджені основні інтерфейси зв’язку між компонентами в середовищі Qsys, такі як Avalon-ST та Avalon-MM. Опановані знання щодо створення нових компонентів та підключення до них файлів-програм опсиу логіки роботи цих компонентів у середовищі Qsys. Були згенеровані файли Verilog верхнього рівня з логікою роботи цілої системи в середовищі Qsys. Були згенеровані виконавчі файли для відлагоджувальної плати DE-0 в середовищі Quartus II.
Список використаних джерел
https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/manual/mnl_avalon_spec.pdf
http://www.fke.utm.my/lab2/ecad2/Avalon_Bus_Interface_Tutorial.pdf
ftp://ftp.altera.com/up/pub/Altera_Material/14.0/Tutorials/making_qsys_components.pdf
https://www.altera.co.jp/content/dam/altera-www/global/en_US/pdfs/literature/hb/qts/qsys_components.pdf
https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/hb/qts/qts_qii5v1.pdf
http://www.cs.columbia.edu/~sedwards/classes/2008/4840/mnl_avalon_spec.pdf