USB-микроконтроллер для измерительного оборудования "Система на кристалле”
1886ВЕ4У содержит USB-контроллер, интерфейсы SPI и USART, 256 байт энергонезависимой памяти данных (табл.1). Основное его применение – высокоскоростная передача данных в различной аппаратуре. USB-контроллер может оперировать в режимах Full Speed (до 12 Мбит/с) и Low Speed (до 1,5 Мбит/с).
При передаче данных по протоколу USB хост взаимодействует с адресами так называемых конечных точек (endpoints) пользовательского устройства. Каждая из них имеет собственный буфер очереди (FIFO) и может обрабатывать данные нескольких типов: объемные (Bulk), данные прерываний (Interrupt), и изохронные (Isochronous). 1886ВЕ4У содержит четыре конечных точки с глубиной FIFO 64 байт, а также 128 байт памяти для хранения пользовательского дескриптора USB-устройства. В нем описаны характеристики устройства, в том числе наименования производителя (Vendor ID) и продукта (Product ID).
Основной задачей при разработке USB-контроллера было обеспечить максимальную скорость передачи данных, но минимально задействовать микропроцессорное ядро на обслуживание интерфейса. Также USB-блок должен быть удобным в использовании и не требующим от разработчиков аппаратуры глубокого знания самого интерфейса. Поэтому работа контроллера максимально автоматизирована (рис.2). Он автоматически принимает и разбирает пакеты от хоста, проверяет их целостность, при необходимости подтверждает успешность приема пакета. При передаче данных хосту USB-контроллер формирует пакеты и проверяет подтверждение их доставки. Таким образом, обмен данными между микроконтроллером и хостом не затрагивает микропроцессорное ядро, что значительно упрощает работу с интерфейсом.
При тестировании образцов микросхем были достигнуты результаты, близкие к максимально возможным. При частоте микроконтроллера 32 МГц (производительность – 8 mips), USB-интерфейс работал в режиме Full Speed (12 Мбит/с) с максимальным размером пакета в 64 байта при работе с конечными точками типа Bulk. При этом на обслуживание USB-блока тратилось не более 20% процессорного времени, которое практически полностью занимали операции чтения/записи из буферов очередей конечных точек. Взаимодействие ядра с FIFO может происходить одновременно с приемом или передачей пакетов. Состояние FIFO можно определить с помощью значений флагов Empty и Full в соответствующих регистрах состояния контроллера. Очевидно, что постоянный опрос флагов снижает скорость работы с буферами (рис. 3).
Вместо этого можно считать число слов в очереди из регистра соответствующей конечной точки и произвести безусловные считывания заданного числа байт из буфера (рис. 4).
Это значительно улучшает производительность микроконтроллера (табл. 2). Однако, по мере усложнения обработки, эффективность обоих алгоритмов становится примерно одинаковой (рис.5).
Результаты, достигнутые при передаче данных от микроконтроллера к хосту, аналогичны полученным при взаимодействии в обратном направлении (табл.3): обычный алгоритм, основанный на значении флагов, требует больше команд на передачу одного байта. Усовершенствованный метод использует функции безусловной записи 64, 32, 16, 8 и 1 байта.
При увеличении сложности обработки данных (более 5–6 команд ядра на один принимаемый или отправляемый байт) происходит резкое падение скорости обмена по шине USB (рис.6). Это обусловлено тем, что длительная обработка данных микроконтроллером приводит к уменьшению числа байт данных, передаваемых в одном пакете по шине USB, и, следовательно, увеличению доли служебной информации.
В настоящее время ЗАО "ПКК Миландр" продолжает работу по расширению серии микроконтроллеров 1886. В частности, разрабатываются новые интерфейсные блоки: CAN2.0В, Ethernet 10BaseT, LIN. Ведется разработка маломощного микроконтроллера с потреблением менее 0.5 мА на 1 МГц. Планируются создание микроконтроллера со встроенным 12-разрядным АЦП и др.