Вы находитесь на странице: 1из 33

Министерство образования и науки Российской Федерации

Казанский национальный исследовательский технический университет


им. А.Н. Туполева - КАИ

Институт компьютерных технологий и защиты информации


Кафедра систем автоматизированного проектирования

КУРСОВОЙ ПРОЕКТ
по дисциплине «Компьютерные технологии моделирования процессов
проектирование ЭС»
на тему: «Компьютерное моделирование интерфейса USB в пакете LabView»

Выполнил:
студент гр.4264
Галиев Н.Н.
Проверил:
Доцент кафедры САПР
Невзоров В.Н.
Оценка:___________
Подпись:__________
Дата:«____» ______________2017г.

Казань, 2017
СОДЕРЖАНИЕ

Введение...................................................................................................................3

1. Технические характеристики USB....................................................................4

2. Интерфейс usb: описание и основы устройств сопряжения............................7

3. Разработка модели интерфейса HID-устройства в среде разработки


LABVIEW...............................................................................................................15

Заключение.............................................................................................................31

Список использованных источников...................................................................32


ВВЕДЕНИЕ

Шина USB (Universal Serial Bus - универсальная последовательная шина)


появилась по компьютерным меркам довольно давно - версия первого
утвержденного варианта стандарта появилась 15 января 1996 года. Разработка
стандарта была инициирована весьма авторитетными фирмами - Intel,
DEC, IBM, NEC, Northen Telecom и Compaq.[1]

Основная цель стандарта, поставленная перед его разработчиками -


создать реальную возможность пользователям работать в режиме Plug&Play с
периферийными устройствами. Это означает, что должно быть предусмотрено
подключение устройства к работающему компьютеру, автоматическое
распознавание его немедленно после подключения и последующей установки
соответствующих драйверов. Кроме этого, желательно питание маломощных
устройств подавать с самой шины. Скорость шины должна быть достаточной
для подавляющего большинства периферийных устройств. Попутно решается
историческая проблема нехватки ресурсов на внутренних шинах IBM PC
совместимого компьютера - контроллер USB занимает только одно прерывание
независимо от количества подключенных к шине устройств.[3]
1. ТЕХНИЧЕСКИЕ ХАРАКТЕРИСТИКИ USB

Возможности USB следуют из ее технических характеристик:

 Высокая скорость обмена (full-speed signaling bit rate) - 12 Mb/s


 Максимальная длина кабеля для высокой скорости обмена - 5 m
 Низкая скорость обмена (low-speed signaling bit rate) - 1.5 Mb/s
 Максимальная длина кабеля для низкой скорости обмена - 3 m
 Максимальное количество подключенных устройств (включая
размножители) - 127
 Возможно подключение устройств с различными скоростями обмена
 Отсутствие необходимости в установке пользователем дополнительных
элементов, таких как терминаторы для SCSI
 Напряжение питания для периферийных устройств - 5 V
 Максимальный ток потребления на одно устройство - 500 mA

Поэтому целесообразно подключать к USB практически любые


периферийные устройства, кроме цифровых видеокамер и высокоскоростных
жестких дисков. Особенно удобен этот интерфейс для подключения часто
подключаемых/отключаемых приборов, таких как цифровые фотокамеры.
Конструкция разъемов для USB рассчитана на многократное
сочленение/расчленение.[2]

Возможность использования только двух скоростей обмена данными


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

Сигналы USB передаются по 4-х проводному кабелю [3]

Рис. 1. Вид разъема предназначенная только для подключения к


источнику, т.е. к компьютеру или хабу

Рис. 2. Вид разъема предназначенная только для подключения к


периферийному устройству

Номер Назначение Цвет провода


контакта
1 V BUS Красный
2 D- Белый
3 D+ Зеленый
4 GND Черный
Оплетка Экран Оплетка

Табл. 1. Распиновка USB разъема


Здесь (таблица 1) GND - цепь "корпуса" для питания периферийных
устройств, VBus - +5V также для цепей питания. Шина D+ предназначена для
передачи данных по шине, а шина D- для приема данных.[5]

