ДонНТУ   Портал магистров

Магистр ДонНТУ Ленч Владимир Сергеевич

Ленч Владимир Сергеевич

Факультет компьютерных наук и технологий

Кафедра компьютерной инженерии

Специальность Компьютерные системы и сети

Разработка метода эмуляции периферийных устройств для виртуальной FPGA-лаборатории

Научный руководитель: к.т.н., доц. Зинченко Юрий Евгеньевич

Реферат

Содержание
Введение

Программируемая логическая интегральная схема (ПЛИС, англ. Programmable logic device, PLD [15] [16]) – электронный компонент, используемый для создания цифровых интегральных схем. В отличие от обычных цифровых микросхем, логика работы ПЛИС не определяется при изготовлении, а задаётся посредством программирования (проектирования). Для программирования используются программатор и IDE (отладочная среда), позволяющие задать желаемую структуру цифрового устройства в виде принципиальной электрической схемы или программы на специальных языках описания аппаратуры: Verilog, VHDL и др. [14] [17]

ПЛИС широко используются для построения различных по сложности и по возможностям цифровых устройств, например, устройств с большим количеством портов ввода-вывода, устройств, выполняющих цифровую обработку сигнала, устройств, выполняющих передачу данных на высокой скорости и т. д. [1]

ПЛИС является важной темой для изучения в области компьютерной инженерии. Но стоимость оборудования создает большое препятствие для получения практического опыта студентами. Финансирование ВУЗов также не позволяет приобрести достаточное количество отладочных плат, чтобы студенты могли индивидуально выполнять свои проекты на практических занятиях. Выходом из этого положения может служить создание виртуальной лаборатории с доступом к ней через сеть Интернет. Это позволит студентам отлаживать свои проекты независимо от своего местоположения и беспрепятственно получать практический опыт в проектировании устройств на ПЛИС.

1. Цели и задачи

Общей целью магистерской работы является создание виртуальной FPGA [18] [19] лаборатории с удаленным доступом через Интернет. Организация удаленного доступа включает в себя загрузку прошивки проекта в ПЛИС микросхему, организация управления устройствами ввода отладочного стенда, визуализация вывода результатов, организация распределенного доступа к плате [20] [21].

Прошивка, загружаемая в плату, является разработанным проектом на VHDL или Verilog сгенерированным в bit файл специализированной средой разработки (например, ISE Design Studio). Загрузка прошивки будет происходить в следующей последовательности:

  1. пользователь загружает bit файл в свою рабочую директорию;
  2. инициирует запуск загрузки прошивки в плату;
  3. файл загружается в плату через JTAG интерфейс.

Визуализация выходных данных планируется при помощи видеокамеры, транслирующей в реальном времени изменение состояний отладочного стенда. Помимо этого, выходные данные можно будет получить через последовательный порт, подключенный к серверу.

Основной задачей проекта и магистерской работы в целом является предоставление пользователям тестирования периферийных устройств, подключенных к плате. Так как физически получить доступ к периферийному оборудованию через Интернет у пользователя возможности не будет, необходимо разработать метод эмуляции этого оборудования таким образом, чтобы, разрабатываемый, проект для эмулированного оборудования минимально отличался от проекта с реальными устройствами. В первую очередь, планируется разработать эмуляторы для компьютерной мыши и клавиатуры, подключаемых по протоколу PS/2.

Также при организации удаленного доступа к FPGA [22] [23] плате необходимо учесть распределенный доступ, который заключается в разграничении прав доступа к отладочному стенду и организации очереди работы с ним. Это необходимо сделать потому что в плату можно загрузить только один проект. Поэтому нужно организовать два типа доступа: глобальный и локальный. Глобальный тип доступа заключается в установлении администратором особых прав на доступ к плате, а локальный в организации очереди работы с платой, то есть работа с одной платой возможна только в рамках одной сессии. Как только пользователь завершает работу с платой, он ее освобождает, или система автоматически освобождает плату при длительной неактивности, и тогда следующий пользователь может начать новую сессию [24] [25].

2. Актуальность и мотивация

