Реферат за темою випускної роботи
Зміст
- Вступ
- 1. Актуальність теми
- 2. Завдання і мета дослідження
- 3. Огляд досліджень та розробок
- 4. Дослідження мікропроцесорної архітектури FPGA плат фірми Xilinx
- 4.1. Microblze
- 4.2. Шина PLB
- 5. Розробка методу емуляції порту PS/2
- 5.1. Інтерфейс PS/2
- 5.2. Імітатор клавіатури
- 5.3. VHDL модель передачі даних від клавіатури
- 5.4. VHDL модель прийому даних від клавіатури
- Висновки
- Список джерел
1. Вступ
Процес проектування цифрових пристроїв є дуже довгим та трудомістким завданням для якого необхідні фахівці високого рівня кваліфікації. Таким чином, навчання персоналу є, мабуть, найбільш важливим аспектом для будь-якої компанії, що займається будь-якою сферою діяльності, особливо розробкою різних пристроїв і програмного забезпечення.
Сучасний світ надає безліч способів для навчання: школи, університети, спеціалізовані курси тощо. Однак, як би добре там не викладали інформацію, основою і найбільш важливим процесом при навчанні є самоосвіта. У зв'язку з цим сьогодні одним з найбільш популярних методів навчання є онлайн навчання.
В інтернеті існують безліч ресурсів, що надають як різну інформацію, так і набір інструментів, що необхідні для проведення експериментів. Особливо це актуально для студентів таких напрямів як комп'ютерна інженерія, оскільки їм необхідний досвід роботи з реальними апаратурними ресурсами для розуміння принципів їх роботи.
Одним зі способів познайомитися з розробкою апаратного забезпечення є використання так званих програмованих користувачем вентильних матриць FPGA, які представляють собою тип пристрою, який легко реконфігуровувати [1].
У даній роботі наведено один з основних етапів створення віртуальної FPGA лабораторії, а саме розробка методу емуляції периферійних пристроїв.
1. Актуальність теми
На сьогоднішній день для студентів, які вирішили зануритися в область комп'ютерних наук та технологій, існує безліч напрямків. На вибір одного напрямку для його подальшого вивчення впливає безліч чинників. У той час як програмістам, що вивчають такі мови як С, С++, C#, Java і тому подібних, достатньо блокнота та одного з open source компіляторів, а програмістам, що вивчають апаратну складову обчислювальних систем, наприклад, FPGA, необхідно як програмні пакети, з яких open source не так вже й багато та й їх можливості дуже обмежені, так і різного роду мікросхеми та плати для проведення експериментів. Створення віртуальної FPGA лабораторії надає можливість проведення експериментів на реальному обладнанні, що допоможе в підготовці фахівців в галузі комп'ютерної інженерії.
Магістерська робота присвячена розробки методу емуляції периферійних пристроїв для віртуальної FPGA лабораторії. В якості цільового базису використовуються FPGA плати фірми Xilinx <[2]. Дані плати мають високу функціональністю, що дозволяє використовувати їх як для реалізації реальних пристроїв, так і для тестування різного роду апаратурних засобів, а також для прототипування. Також при виконанні даної роботи використовуються САПР Xilinx ISE, Xilinx ChipScope Pro, Aldec Active - HDL, Hardware Debugger.
2. Завдання і мета дослідження
Метою дослідження виступає розробка програмно-апаратного методу, що дозволяє при роботі з віддаленою FPGA-платою також взаємодіяти з периферійними пристроями або їх моделями, наприклад, через PS/2, Uart, тощо.
Основні задачі дослідження:
- Вивчення архітектури FPGA плат фірми Xilinx
- Аналіз існуючих платформ, що надають віддалений доступ до FPGA-ресурсів
- Аналіз методів емуляції роботи з периферійними пристроями на FPGA платах, що існують на сьогоднішній день.
- Дослідження інтерфейсів інформаційного обміну периферійних портів.
- Розробка програмно-апаратного методу емуляції периферійних пристроїв на FPGA платі.
Объект исследования: выступают FPGA-проекты типа система-на-кристалле.
Предмет исследования: виступають периферійні порти та їх інтерфейси інформаційної взаємодії.
Нукова новизна: Був розроблений спосіб імітації периферійних пристроїв для мікропроцесорної архітектури FPGA проектів на базі мікропроцесору Microblaze. Запропонований метод має досить універсальний характер, тому що дозволяє імітувати більшість периферійних пристроїв.
Результати, що були отримані при виконанні даної магістерської роботи планується використовувати для створення віртуально FPGA лабораторії.
3. Огляд досліджень та розробок
Сьогодні у світі існує кілька розроблених проектів віртуальної FPGA лабораторії. У них реалізована можливість роботи з цифровими датчиками (кнопками, перемикачами, тощо) на самій FPGA платі і з деякими периферійними портами, наприклад, PS/2. Для цього використовуються різні методи.
Один з методів включає використання додаткового пристрою введення/виведення, яке приймає дані користувача та через спеціальний коннектор посилає сигнали FPGA платі [3].
Інший варіант – створення програмного блоку, який буде емулювати роботу периферії FPGA плати [4,5].
4. Дослідження мікропроцесорної архітектури FPGA плат фірми Xilinx
4.1. Microblaze
FPGA плати фірми Xilinx оснащені процесором Microblaze [6].
MicroBlaze - вбудовуване soft-процесорне ядро з RISC-архітектурою, оптимізоване для створення систем-на-кристалі FPGA фірми Xilinx. MicroBlaze має універсальні засоби зв'язку з периферією, що забезпечують можливості його широкого застосування у вбудованих системах. Основна шина вводу/виводу – CoreConnect PLB – шина з можливістю роботи в режимах master та slave. Більшість блоків підключається безпосередньо до PLB. Для доступу до внутрішньої пам'яті ПЛІС (BRAM), MicroBlaze використовує спеціальну шину LMB, що знижує навантаження на інші шини.
Структура мікропроцесорного ядра MicroBlaze побудована за принципом Гарвардської архітектури, в основі якої лежить концепція використання роздільних шин даних та команд. Організація магістралей мікропроцесора відповідно до цієї концепції забезпечує досягнення високих швидкостей виконання операцій. Узагальнена структура мікропроцесорного ядра MicroBlaze представлена на рис. 1