Кабель для поддержки полной скорости шины (full-speed) выполняется


как витая пара, защищается экраном и может также использоваться для работы
в режиме минимальной скорости (low-speed). Кабель для работы только на
минимальной скорости (например, для подключения мыши) может быть любым
и неэкранированным.

Разъемы, используемые для подключения периферийных устройств,


показаны на рисунке выше (рисунок 1 и 2).
2. ИНТЕРФЕЙС USB: ОПИСАНИЕ И ОСНОВЫ УСТРОЙСТВ
СОПРЯЖЕНИЯ

Интерфейс USB (Universal Serial Bus - Универсальный Последовательный


Интерфейс) предназначен для подключения периферийных устройств к
персональному компьютеру. Позволяет производить обмен информацией с
периферийными устройствами на трех скоростях (спецификация USB 2.0):[6]

 Низкая скорость (Low Speed - LS) - 1,5 Мбит/с;

 Полная скорость (Full Speed - FS) - 12 Мбит/с;

 Высокая скорость (High Speed - HS) - 480 Мбит/с.

Для подключения периферийных устройств используется 4-жильный


кабель: питание +5 В, сигнальные провода D+ и D-, общий провод. 
Интерфейс USB соединяет между собой хост (host) и устройства. Хост
находится внутри персонального компьютера и управляет работой всего
интерфейса. Для того, чтобы к одному порту USB можно было подключать
более одного устройства, применяются хабы (hub - устройство,
обеспечивающее подключение к интерфейсу других устройств). Корневой
хаб (root hub) находится внутри компьютера и подключен непосредственно к
хосту. В интерфейсе USB используется специальный термин "функция" - это
логически законченное устройств, выполняющее какую-либо специфическую
функцию. Топология интерфейса USB представляет собой набор из 7 уровней
(tier): на первом уровне находится хост и корневой хаб, а на последнем - только
функции. Устройство, в состав которого входит хаб и одна или несколько
функций, называется составным (compaund device). [4]
Рис. 3. Топология интерфейса USB

Порт хаба или функции, подключаемый к хабу более высокого уровня,


называется восходящим портом (upstream port), а порт хаба, подключаемый к
хабу более низкого уровня или к функции называется нисходящим портом
(downstream port).[1]

Все передачи данных по интерфейсу иницируются хостом. Данные


передаются в виде пакетов. В интерфейсе USB испольуется несколько
разновидностей пакетов:[7]

 пакет-признак (token paket) описывает тип и направление передачи


данных, адрес устройства и порядковый номер конечной точки (КТ -
адресуемая часть USB-устройства); пакет-признаки бывают нескольких
типов: IN, OUT, SOF, SETUP;

 пакет с данными (data packet) содержит передаваемые данные;

 пакет согласования (handshake packet) предназначен для сообщения о


результатах пересылки данных; пакеты согасования бывают нескольких
типов: ACK, NAK, STALL.

Таким образом каждая транзакция состоит из трех фаз: фаза передачи


пакета-признака, фаза передачи данных и фаза согласования. 

В интерфейсе USB используются несколько типов пересылок


информации.

 Управляющая пересылка (control transfer) используется для конфигурации


устройства, а также для других специфических для конкретного устройства
целей.

 Потоковая пересылка (bulk transfer) используется для передачи


относительно большого объема информации.

 Пересылка с прерыванием (iterrupt transfer) испольуется для передачи


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

 Изохронная пересылка (isochronous transfer) также называется потоковой


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

Когда хост становится готовым принимать данные от функции, он в фазе


передачи пакета-признака посылает функции IN-пакет. В ответ на это функция
в фазе передачи данных передает хосту пакет с данными или, если она не
может сделать этого, передает NAK- или STALL-пакет. NAK-пакет сообщает о
временной неготовности функции передавать данные, а STALL-пакет сообщает
о необходимости вмешательства хоста. Если хост успешно получил данные, то
он в фазе согласования посылает функции ACK-пакет. В противном случае
транзакция завершается. [5]