На сегодняшний день доступ в Интернет можно получить практически с любой точки земного шара, поэтому создание виртуальной лаборатории является актуальной задачей. Организация доступа к лаборатории через веб-сайт обусловлена тем, что браузеры работают практически одинаково во всех популярных операционных системах, как для стационарных систем, так и мобильных.

Отчет о поиске по теме магистерской работы показал, что проектов по созданию виртуальных лабораторий с доступом к FPGA-комплексам единицы, а таких, которые включают в себя эмуляцию периферийного оборудования еще меньше. Один из них – это работа магистра нашей специальности Беседы Д. Г., который работал над такой же темой. К сожалению, конкретных результатов получить не удалось, поэтому данная тема остается актуальной. Его наработки и публикации по данной теме можно посмотреть на его магистерской странице [2]. Примеры научных работ по разработке виртуальных FPGA лабораторий также можно найти по ссылкам [3] [4] [5] [6].

3. Планируемые и практические результаты

Система удаленного управления платой структурно разделяется на три части: клиентская часть (веб-сайт), серверная часть и отладочный FPGA-комплекс (рисунок 1).

Структурная схема удаленной FPGA лаборатории
Рисунок 1 – Структурная схема удаленной FPGA лаборатории

Веб-сайт должен состоять из страницы авторизации, регистрации и личного кабинета. У каждого пользователя могут быть права доступа:

После регистрации пользователю присваивается право доступа гость, администратор может в личном кабинете установить ему необходимые права. Структурно личный кабинет пользователя представлен на рисунке 2.

Структура личного кабинета сайта
Рисунок 2 – Структура личного кабинета сайта

В правой части должен находится файловый менеджер личной директории пользователя. С помощью нее можно загружать файлы, создавать директории, удалять файлы и директории, и загружать прошивку в плату. В центральной части будет находится управляющая консоль, которая будет служить, в первую очередь, для ведения лога и вывода информации из отладочного стенда. Слева должен будет отображаться плеер с видеотрансляцией отладочного стенда. В нижней части находится панель управления, на которой будут находится вспомогательные настройки управления удаленной лабораторией.

Серверная часть представляет собой связующее звено между отладочным стендом и пользователем. На сервере должны быть установлены веб-сервер (IIS) для передачи информации пользователю, база данных (MySQL) и серверный язык программирования (PHP), генерирующий HTML-код и обрабатывающий данные, полученные от пользователя и отдаваемые ему. Также должно быть установлено программное обеспечение для работы с отладочным стендом (Xilinx ISE Design Studio) и программное обеспечение организующая видеотрансляцию (VLC). Для загрузки прошивки необходимо использовать JTAG интерфейс, а для приема и передачи данных предлагается использовать последовательный порт (COM-порт).

На сервере происходит обработка регистрационных данных пользователя, проверка прав доступа, организация доступа к плате, прием и передача данных от пользователя к стенду и наоборот. Также на сервере ведется видеотрансляция и передача видеопотока клиенту.

В качестве отладочного стенда будет использоваться FPGA плата фирмы Xilinx – Spartan 3E Starter Kit (рисунок 3). Плата Spartan-3E Starter Kit подчеркивает уникальные особенности FPGA плат семейства Spartan 3E и обеспечивает удобную платформу для разработки встраиваемых приложений. Плата имеет следующие особенности: параллельная NOR Flash конфигурация; множественная загрузка FPGA конфигураций из параллельной NOR Flash PROM; последовательная SPI Flash конфигурация; разработка встраиваемых систем: 32-х разрядный RISC процессор Microblaze, 8-ми разрядный контроллер PicoBlaze; DDR память [7].

плата Spartan 3E Starter Kit
Рисунок 3 – плата Spartan 3E Starter Kit [7]
4. Разработка метода эмуляции периферийных устройств

Для тестирования периферийных устройств на отладочном стенде используется микропроцессорное ядро Microblaze. Microblaze – soft-процессорное ядро, разработанное компанией Xilinx для использования в FPGA. Microblaze реализуется с помощью стандартной логики и блоков памяти ПЛИС [8].

MicroBlaze имеет универсальные средства связи с периферией, обеспечивающих возможности его широкого применения во встраиваемых системах. Основная шина ввода/вывода – CoreConnect PLB – шина с возможностью работы в режимах master и slave. Большинство блоков подключаются непосредственно к PLB. Для доступа к внутренней памяти ПЛИС (BRAM), MicroBlaze использует специальную шину LMB, что снижает нагрузку на другие шины [9] [26] [27].