Сірим на малюнку відзначені опціональні блоки, наявність яких визначається при конфігуруванні системи. Для конфігурації доступні різні параметри MicroBlaze: можуть бути окремо вказані розмір кешу, довжина конвеєра (3 або 5-рівневий), вбудована периферія, блок управління пам'яттю, шинні інтерфейси і т.д. Крім того, ключові команди процесора, які рідко використовуються, але при цьому вимагають значних апаратних витрат, можуть бути вибірково додані або видалені (тобто блоки множення, ділення, операцій з плаваючою комою і тому подібні).
4.2. Шина PLB
Основний інтерес в цій структурі представляє шина PLB - Processor Local Bus. Це 128-бітна шина для з'єднання довільного числа периферійних пристроїв, що працюють в режимах master та slave. Вона складається з модуля управління шиною, таймера, програмних модулів читання та запису даних, блоку адресації і додаткового DCL (Device Control Register) slave інтерфейсу для забезпечення доступу до регістру помилок [8]. На малюнку 2 наведена схема підключення пристроїв до шини PLB, надана розробником.

Таким чином, все спілкування FPGA плати з периферійними пристроями здійснюється за допомогою шини PLB.
Робота FPGA плати з периферійними пристроями здійснюється за допомогою периферійних портів, які організовують інформаційний обмін між пристроями ( FPGA платою та конкретним периферійним пристроєм ) з використанням спеціального інтерфейсу, наприклад, PS/2, uart, vga, тощо.
Сама робота з такою віртуальною лабораторією припускає, що користувач має набір даних, що були отримані від реального пристрою або ж від його моделі, який він разом з проектом посилає на веб-ресурс, а далі ці дані приймають участь у моделюванні всього проекту користувача. Таким чином необхідно на серверній стороні ресурсу мати емулятори всіх інтерфейсів порті, які організовують інформаційний обмін між FPGA платами та реальними периферійними пристроями. Також знадобитися створення різних додаткових модулей, наприклад, буферів пам'яті.
5. Розробка методу емуляції порту PS/2
5.1. Інтерфейс PS/2
Для створення емулятора інтерфейсу інформаційного обміну необхідно спершу вивчити організацію кожного інтерфейсу. Почнемо з інтерфейсу PS/2, який зазвичай використовується для з'єднання ПК з клавіатурою та мишкою.
PS/2 - двонаправлений інтерфейс, що організовує інформаційний обмін між двома пристроями. Фізичний порт PS/2 зображений на рисунку 3.