Когда хост становится готовым передавать данные, он посылает


функции OUT-пакет, сопровождаемый пакетом с данными. Если функция
успешно получила данные, он отсылает хосту ACK-пакет, в противном случае
отсылается NAK- или STALL-пакет. 

Управляющие пересылки содержат не менее двух стадий: Setup-


стадия и статусная стадия. Между ними может также располагаться стадия
передачи данных. Setup-стадия используется для выполнения SETUP-
транзакции, в процессе которой пересылается информация в управляющую КТ
функции. SETUP-транзакция содержит SETUP-пакет, пакет с данным и пакет
согласования. Если пакет с данными получен функцией успешно, то она
отсылает хосту ACK-пакет. В противном случае транзакция завершается. [3]

В стадии передачи данных управляющие пересылки содержат одну или


несколько IN- или OUT-транзакций, принцип передачи которых такой же, как и
в потоковых пересылках. Все транзакции в стадии передачи данных должны
производиться в одном направлении. 

В статусной стадии производится последняя транзакция, которая


использует те же принципы, что и в потоковых пересылках. Направление этой
транзакции противоположно тому, которое использовалось в стадии передачи
данных. Статусная стадия служит для сообщения о результате выполнения
SETUP-стадии и стадии передачи данных. Статусная информация всегда
передается от функции к хосту. При управляющей записи (Control Write
Transfer) статусная информация передается в фазе передачи данных статусной
стадии транзакции. При управляющем чтении (Control Read Transfer) статусная
информация возвращается в фазе согласовании статусной стадии транзакции,
после того как хост отправит пакет данных нулевой длины в предыдущей фазе
передачи данных. [3]

Пересылки с прерыванием могут содержать IN- или OUT-пересылки. При


получении IN-пакета функция может вернуть пакет с данными, NAK-пакет
или STALL-пакет. Если у функции нет информации, для которой требуется
прерывание, то в фазе передачи данных функция возвращает NAK-пакет. Если
работа КТ с прерыванием приостановлена, то функция возвращает STALL-
пакет. При необходимости прерывания функция возвращает необходимую
информацию в фазе передачи данных. Если хост успешно получил данные, то
он посылает ACK-пакет. В противном случае согласующий пакет хостом не
посылается. [3]

Изохронные транзакции содержат фазу передачи признака и фазу


передачи данных, но не имеют фазы согласования. Хост отсылает IN- или OUT-
признак, после чего в фазе передачи данных КТ (для IN-признака) или хост
(для OUT-признака) пересылает данные. Изохронные транзакции не
поддерживают фазу согласования и повторные посылки данных в случае
возникновения ошибок.[5]

В связи с тем, что в интерфейсе USB реализован сложный протокол


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

USB определяет информацию о кодах классов, которая используется для


идентификации функциональности устройства и номинальной загрузки
драйвера устройства на основе этой функциональности. Информация
содержится в трех байтах с именами Base Class, SubClass и Protocol. На
устройстве есть два участка, где можно разместить информацию о кодовых
словах. Один участок находится в дескрипторе устройства, а другой - в
дескрипторах интерфейса. В приведенной ниже таблице показан определенный
в настоящее время набор значений базового класса, общее использование и где
этот базовый класс может использоваться (либо дескрипторы устройств или
интерфейсов, либо оба) [1].
Base Descriptor Description
Class Usage
00h Device Use class information in the Interface Descriptors
01h Interface Audio  
02h Both Communications and CDC Control
03h Interface HID (Human Interface Device)
05h Interface Physical
06h Interface Image
07h Interface Printer
08h Interface Mass Storage
09h Device Hub
0Ah Interface CDC-Data
0Bh Interface Smart Card
0Dh Interface Content Security
0Eh Interface Video
0Fh Interface Personal Healthcare
10h Interface Audio/Video Devices
11h Device Billboard Device Class
12h Interface USB Type-C Bridge Class
DCh Both Diagnostic Device
E0h Interface Wireless Controller
EFh Both Miscellaneous
FEh Interface Application Specific
FFh Both Vendor Specific
Табл. 2. Спецификация базовых классов устройств, определенных на
текущий момент
У каждого класса есть поддерживаемые типы связи, а также формат
обмена данными с хостом. 
3. РАЗРАБОТКА МОДЕЛИ ИНТЕРФЕЙСА HID-УСТРОЙСТВА В
СРЕДЕ РАЗРАБОТКИ LABVIEW.