Для данной задачи интерес представляет шина PLB – Processor Local Bus. Это 128-битная шина для соединения произвольного числа периферийных устройств. Она состоит из модуля управления шиной, таймера, программных модулей чтения и записи данных, блока адресации и дополнительного DCL (Device Control Register) slave интерфейса для обеспечения доступа к регистру ошибок [10] [28] [29].

4.1. Клавиатура и мышь PS/2

Прежде чем приступать к эмуляции периферийного оборудования, следует изучить принцип работы интерфейсов, с которыми оно работает. Клавиатура и компьютерная мышь чаще всего работает через интерфейс PS/2. PS/2 – двунаправленный интерфейс, организующий информационный обмен между двумя устройствами. В этом интерфейсе основными линиями являются Data и CLK. Каждый пакет имеет длину 11 бит:

  1. 1 стартовый бит – всегда равен 0;
  2. 8 бит данных;
  3. 1 бит четности;
  4. 1 стоповый бит – всегда равен 1.

Клавиатура передает по последовательному порту scan-коды клавиш, а мышь передает 3 или 4 байта данных, содержащих состояние нажатых кнопок и смещение мыши на плоскости. Четвертый байт может быть прокрутка колеса мыши, но для этого мышь необходимо специально инициализировать.

Хост устройство может посылать команды контроллеру клавиатуры и мыши. После приема каждой из команд мышь и клавиатура отвечает байтом 0xFA. Основными командами общими для мыши и клавиатуры являются:

  1. 0xFF – cброс;
  2. 0xFE – переотправка, клавиатура и мышь переотправляет последний байт.

При инициализации устройства передают байт 0xAA, при этом клавиатура после этого сразу может пересылать scan-коды клавиш, а мышь должна отправить следом байт 0x00 – это идентификатор мыши без использования колеса. Для инициализации мыши с колесом необходимо провести дополнительную инициализацию, подробней об этом можно почитать в официальной документации [11] [12] [13].

Структура пакета данных мыши показана на рисунке 4.

Структура пакета данных мыши
Рисунок 4 – Структура пакета данных мыши

Первый байт имеет следующую структуру:

  1. 1-й бит – левая кнопка мыши;
  2. 2-й бит – правая кнопка мыши;
  3. 3-й бит – зарезервировано для средней кнопки мыши;
  4. 4-й бит – всегда равно 1;
  5. 5-й бит – знак смещения по оси Х;
  6. 6-й бит – знак смещения по оси Y;
  7. 7-й бит – переполнение смещения по оси X;
  8. 8-й бит – переполнение смещения по оси Y.

Второй байт – это смещение по оси Х, а третий байт – это смещение по оси Y. Смещение считается по оси Х слева направо, а Y снизу-вверх. Причем, если мышь движется вниз и вправо, то смещение отрицательное, а если вверх и влево, то положительное. Значения смещения находятся в диапазоне -255 – 255. Знак смещения хранится в первом байте, а если это значение превышено, то устанавливается бит переполнения [11].

4.2. Структура эмулятора интерфейса PS/2

Эмулятор клавиатуры и мыши будет использовать все части проекта, а именно клиентскую, серверную и плату. На рисунке 5 показан механизм работы эмулятора интерфейса PS/2. На клиентской стороне с помощью JavaScript будут обрабатываться события клавиатуры и мыши, которые будут формировать необходимые пакеты кодов и отправлять их на сервер. Перед отправкой данных необходимо запустить инициализацию устройства. После чего обработчики событий от клавиатуры будут проверять код нажатых клавиш, подбирать необходимый код из таблицы scan-кодов, дополнять дополнительными кодами, в случае расширенных клавиш, а также дополнять отпускаемые клавиши специальным break-кодом (0xF0). Алгоритм инкапсуляции кодов клавиатуры показан на рисунке 6. Сформированные данные будут отправляться на сервер с помощью ajax-запросов. Чтобы избежать превышения количества запросов, и чтобы клиентское приложение не зависло, необходимо отправлять фиксированный объем данных, ждать ответа от сервера, и только потом отправлять следующий набор данных. Для того чтобы узнать состояние платы, требуется дополнительный асинхронный запрос, который будет повторятся с определенным интервалом времени.