Алгоритм роботи емулятора порту PS/2, що організовує інформаційний обмін з клавіатурою виглядає наступним чином:
- Сервер приймає рядок, введений користувачем на клієнтській стороні веб-ресурсу віртуальної FPGA- лабораторії.
- Далі користувацький рядок передається в буфер на FPGA- платі.
- Далі рядок посимвольно передається в імітатор клавіатури.
- Імітатор клавіатури здійснює підключення до порту PS/2 на FPGA платі.
- . Імітатор здійснює введення інформації користувача посимвольно безпосередньо в порт PS/2.
Функціональна схема роботи FPGA- плати з віртуальною клавіатурою представлена на рисунку 4.

5.2. Імітатор клавіатури
Імітатор клавіатури повинен передавати кожен символ користувача в 11-бітному форматі, який наведено в таблиці 1.
Таблиця 1 – Формат пакету даних від клавіатури до FPGA плати
Біти | Значення |
1 | Старт-біт. Завжди дорівнює 0 |
2–9 | Інформація, що передається. Найменший значний біт – перший |
10 | Біт парності |
11 | Стоп-біт. Завжди дорівнює 1 |
Частота такту порту PS/2 10-16,7 кГц. Час від переходу Clock в "1" до зміни Data повинен бути не менше 5 мкс. Час від зміни Data до переходу Clock в "0" повинен бути не менше 5 мкс та не більше 25 мкс. Тимчасова діаграма, що ілюструє передачу даних від пристрою до хосту за допомогою інтерфейсу PS/2, а також тимчасові характеристики сигналів наведені на рисунку 5 [10]