В первых двух главах произведен краткий обзор того, как устройство


работает через USB. В этой главе будет рассмотрен простой пример HID-
устройства: USB мышь.

Модель интерфейса данного устройства решено реализовывать в среде


разработки LabVIEW фирмы National Instruments (США).
Программа LabVIEW называется и является виртуальным
прибором (англ. Virtual Instrument) и состоит из двух частей:
 блочной диаграммы, описывающей логику работы виртуального прибора;
 лицевой панели, описывающей внешний интерфейс виртуального
прибора.
Виртуальные приборы могут использоваться в качестве составных частей
для построения других виртуальных приборов.
Лицевая панель виртуального прибора содержит средства ввода-вывода:
кнопки, переключатели, светодиоды, верньеры, шкалы, информационные табло
и т. п. Они используются человеком для управления виртуальным прибором, а
также другими виртуальными приборами для обмена данными.
Блочная диаграмма содержит функциональные узлы, являющиеся
источниками, приемниками и средствами обработки данных. Также
компонентами блочной диаграммы являются терминалы («задние контакты»
объектов лицевой панели) и управляющие структуры (являющиеся аналогами
таких элементов текстовых языков программирования, как условный оператор
«IF», операторы цикла «FOR» и «WHILE» и т. п.). Функциональные узлы и
терминалы объединены в единую схему линиями связей. [3]
1. Для начала необходимо установить драйвер VISA RAW для
моделируемого устройства. Для этого используется программа NI-VISA
DRIVER WISARD. После установки драйвера, устройство не будет доступно
операционной системе.
I. Чтобы открыть мастер драйверов NI-VISA, выберите Пуск ->
Все программы -> National Instruments -> VISA -> Driver Wizard.
На рисунке 4 показан открытый экран.

Рис. 4. Мастер драйвера NI-VISA

II. С помощью данного мастера можно создать INF-файлы для PXI /


PCI или USB-устройств. В рамках данного проекта создается
драйвер для устройства USB, поэтому необходимо выбрать USB
и нажать Next . Откроется окно выбора USB-устройства мастера
драйверов NI-VISA, как показано на рисунке 5.
Рис. 5. Выбор физического устройства

III. Для этого шага необходимо выбрать устройств по


идентификатору поставщика USB и идентификатору продукта.
Эти данные можно узнать в диспетчере устройств. После выбора
устройства и нажатия Next, появится окно «Создание выходных
файлов», как показано на рисунке 6.
Рис. 6. Окно «Создание выходных файлов»

IV. Префикс USB-устройства - это просто дескриптор, который


используется для идентификации файлов, используемых для
этого устройства. Необходимо ввести префикс USB-устройства,
выбрать нужный каталог для размещения этих файлов и нажать
Next. Откроется окно «Параметры установки», как показано на
рисунке 7.
Рис. 7. Окно «Параметры установки»

V. Для автоматической установки драйвера, необходимо оставить


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

VI. После завершения работы мастера, в диспетчере устройств


появится новое устройство в группе NI-VIZA USB Device

Рис. 9. Результат работы мастера создания драйвера NI-VIZA


2. После создания драйвера устройства VISA RAW для мыши,
необходимо создать переднюю панель и реализацию взаимодействия
устройства с панелью в виде блок схемы.
I. Для создания проекта необходимо запустить LabView, нажать
Create Project (рисунок 10) и выбрать тип проекта Blank VI
(рисунок 11).

