Реферат по теме выпускной работы
Содержание
- Введение
- 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 модель приема данных от клавиатуры
- Выводы
- Список источников
Введение
Процесс проектирования цифровых устройств является очень долгой и трудоемкой задачей для которой необходимы специалисты высокого уровня квалификации. Таким образом, обучение персонала является, пожалуй, наиболее важным аспектом для любой компании, занимающейся любой сферой деятельности, особенно разработкой различных устройств и программного обеспечения.
Современный мир предоставляет множество способов для обучения: школы, университеты, специализированные курсы и т.д. Однако, как бы хорошо там не преподавали информацию, основой и наиболее важным процессом при обучении является самообразование. В связи с этим сегодня один из наиболее популярных методов обучение – онлайн обучение.
В интернете существуют множество ресурсов, предоставляющих как различную информацию, так и набор инструментов, необходимых для проведения экспериментов. Особенно это актуально для студентов таких направлений как компьютерная инженерия, поскольку им необходим опыт работы с реальными аппаратурными ресурсами для понимания принципов их работы.
Одним из способов познакомиться с разработкой аппаратного обеспечения является использование так называемых программируемых пользователем вентильных матриц 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].
Выводы
На момент создания данной страницы на портале магистров ДонНТУ данная магистерская работа не является завершенной. На данном этапе выполнения магистерской работы можно выделить, что выбран вектор направления реализации проекта и основные методы реализации. В дальнейшем планируется оформление созданных программных модулей имитаторов периферийных портов, как надстроек над процессором 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. Интернет-ресурс. Режим доступа: 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