FPGA (field-programmable gate array) дозволяє проектувати цифрові мікросхеми, використовуючи доступну плату налагодження та програмне забезпечення розробника. Хоча в назві курсу слово «програмувати», але ми будемо проектувати, тому що на виході виходить фізична цифрова схема, що виконує певний алгоритм на апаратному рівні, а не програма для процесора.

Поки ми не налаштували FPGA, всередині мікросхеми немає логіки для обробки даних з інтерфейсів. В результаті проектування отримаємо прошивку, яка після завантаження до FPGA створить необхідну нам цифрову схему. Важливою особливістю FPGA є можливість реконфігурації.

Існують два великих виробника FPGA-чіпів: Xilinx та Intel, які контролюють 58 та 42% ринку відповідно. Засновники Xilinx винайшли перший чіп FPGA у далекому 1985 році. Intel прийшла на ринок нещодавно - у 2015 році, поглинувши компанію Altera, яка була заснована в той же час, як і Xilinx. Технології Xilinx і Altera багато в чому схожі, як середовища розробки. В даному курсі ми будемо працювати з продуктами компанії Xilinx.

FPGA широко застосовуються у різних пристроях: споживчій електроніці, обладнанні телекомунікацій, платах-прискорювачах для застосування в дата-центрах, різноманітній робототехніці, а також при прототипуванні мікросхем ASIC.


Метою кредитного модуля є формування у студентів здатностей розуміти структуру та основи реалізації програмованої логіки; розуміти синтаксис та правила мов опису моделей цифрових пристроїв HDL; розуміти відмінності структурного та поведінкового стилів опису цифрових пристроїв; розуміти потребу та можливості тестування моделей цифрових пристроїв засобами HDL; створювати моделі цифрових пристроїв комбінаційного типу на VerilogHDL; створювати моделі цифрових пристроїв послідовнісного типу на VerilogHDL; створювати моделі складних ієрархічних проектів цифрових пристроїв та виконувати їх автоматичне тестування.

Навчальний курс побудований на основі програми сертифікації інженерів розробників вбудованих систем "ARM Accreditated MCU Enngeineer"  (AAME). У навчальному курсі значну увагу приділено розумінню архітектури процесорів, зокрема ARM архітектури; реалізації алгоритмів керування та контролю у вбудовуваних системах; створеню програмного забезпечення вбудовуваних систем на асемблері та на мові С, початкові навички створення програмного забезпечення вбудовуваних систем з використанням операційних систем.

Окремо розглядаються питання режимів роботи мікроконтролера для зменшення енергоспоживання; концепції переривань та побудови ПЗ для роботи в реальному часі.

На лабораторних роботах освоюється особливості налаштування конфігурації мікроконтролерів, створення проектів в середовищі автоматичної розробки програмного забезпечення для мікроконтролерів; реалізація алгоритмів керування та контролю з використанням  периферійних пристроїв мікроконтролера; виконання оптимізації програмного забезпечення за різними критеріями.