Рис. 10. Создание проекта LabView

Рис. 11. Выбор типа проекта


II. После создания проекта откроются два окна Front Panel и Block
Diagram. Удобнее сначала сформировать переднюю панель
устройства. Поэтому, в первую очередь в окне Front Panel
необходимо расположить восемь индикаторов. Для этого на
пустом месте окна необходимо щелкнуть правой кнопкой мыши
и выбрать компонент Square LED из группы Boolean. Так же на
переднюю панель нужно добавить компонент Modern -> I/O ->
VISA Resource (поле со списком выбора устройств VIZA RAW).
После установки компонентов можно изменять их размеры,
местоположения и заголовки.

Рис. 12. Педварительная передняя панель устройства


III. Далее необходимо переключиться в окно Block Diagram (горячая
клавиша переключения между окнами Ctrl + E) и убедится, что
компоненты, добавленные на передний панели, появились в окне
блок схемы как показано на рисунке 13.

Рис. 13. Окно «Block Diagram»


IV. Далее из палитры компонентов и функции необходимо добавить
функцию Instruments I/O -> VISA -> VISA Advansed -> Open
(VISA OPEN) и соединить канал VISA Recource Name c этим же
каналом визаульного компонента выбора устройств USB RAW
VISA как показано на рисунке 14. При навередении курсора к
объекту, названия его каналов подсвечиваются. Функция VISA
OPEN открывает сеанс для устройства, указанного именем
ресурса VISA, и возвращает идентификатор сеанса, который
может использоваться для вызова любых других операций этого
устройства.
Рис. 14. Добавление функции VISA OPEN
V. Далее таким же образом необходимо добавить функцию
Instruments I/O -> VISA -> VISA Advansed -> Event Handling ->
Enable Event. Данная функция включает уведомление об
указанном типе событии (прерывании). Здесь же необходимо
добавить функцию выбора типа собятия, использию
существующий компонент выбора типа прерывании. Для этого
необходимо в палитре функции и компонентов выбрать группу
Select a VI …, в открывшемся окне выбрать библиотеку
С:\Program Files (x86)\National Instruments\LabVIEW
2016\vi.lib\Instr_visa.llb и выбрать базу данных Select Event
Type.ctl. После этих действии в окне блок схемы создается еще
один компонент (выбор типа событий). Необходимо щелкнуть
по нему и в выпадающем списке выбрат USB Interrupt. Таким
образом выбирается тип события – прерывание USB. Далее этот
компонент необходимо связать с функцией Enable Event по с
соответствующими названиями каналов. Также необходимо
соединить функции Enable Event и VISA Open, но уже по двум
каналом, канал ресурса VISA и канал ошибок (рисунок 15).

Рис. 15. Добавление функции VISA Open, Enable Event и Event Type
VI. До этого момента формировалась часть блок схемы
подключения к устройству. Далее необходимо произвести
работу с устройством. Для этого понадобится цикл While Loop с
кнопкой выхода, внутри которой происходит взаимодействие с
устройством. Цикл While Loop также находится в палитре
функции и компонентов разделе Programming -> Structures. Его
так же необходимо добавить в блок схему как на рисунке 16.

Рис. 16. Цикл While Loop


VII. Далее из палитры внутри цикла необходимо добавить:
 функцию Instruments I/O -> VISA -> VISA Advansed ->
Event Handling -> Wait on Event – для приостановления
выполнение потока приложений и ожидания превышения
времени ожидания;
 компонент Modern -> I/O -> VISA Resource – для
уведомления устройства, о том что происходит ожидание.
В контекстном меню объекта необходимо указать пункт
Select Visa Class -> Event Class -> Usb Interrupt Event;
 структуру Programming -> Structures –> Case Structure -
для отбрасывания возможных ошибок.
 функцию Instruments I/O -> VISA -> VISA Advansed ->
VISA Close – для закрытия сеанса устройства VISA.
Так же необходимо соединить каналы как показано на рисунке 17