Програмний імітатор створюється на мові VHDL [11], як програмна надбудова над процесором microblaze.
При створенні іммітатора клавіатури треба також враховувати такі особливості:
- Кожна клавіша має унікальний scan-code
- При натисканні клавіші scan-code посилається в порт
- При відпусканні клавіши надсилається break-code 0xF0
- При затисканні клавіши scan-code надсилається кожні 100 мсек
5.3. VHDL модель передачі даних від клавіатури
Передача даних від клавіатури через порт PS/2 виглядає наступним чином:
Signal_State_Fromation: Process (Reset, CLK) begin if (Reset ='1') then signal_state <= Start; elsif (CLK'Event and CLK = '1') then case signal_state is when Start => signal_state <= d0; when d0 => signal_state <= d1; when d1 => signal_state <= d2; when d2 => signal_state <= d3; when d3 => signal_state <= d4; when d4 => signal_state <= d5; when d5 => signal_state <= d6; when d6 => signal_state <= d7; when d7 => signal_state <= Parity; when Parity => signal_state <= Stop; when Stop => signal_state <= Start; when Others => End Case; end if; end process;
Часова діаграма передачі даних через порт PS/2 зображена на рисунку 6.

5.4. VHDL модель прийому даних від клавіатури
Прийом даних від клавіатури через порт PS/2 виглядає наступним чином:
case state_reg is when idle => if fall_edge = '1' and rx_en = '1' then -- Shift in start bit b_next <= ps2d & b_reg(10 downto 1); n_next <= "1001"; state_next <= dps; end if; when dps => -- 8 data bits + 1 parity + 1 stop if fall_edge = '1' then b_next <= ps2d & b_reg (10 downto 1); if n_reg = 0 then state_next <= load; else n_next <= n_reg - 1; end if; end if; when load => -- 1 extra clock to complete last shift state_next <= idle; rx_done_tick <= '1'; end case;
Часова діаграма прийому даних через порт PS/2 зображена на рисунку 7.

Тепер необхідно створити програмний модуль, який при натисканні клавіші користувачем посилав би сигнал переривання процесору microblaze FPGA плати для передачі керування відповідному імітатору, який повинен заслати введену користувачем інформацію безпосередньо в порт PS/2. Після цього введена інформація повинна бути оброблена програмою користувача.

Далі необхідно розглянути організацію переривань мікропроцесора microblaze. Для початку необхідно звести біт, що дозволяє переривання процесора. Якщо це зроблено, то при виявленні сигналу переривання мікропроцесор припиняє виконання поточного коду та стрибає на адресу 0х00000010. Далі виконується наступна послідовність дій:
- Зберігається поточний контекст
- Підтверджується прийом сигналу переривання
- Виконується переривання
- Відновлюється збережений контекст і виконується повернення з переривання
У випадках, коли присутні декілька пристроїв, які можуть видавати сигнали переривання, необхідно використовувати контролер переривань, так як у microblaze є тільки один вхід переривань. При виконанні підпрограми переривання, вона запитує у контролера, який з пристроїв викликав переривання та виконуються інструкції відповідного переривання 12].
6. Висновки
На момент створення даної сторінки на порталі магістрів ДонНТУ дана магістерська робота не є завершеною. На даному етапі виконання магістерської роботи можна виділити, що обрані вектор напрямку реалізації проекту та основні методи реалізації. Надалі планується оформлення створених програмних модулів імітаторів периферійних портів, як надбудов над процесором microblaze FPGA плат фірми Xilinx і подальше тестування їх роботи на відповідних пристроях. Надалі планується більш детальне вивчення інтерфейсів інформаційної взаємодії за допомогою периферійних портів і створення універсальних програмних модулів, що емулюють відповідні інтерфейси.
Список джерел
- Wikipedia: Field-programmable gate array Інтернет-ресурс. Режим доступу: http://en.wikipedia.org/wiki/Field-programmable_gate_array
- Офіційний сайт Xilinx, виробника схем FPGA. Інтернет-ресурс. Режим доступу: http://www.xilinx.com/
- A New Virtual Hardware Laboratory for Remote FPGA Experiments on Real Hardware. Режим доступу: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.217.8484&rep=rep1&type=pdf
- A Remote FPGA Laboratory for Digital Design Students. Режим доступу: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.378.7226
- REMOTE FIELD-PROGRAMMABLE GATE ARRAY (FPGA) LAB Режим доступу: http://ijret.org/Volumes/V03/I04/IJRET_110304149.pdf
- Rod Jesman, Fernando Martinez Vallina, Jafar Saniie Microblaze Turtorial с.36
- Microblaze processor reference guide. Інтернет-ресурс. Режим доступу: http://www.xilinx.com/support/documentation/sw_manuals/mb_ref_guide.pdf
- LogiCORE IP Processor Local Bus (PLB) v4.6 (v1.05a) Интернет ресурс. –– Режим доступа: http://www.xilinx.com/support/documentation/ip_documentation/plb_v46.pdf
- Protocol PS/2, work with mouse and keyboard. Інтернет-ресурс. Режим доступу: http://www.computer-engineering.org/ps2protocol/
- PS/2 port. Internet resource. Інтернет-ресурс. Режим доступу: http://en.wikipedia.org/wiki/PS/2_connector
- Peter J. Ashenden, Jim Lewis. The Designer's Guide to VHDL. - 3rd ed. - Burlington: Library of Congress Cataloging-in-Publication Data, 2008.
- Microblaze interrupt system. Інтернет-ресурс. Режим доступу: http://www1.cs.columbia.edu/~soviani/cs4840hack/Microblaze_interrupts.html