Структура эмулятора PS/2
Рисунок 5 – Структура эмулятора PS/2 (Анимация: – объем 99.2КБайт, количество кадров – 11, размер – 750х549, циклов – 3)
Инкапсуляция кодов клавиатуры
Рисунок 6 – Инкапсуляция кодов клавиатуры

Мышь на клиентской части работает аналогичным образом. Также инициализатор мыши формирует необходимые коды. Обработчики событий движения мыши, нажатия и отпуска кнопок формируют пакеты данных мыши и также, как и клавиатура отправляют эти данные на сервер. Формирование пакетов данных от мыши представлено на рисунке 7.

Формирование пакетов данных мыши
Рисунок 7 – Формирование пакетов данных мыши

Сервер принимает данные от клиента, буферизирует их, и последовательно передает через COM-порт на плату. Если плата отправляет команду устройству, то эту команду перехватывает серверное приложение и отправляет соответствующий ответ.

Данные, переданные через COM-порт, принимаются платой и передаются эмулятору протокола PS/2, разработанному на языке VHDL. Цель этого эмулятора принять данные с последовательного интерфейса RS232, преобразовать эти данные в вид пакета PS/2 и передать на шину PLB, в обход физическому интерфейсу. Принятые данные с шины PLB, также следует преобразовать в вид подобный для интерфейса RS232 и передать их на сервер.

Вывод

На момент создания данной страницы магистерская работа не является завершенной. На текущий момент выполнения магистерской работы можно отметить, что выбран вектор направления реализации проекта и основные методы реализации. В дальнейшем планируется разработка всех описанных модулей эмуляции периферийного оборудования [30] [31] [32].