Рис. 17. Добавление объектов в цикл


VIII. Далее внутри структуры Case необходимо добавить:
 функцию Instruments I/O -> VISA -> VISA Advansed ->
Bus/Interface Specific -> VISA USB -> Get Intr Data – для
извлечения данные прерывания, которые хранятся в событии
прерывания VISA USB;
 функцию Mathematics -> Numeric -> Conversion -> To Byte
Integer – для преобразования числа в 8-разрядное целое число
в диапазоне от -128 до 127;
 четыре функции Programming -> Array -> Index Array - для
извлечения определенного разряда из массива;
 три функции Programming -> Comparison -> Greater?, три
функции Programming -> Comparison -> Less? и две функции
Programming -> Comparison -> Equal? – для определения и
визуализации состояния на передней панели
Так же необходимо соединить каналы как показано на рисунке 18
Рис. 18. Готовая блок схема
3. Запуск проекта производится по кнопке Ctrl + R. На рисунке 19
продемонстрирована работа проекта.
Рис. 19. Выполнение программы
ЗАКЛЮЧЕНИЕ

Во время выполнения курсовой работы были рассмотрены технические


характеристики, основы сопряжения и описание интерфейсов USB.

Была разработана модель HID-устройства: USB мышь в среде LabVIEW.

Во время запуска программного обеспечения видно, что USB мышь


отправляет хосту данные (сообщение) длиной 4 байта и каждое полученное
сообщение предшествует уведомляющему сообщению от хоста, который он
прослушивает (рисунок 6). 

LabVIEW - это программное обеспечение проектирования систем для


приложений тестирования, измерения и управления с быстрым доступом к
аппаратному обеспечению и внутренней информации.

Программирования LabVIEW упрощает интеграцию аппаратного


обеспечения для приложений проектирования, чтобы можно было
воспользоваться единообразным способом получения данных от аппаратных
средств NI и сторонних разработчиков. LabVIEW уменьшает сложность
прогаммирования, что позволяет сосредоточиться на единой технической
задаче. LabVIEW позволяет немедленно визуализировать результаты с
помощью встроенного пользовательского интерфейса проектирования с
поддержкой перетаскивания с интегрированными средствами просмотра
данных.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. USB Class Codes [Электронный ресурс], режим доступа:


http://www.usb.org/developers/defined_class/

2. Nugget: 1 of n : GEtting started with USB communication via VISA -


Discussion Forums - National Instruments [Электронный ресурс], режим
доступа: https://forums.ni.com/t5/LabVIEW/Nugget-1-of-n-GEtting-started-
with-USB-communication-via-VISA/td-p/743518

3. LabVIEW — Википедия [Электронный ресурс], режим доступа:


https://ru.wikipedia.org/wiki/LabVIEW

4. М. Гук. Аппаратные интерфейсы ПК. Энциклопедия. СПб.: Питер, 2002. -


528 с.: ил.

5. Алан Купер об интерфейсе. Основы проектирования взаимодействия.


СПб, М.: Бином, 2009-688 с.: ил. - ISBN 5-7503-0013-7

6. А.Я. Фридланд, Л.С. Ханамирова. Информатика и компьютерные


технологии. Основные термины. СПб.: Москва, 2003. - 272с

7. Дженифер Тидвелл. Разработка пользовательских интерфейсов. СПб.:


Питер, 2008 - 325 с.

8. Джеф Раскин. Интерфейс: новые направления в проектировании


компьютерных систем.2-е изд. - М.: Символ-плюс, 2004. - 272с

9. Справочник Интерфейсы ПК /Михаил Гук; Под ред.И. И. Четверкова и


В.М. Терехова. - 2-е изд., перераб. И доп. - СПб.: Питер, 2002. - 621с, ил.
10.А.М. Лапин. Интерфейсы. Выбор и реализация / А.М. Лапин и М.В.
Дорофеев. - М.: Высшая школа 1997 - 271 с.