Опубликован: 24.04.2009 | Доступ: свободный | Студентов: 1180 / 358 | Оценка: 4.39 / 4.28 | Длительность: 18:45:00
Специальности: Программист
Лекция 3:

Стандарты интерфейса ввода/вывода для внешних устройств

< Лекция 2 || Лекция 3: 123456 || Лекция 4 >

Универсальная последовательная шина (USB)

Спецификация 1.0 универсальной последовательной шины (USB) 1.0 была выпущена в 1996 г. USB 2.0 является более новым стандартом с более высокой скоростью, которая поддерживает также устройства USB 1.0. Как предполагает название, USB является последовательной шиной, которая была создана для поддержки широкого спектра периферийных устройств. Она передает данные пакетами, аналогично сети, но так как максимальная длина ограничена несколькими футами, то технически она считается внешней шиной, а не сетью.

Кабели USB содержат питание +5V и соединение заземления и два сигнальных провода витой пары (D+,D-). Два сигнальных провода действуют в несимметричном и в дифференциальном режиме (один сигнал вычитается из другого). При этом используется схема кодирования NRZI (без возврата к нулю с инверсией), которая предоставляет данные вместе с полем синхронизации импульсов. Сток источника питания на шину ограничен 500mA.

USB поддерживает три скорости передачи, высокую скорость (только USB 2.0) равную 480Mb/s, полную скорость равную 12Mb/s, и низкую скорость равную 1.5Mb/s. USB управляется хостом и на шине обычно допускается только один хост. Хост отвечает за инициирование всех транзакций и распределение полосы пропускания. С одной шиной USB можно соединить до 127 различных устройств.

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

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

Рис. 3.7. В устройствах USB обычно используется недорогой микроконтроллер USB

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

USB пересылает информацию в пакетах. Существует четыре типа пакетов, пакеты маркеры, пакеты данных, пакеты квитирования, и периодические пакеты начала кадра. Типичная транзакция USB, показанная на рисунке 3.8, состоит из пакета маркера (заголовка, определяющего, что должно последовать), необязательного пакета данных (содержащего полезную нагрузку данных), и пакет квитирования (подтверждение транзакции для обнаружения ошибок и исправления). Используется циклический избыточный код (CRC) для проверки каких-либо ошибок передачи.

Процессор последовательного интерфейса USB (SIE) выполняет высокоскоростные преобразования из последовательного в параллельное представление на пакетах USB, так как скорости последовательных данных слишком высокие для большинства микроконтроллеров

Рис. 3.8. Процессор последовательного интерфейса USB (SIE) выполняет высокоскоростные преобразования из последовательного в параллельное представление на пакетах USB, так как скорости последовательных данных слишком высокие для большинства микроконтроллеров

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

Пакет маркера содержит идентификатор пакета, адрес, и конечную точку. Идентификатор пакета в примере ниже является маркером OUT. Адрес каждого устройства (ADDR) может иметь несколько конечных точек (ENDP). Конечная точка является буфером (обычно 8 байтным), который соединяет оборудование SIE устройства и встроенную программу, выполняющуюся на микропроцессоре в устройстве USB.

Программная поддержка устройств USB

Когда подключается новое устройство USB, используя специальный процесс, называемый перечислением, хост обнаруживает добавление нового устройства и опрашивает подключенное устройство, чтобы определить его ID продукта USB и ID поставщика (PID/VID). Информация PID/VID позволяет хосту найти и загрузить соответствующий драйвер для нового устройства. Хост затем посылает команду задания адреса, чтобы присвоить новому устройству адрес.

Операционные системы обычно включают драйвер для инициализации устройства USB, а затем ищут нужный драйвер специфического устройства USB. Стандартные драйверы обычно поставляются с ОС для устройств памяти, устройств интерфейса с человеком (UID), таких как клавиатура и мышь, и иногда базового последовательного устройства USB. Другие устройства обычно требуют специфического драйвера устройства от производителя. В CE идентификаторы PID/VID устройства USB и информация соответствующего драйвера хранятся в регистре. Доступны программные и аппаратные анализаторы протокола USB, как показано на рисунке 3.9, которые отслеживают и выводят пакеты USB, и будут полезны при разработке новых драйверов USB.

Анализатор протокола USB захватывает и выводит пакеты USB, обмен которыми происходит с флеш-устройством USB (www.usbdeveloper.com)

Рис. 3.9. Анализатор протокола USB захватывает и выводит пакеты USB, обмен которыми происходит с флеш-устройством USB (www.usbdeveloper.com)

Устройства В/В для аудио сигналов

Многие встроенные устройства имеют теперь средства для аудио. Audio Codec 97 (AC97) является стандартом ПК для кодирования/декодирования аудио, разработанным компанией Intel в 1997 г. Кодек относится к сигналам, которые кодируются/декодируются в аналоговое аудио из цифрового аудио и наоборот. Кодек является на самом деле объединенным конвертором A/D и D/A с микшерами.

AC97 поддерживает скорости данных до 96 kHz в стерео разрешении от 16 до 20 битов. ПК имеют также более новый стандарт HD Audio, но встроенные устройства, такие как eBox 2300 скорее всего будут использовать для аудио более старые и дешевые устройства AC97. Как видно на рисунке 3.10, Ebox 2300 использует для аудио кодек Realtek ALC202 18-bit AC97.

Блочная диаграмма аудио устройства Realtek ALC202 AC97

Рис. 3.10. Блочная диаграмма аудио устройства Realtek ALC202 AC97

В устройствах Windows Embedded CE с поддержкой аудио доступно большое число функций API для программистов приложений. PlaySound (для файлов *.wav по одному за раз), WaveIn, и WaveOut являются некоторыми из наиболее широко используемых функций API. Вместе с Windows Embedded CE поставляется некоторая версия Windows Media Player и несколько примеров прикладных программ аудио включено вместе с Windows Embedded CE в подкаталоге \SDK\SAMPLES\AUDIO. Для этой ОС определен стандарт API речи, но дополнительное программное обеспечение сторонних поставщиков процессоров речи по прежнему требуется для синтеза речи и распознавания голоса.

< Лекция 2 || Лекция 3: 123456 || Лекция 4 >