Vinculum II —
новый хост-контроллер USB от FTDI
Сергей ДОЛГУШИН
В марте 2010 года компания FTDI анонсировала новый хост-контроллер USB семейства Vinculum — VNC2. Он ориентирован на использование во встраиваемых приложениях, где требуется функционал USB-хоста, например для работы с USB флэш-дисками. Ресурсов VNC2 вполне достаточно, чтобы играть роль центрального процессора в небольших и нетребовательных к ресурсам приложениях. Если первый контроллер VNC1 семейства Vinculum мог работать только под управлением внешнего процессора, в частности, из-за отсутствия средств разработки и ограниченности его внутренних ресурсов, то VNC2 призван исправить эти недостатки. Немаловажно и то, что при всех расширенных возможностях нового хост-контроллера VNC2 его стоимость существенно ниже по сравнению с предшественником. Предлагаем познакомиться с кратким обзором возможностей контроллера Vinculum II и его основными отличиями от VNC1.
Первый хост-контроллер USB VNC1 компания FTDI выпустила на рынок в 2006 году. Основной идеей при разработке семейства Vinculum была задача предоставить простое решение для реализации хост-контроллера USB. Можно считать, что компания FTDI с этой задачей справилась.
Хост-контроллер VNC1 стал решением, которое позволило интегрировать поддержку USB-хоста во встраиваемые приложения, реализованные на базе 8- и 16-разрядных контроллеров. Vinculum I представляет собой готовое аппаратно-программное решение с возможностью выбора исполняемой программы,
которая и определяет текущие функциональные возможности. На момент своего выхода этот контроллер был уникальным решением, которое давало возможность реализации хост-контроллера USB с относительно малыми трудозатратами, именно за счет готовых программ. VNC1 чаще всего используется для организации USB-интерфейса в приборе для работы с USB флэш-дисками. На данный момент это основная область его применения, в том числе и в российских разработках. Сегодня Vinculum I имеет три основных недостатка: высокую стоимость, отсутствие возможности программирования и ограниченность аппаратных ресурсов.
Компания FTDI, понимая эти проблемы, внесла ряд существенных изменений в процесс производства нового хост-контроллера VNC2, что позволило существенно снизить цены на него. Была кардинально переработана аппаратная часть процессора по сравнению с VNC1 и разработан комплекс программных средств Development Tool Chain Suite.
Хост-контроллер Vinculum II представляет собой систему на кристалле, включающую в себя: 16-разрядное процессорное ядро, выполненное по Гарвардской архитектуре; два блока USB, которые могут выполнять функции периферийного устройства или хост-
USB Host/Slave
Флэш-память
256 кбайт
USB Host/Slave
16 бит Vinculum II CPU
4 контроллера прямого доступа к памяти
Параллельный
8-разрядный
интерфейс
Линии ввода/вывода общего назначения
Контроллер
прерываний
USB Port 1
USB
USB Port 2
Crystal
Slave SIE 1
USB Host/ Slave SIE 2
12 МГц OSC
RESET#
PROG# X4
------------► Clock
PLL
TEST
PLL FILTER
J
64 кбайт x 8 флэш-память
Vinculum
MCU
32-битный
арифметический
сопроцессор
Контроллер прямого доступа к памяти
4 кбайт х 8 ОЗУ
UART ADBUS 0-7
I/F 4------------►
з? BDBUS 0-7
S 1 3 *> (О і \ X S 13 О X
s 2 | I v 'О ^ ° BCBUS 0-3 4 ►
Рис. 1. Основные узлы контроллера Vinculum II
Рис. 2. Основные узлы контроллера Vinculum I
контроллера; набор интерфейсных модулей (UART, 2xSPI slave, SPI master, параллельный 8-разрядный FIFO, ШИМ, отладочный интерфейс); мультиплексор, предназначенный для коммутации внутренних блоков контроллера и внешних выводов; 4 канала прямого доступа к памяти (DMA); флэш-память размером 256 кбайт и 16 кбайт ОЗУ. На рис. 1 и 2 для сравнения приведены блок-схемы хост-контроллеров VNC2 и VNC1. Микросхемы серии Vinculum II доступны в корпусах LQFP и QFN с количеством выводов для каждого типа 32, 48 и 64.
Контроллеры в 48-выводных корпусах повыводно совместимы с VNC1, при этом не потребуется вносить кардинальные изменения в дизайн платы. Все изменения касаются только пассивных элементов. Нужно будет заменить часть элементов одного номинала на другой и убрать несколько элементов с заменой их перемычками или резисторами с нулевым сопротивлением.
Так же, как и ее предшественница, новая микросхема VNC2 содержит два USB-интерфейса, которые могут быть сконфигурированы для выполнения функций хоста или периферийного устройства. Интерфейсы совместимы со спецификациями USB 1.1 и USB 2.0, поддерживают два режима передачи: низкоскоростной (1,5 Мбит/с) и полноскоростной (12 Мбит/с). USB-интерфейсы контроллера Vinculum II поддерживают все типы передачи, определенные спецификацией USB: Interrupt (обеспечивает периодический опрос устройств на предмет наличия данных для передачи, чаще всего используется в HID-устройствах); Bulk (передача больших блоков данных с проверкой целостности данных); Isochronus (передача данных, для которых требуется постоянная скорость обмена); Control (используется для передачи служебных данных).
Производитель отказался от применения высокоскоростного режима передачи (480 Мбит/с) в целях сохранения низкого энергопотребления нового хост-контроллера.
По этой же причине контроллер VNC2 получил два дополнительных режима энергосбережения в отличие от микросхемы Vinculum I. Он может работать в четырех режимах: основной режим на частоте 48 МГц с потреблением 25 мА (аналогично VNC1); два новых режима с пониженным потреблением с рабочими частотами 24 МГц с потреблением до 14 мА и 12 МГц с потреблением 8 мА; режим ожидания (standby) с потреблением порядка 150 мкА (VNC1 — 2 мА). При работе только операционной системы энергопотребление для всех режимов может снижаться на 30-50%. Из режима ожидания микросхема выходит при наличии изменения сигнала на следующих выводах: на любом из USB-интерфейсов; на линии Chip Select одного из двух интерфейсов SPI slave; на линии Ring интерфейса UART.
В новом хост-контроллере применена более гибкая схема назначения выводов, чем
Рис. 3. Утилита для конфигурации выводов микросхемы
в Vinculum I. Она основана на базе мультиплексора, который позволяет подключать внутреннюю периферию процессора к внешним выводам. В старом процессоре на внешние выводы можно было скоммутировать только один интерфейс из трех возможных. Мультиплексор нового процессора позволяет одновременно подключать несколько интерфейсных блоков, в зависимости от числа выводов выбранного корпуса. Дополнительно каждый внутренний сигнал может быть одновременно скоммутирован более чем на один внешний вывод микросхемы. Такая возможность может быть использована, например, при отладке для контроля передаваемых данных. Для упрощения конфигурации выводов в состав среды разработки входит утилита I/O MUX Configuration Utility (рис. 3). С ее помощью можно назначить выводам требуемый функционал и сформировать код, который включается в проект. Кроме интерфейсных задач, выводы микросхемы могут играть роль линий ввода/вывода общего назначения под управлением центрального процессора. В указанном режиме выводы могут служить входом или выходом, а также формировать прерывание по фронту (по переднему, заднему или по любому из них) или уровню (низкому или высокому).
Серьезные изменения у VNC2 были внесены в реализацию интерфейса SPI, принцип функционирования которого в контроллере VNC1 вызывал множество нареканий из-за специфического протокола обмена. В контроллере VNC2 количество интерфейсов SPI увеличено до трех, два из них работают в режиме slave, третий — в режиме master. SPI slave могут работать в пяти режимах: полнодуплексный, полудуплексный 4-проводный, полудуплексный 3-проводный, режим “unmanaged” и режим, совместимый с используемым в контроллере VNC1. В режиме “unmanaged”, в отличие от остальных, управление передачей осуществляется толь-
ко на аппаратном уровне, используя линии “ss” и “clk”.
SPI master поддерживает следующие функции: полнодуплексный и полудуплексный режимы передачи; синхронную передачу данных; тактовый сигнал с программируемыми частотой, полярностью и фазой; один сигнал (ss) для управления ведомым; поддержка SD-карт; поддержка протокола микросхемы аудиокодека VLSI VS1033.
Параллельный интерфейс, в свою очередь, был дополнен новым режимом работы — синхронным. В отличие от асинхронного режима, который остался аналогичным используемому в VNC1, синхронный режим имеет два дополнительных сигнала — тактовый и OE (output enable). По принципу функционирования он аналогичен синхронному режиму работы микросхемы FT2232H, описанному в статье [2]. Синхронный режим недоступен для микросхем в 32-выводных корпусах.
Программирование нового контроллера, по умолчанию, осуществляется по однопроводному отладочному интерфейсу (debug interface). С его же помощью осуществляется отладка приложений.
Возможность реализации собственного программного обеспечения является принципиальным отличием нового хост-контроллера Vinculum II от своего предшественника. Для этих целей производителем разработаны специализированные программные средства, которые включают в себя среду разработки Vinculum II IDE и операционную систему реального времени, драйверы и примеры готовых приложений. Программное обеспечение (Firmware) может быть представлено в виде трехуровневой модели — драйверов, VOS (Vinculum Operation System) — операционной системы реального времени и приложения пользователя (рис. 4). Драйверы обеспечивают интерфейс пользовательского приложения с аппаратными ресурсами хост-контроллера. Аппаратные драйверы предо-
Библиотеки
Драйверы
верхнего
уровня
Аппаратные
драйверы
Пользовательское приложение
Divice Manager
File System
UART SPI Slave | | SPI Master
Аппаратные ресурсы контроллера Vinculum I
Рис. 4. Структура модели программного обеспечения Vinculum II
ставляют доступ к ресурсам контроллера посредством API-функций; они поставляются производителем в закрытом виде. Драйверы верхнего уровня выполняют специализированные функции, например работу с файловой системой. Они не имеют прямого доступа к аппаратным ресурсам. В дополнение к драйверам верхнего уровня, предоставляемым производителем, могут быть реализованы собственные драйверы, которые могут быть надстройкой к существующим или выполнять собственные уникальные функции. Пользовательские драйверы также не могут непосредственно обращаться к аппаратным ресурсам контроллера. Драйверы и разрабатываемое приложение работают под управлением операционной системы VOS, которая обеспечивает управление и доступ к драйверам, обработку прерываний, планировку и синхронизацию выполняемых задач на приоритетной основе.
Среда разработки Vinculum II IDE представляет собой стандартную оболочку для разработки и отладки приложения. Основным инструментом программирования является язык С, с возможностью вставок на ассемблере. Компилятор VinC совместим с ANSI C с некоторыми модификациями для оптимизации работы с памятью. VinC не поддерживает операции с плавающей точкой, массивы переменной длины и передачу структур или объединений в качестве параметров (должны использоваться указатели). Vinculum II IDE
позволяет отлаживать приложения, используя точки останова, пошаговое выполнение программы, возможность изменения значения переменных в режиме отладки или останова программы.
Аппаратные средства отладки включают в себя все необходимые компоненты, которые будут полезны при первом знакомстве с хост-
контроллером для тестирования его возможностей и макетирования. Базовый набор состоит из отладочной платы V2-Eval (рис. 5) и набора мезонинных модулей V2-Eval-Ext (рис. 6). Модули поставляются отдельно от платы V2-Eval в трех модификациях: V2-Eval-Ext32 (на модуле установлена микросхема в 32-вы-водномкорпусе), V2-Eval-Ext48 (48-выводный корпус) и V2-Eval-Ext64 (64-выводный корпус). Они, независимо от количества выводов установленного контроллера, выполнены в одном типоразмере и устанавливаются в разъемы, расположенные в центре V2-Eval.
Отладочная плата содержит все необходимые компоненты для тестирования и программирования контроллера Vinculum II. Соединение V2-Eval с компьютером и средой разработки обеспечивается с помощью 4-канального моста FT4232H. 4 канала микросхемы обеспечивают связь ПК и VNC2 по интерфейсу UART, реализуют отладочный интерфейс, возможность контроля передаваемой информации по UART и некоторые другие функции. Совместно с модулями V2-Eval-Ext отладочный набор V2-Eval содержит все необходимое для быстрого старта. Модули V2-Eval-Ext в первую очередь предназначены для работы с отладочной платой, поэтому часть компонентов, необходимых для работы процессора Vinculum II, установлена на отладочной плате V2-Eval.
Модули V2DIP1-xx (рис. 7) и V2DIP2-xx (рис. 8) выполнены в стандартном для FTDI формате DIP, “xx” обозначает количество выводов микросхемы, установленной на данном модуле. Они не требуют дополнительных внешних компонентов для своей работы. Отличие модулей V2DIP1 и V2DIP2 заключается в количестве USB-разъемов, установленных на них. Модули V2DIP1-xx оборудованы одним разъемом типа A, V2DIP2-xx — сдвоенным USB-разъемом типа А. На все модули V2DIP также установлен разъем для программирования и отладки.
Для программирования и отладки хост-контроллера Vinculum II предлагается специальный отладочный модуль VNC2 debug module (рис. 9). Он обеспечивает протокол взаимодействия среды проектирования и контроллера VNC2, а также позволяет управлять выводами PROG и RESET (требуется для активации режима программирования).
интерфейсы
Программируемый хост-контроллер VNC2 является новым этапом для компании FTDI, до этого дня предлагавшей своим клиентам только готовые решения в виде аппаратных
мостов. Vinculum II не претендует на использование в приложениях, где могут требоваться большие скорости передачи данных по USB или большая производительность процессора. Из возможных конкурентов этого контроллера можно назвать микросхемы PIC24FJ компании Microchip. По некоторым техническим характеристикам они превосходят микросхему FTDI, но по цене FTDI выигрывает. Кроме того, при реализации USB-хоста существенную роль играет программная реализация USB-драйверов. Компания FTDI специализируется на разработке микросхем для USB-приложений с момента опубликования первой спецификации на шину USB. Опыт, накопленный при разработке контроллера Vinculum I и сопровождении разработок на его базе, послужил серьезной основой для нового хост-контроллера USB и программного обеспечения для него.
Первые серийные поставки новых микросхем и отладочных модулей ожидаются в России в IV квартале. Документация и программное обеспечение находятся в свободном доступе на официальном сайте производителя.
Vinculum II будет интересен многим разработчикам встраиваемых приложений, базирующихся на недорогих 8- и 16-разрядных контроллерах. Его функциональные возможности позволяют использовать его в качестве сопроцессора для реализации USB-хоста или в качестве основного процессора. ■
Литература
1. www.ftdichip.com
2. Долгушин С. Работа аппаратного USB-моста FTDI FT2232H в режиме синхронного FIFO // Компоненты и технологии. 2010. № 8.