Список использованной литературы
  1. Википедия: ПЛИС. Интернет ресурс. Режим доступа: wikipedia.org (Дата обращения 22 мая 2016г.)
  2. Персональный сайт на портале магистров ДонНТУ. Автор: Беседа Д. Г. 2014 г. Интернет ресурс. Режим доступа: masters.donntu.ru (Дата обращения 22 мая 2016г.)
  3. Лаборатория Электронных Средств Обучения (ЛЭСО) СибГУТИ. Интернет ресурс. Режим доступа: www.labfor.ru (Дата обращения 22 мая 2016г.)
  4. Научно-практический журнал Открытое образование. Статья: Универсальная учебная лаборатория междисциплинарного обучения автоматизированному проектированию цифровой аппаратуры, 2009 г. Авторы: Н.А. Дмитриев, Л.Д. Забродин, М.Н. Ёхин, Б.Н. Ковригин, М.Ю. Павлов. Режим доступа: www.e-joe.rusub[PDF] (Дата обращения 22 мая 2016г.)
  5. A Remote FPGA Laboratory for Digital Design Students. Авторы: Joao Soares, Jorge Lobo. Режим доступа: ap.isr.uc.pt[PDF] (Дата обращения 22 мая 2016г.)
  6. International Journal of Research in Engineering and Technology. Статья: REMOTE FIELD-PROGRAMMABLE GATE ARRAY (FPGA) LAB, 2014 г., с. 842. Авторы: Karthik.S , P.Shreya , Srihari P. , N.M.Viswanath. Режим доступа: esatjournals.net[PDF] (Дата обращения 22 мая 2016г.)
  7. Spartan-3E FPGA Starter Kit Board User Guide, 2011 г. Режим доступа: www.xilinx.com[PDF] c.11 (Дата обращения 22 мая 2016г.)
  8. Википедия: Microblaze. Режим доступа: wikipedia.org (Дата обращения 22 мая 2016г.)
  9. Rod Jesman, Fernando Martinez Vallina, Jafar Saniie Microblaze Turtorial с.36. Режим доступа: ecasp.ece.iit.edu[PDF] (Дата обращения 22 мая 2016г.)
  10. LogiCORE IP Processor Local Bus (PLB) v4.6 (v1.05a) Интернет ресурс. Режим доступа: www.xilinx.com[PDF] (Дата обращения 22 мая 2016г.)
  11. The PS/2 Mouse Interface, 2001 г. Автор: Adam Chapweske. Интернет ресурс. Режим доступа: www.computer-engineering.org (Дата обращения 22 мая 2016г.)
  12. Исследование протокола PS/2 для мышки. Автор: Евгений Амосов. Интернет ресурс. Режим доступа: www.programmersclub.ru (Дата обращения 22 мая 2016г.)
  13. Практическое программирование Arduino/CraftDuino – подключаем мышку PS/2, 2009 г. Интернет ресурс. Режим доступа: robocraft.ru (Дата обращения 22 мая 2016г.)
  14. Гриценко А.А., Зинченко Ю.Е., Сероштан С.Ю.. Повышение быстродействия аппаратной приоритетной очереди в базисе ПЛИС FPGA с низкой стоимостью // Матеріали III межд. наук.-практ. конф. студ., асп. та молод. вчен. Інформація і керуючі системи в промисловості, економіці та екології, вересень 2011р. Сєвєродонецьк: Технол. ін-т Східноукр. нац. ун-ту ім. В. Даля, 2011. С. 15 – 23.
  15. Медведев К.В., Зинченко Ю.Е. Навигационная система на базе FPGA-технологий с возможностью самотестирования / Збірка матеріалів сьомої міжнародної наук. техн. конф. студентів, аспірантів та молодих науковців Інформатика та комп'ютерні технології — 2011. – Донецьк: ДонНТУ - 2011.
  16. Зинченко Ю.Е., Шерекин А.А., Коваленко И.А., Ковалев А.М. Разработка системы реального времени на базе комплекса VIRTEX-5 FPGA ML501 // Сборник трудов VII международной научно-технической конференции студентов, аспирантов и молодых учёных Информатика и компьютерные технологии, 22-23 ноября 2011 г., Донецк: ДонНТУ. - 2011. В 2-х томах, Т. 2. - С. 44-48.
  17. Зинченко Ю.Е, Шерекин А.А. Разработка устройства аппаратной сортировки с постоянным временем ввода и вывода // Информатика и компьютерные технологии, сборник трудов VII международной научно-технической конференции студентов, аспирантов и молодых учёных - 22-23 ноября 2011 г., Донецк, ДонНТУ. - 2011. В 2-х томах, Т. 1. - С. 72-76.
  18. Волошин Д.Н., Зинченко Ю.Е. Разработка системы реального времени на базе Xilinx XC3S500E Spartan-3E FPG // Сборник трудов VII международной научно-технической конференции студентов, аспирантов и молодых учёных Информатика и компьютерные технологии, 22-23 ноября 2011 г., Донецк: ДонНТУ. - 2011. В 2-х томах, Т. 1. - С. 44-47.
  19. Сероштан С.Ю., Горохов И.В., Деменко А.Г., Лобанов Е.В. Построение системы реального времени на базе платформы FPGA фирмы ALTERA // Сборник трудов VII международной научно-технической конференции студентов, аспирантов и молодых учёных Информатика и компьютерные технологии, 22-23 ноября 2011 г., Донецк: ДонНТУ. - 2011. В 2-х томах, Т. 1. - С. 61-63.
  20. Горохов И.В., Деменко А.Г., Лобанов Е.В., Сероштан С.Ю. Cравнение средств построения систем на кристалле для FPGA платформы фирмы ALTERA: SOPC Builder и Qsys // Сборник трудов VII международной научно-технической конференции студентов, аспирантов и молодых учёных Информатика и компьютерные технологии, 22-23 ноября 2011 г., Донецк: ДонНТУ. - 2011. В 2-х томах, Т. 2. - С. 19-21. 2012
  21. Шерекин А.А., Зинченко Ю.Е., Зинченко Т.А., Корченко А.А. Разработка структуры системы верификации FPGA-проектов // Сборник трудов III Всеукраинской научно-технической конференции студентов, аспирантов и молодых учёных Информационные управляющие системы и компьютерный мониторинг, 16-18 апреля 2012 г., Донецк, ДонНТУ. - 2012. С. 667-669.
  22. Горохов И.В., Зинченко Ю.Е. Проблемы верификации систем-на-кристалле на базе FPGA на разных этапах проектирования // Сборник трудов III Всеукраинской научно-технической конференции студентов, аспирантов и молодых учёных Информационные управляющие системы и компьютерный мониторинг, 16-18 апреля 2012 г., г. Донецьк: ДонНТУ. – 2012. С. 591-594.
  23. Горохов І.В., Шерекін О.О., Корченко О.О., Зінченко Ю.Є. Особливості верифікації систем-на-кристалі на базі FPGA // Матеріали II Всеукраїнської школи-семінару молодих вчених і студентів АСІТ'2012 Сучасні комп'ютерні інформаційні технології. – Тернопіль: ТНЕУ, 2012. – С. 89-90.
  24. Волошин Д.Н., Зинченко Ю.Е., Войтов Г.В. Конвейерная реализация на FPGA сумматоров и умножителей // Матеріали II Всеукраїнської школи-семінару молодих вчених і студентів АСІТ'2012 Сучасні комп'ютерні інформаційні технології. – Тернопіль: ТНЕУ, 2012. – С. 97-98.
  25. Гонтаренко Б.В., Беловолова М.А., Зинченко Ю.Е. Реализация искусственного нейрона на FPGA // Матерiали III мiжнародної науково-технiчної конференцiї студентiв, аспiрантiв та молодих вчених Інформаційні управляючі системи та комп’ютерний моніторинг (ІУС та КМ-2012), - Донецьк: ДонНТУ - 2012. - С. 586-590.
  26. Зінченко Ю.Є., Зінченко Т.А., Асланов І.Г.. Віртуальна FPGA-лабораторія з дистанційним доступом // Матеріали III Всеукраїнської школи-семінару молодих вчених і студентів АСІТ'2013 Сучасні комп‘ютерні інформаційні технології. – Тернопіль: ТНЕУ, 2013.
  27. Беседа Д.Г., Зинченко Ю.Е. Разработка метода эмуляции работы FPGA-платы с клавиатурой через порт PS/2 // Сборник трудов V Всеукраїнська науково-технічна конференція студентів, аспірантів та молодих вчених, Інформаційні управляючі системи та комп'ютерний моніторинг (ІУС КМ-2014), 22-23 квітня 2014 р., м. Донецьк : – Донецьк: ДонНТУ, 2014 - т .1 - С. 157-162
  28. Ю.Е. Зинченко, В.И. Калашников, О.Н. Дяченко, Т.А. Зинченко. Современные проекты FPGA-лаборатории ДонНТУ / Сборник трудов межд. научно-практическая конференция Инновационные перспективы Донбасса в рамках I-го Межд. научного форума Донбасс-2015, 20-22 мая 2015. – Донецк: ДонНТУ. – 2015. – С 4.
  29. В.С. Ленч, В.А. Гень, Ю.Е. Зинченко, А.В. Коваль. Исследование организации удаленного доступа к FPGA-лаборатории / / Сборник трудов межд. научн-техн. конф. студентов, аспирантов и молодых ученых Компьютерная и программная инженерия – 2015. – Донецк: ДонНТУ. – 2015. – С 5.
  30. В.В. Мохначёв, Ю.Е. Зинченко, А.В. Коваль. Анализ возможности разработки квадрокоптера на базе FPGA // / Сборник трудов vежд. научн-техн. конф. студентов, аспирантов и молодых ученых Компьютерная и программная инженерия – 2015. – Донецк: ДонНТУ. – 2015. – С 4.
  31. В.А. Гень, Д.А. Нестеренко, Ю.Е. Зинченко, к.т.н., доц., Т.А. Зинченко. Эмулятор микропроцессоров на базе FPGA // / Сборник трудов vежд. научн-техн. конф. студентов, аспирантов и молодых ученых Компьютерная и программная инженерия – 2015. – Донецк: ДонНТУ. – 2015. – С 5.
  32. Зинченко Ю., Калашников В., Хайдук С., Дяченко О., Войтов Г., Корченко А., Зинченко Т. и др.. FPGA-технологии проектирования и диагностика компьютерных систем / Сборник научных трудов VI Межд. научн.-практ. конф. Современные информационные технологии и IТ-образование. - Москва: МГУ, 2011. - Т. 1. 787 С. 422-429