Vinculum II — новый хост-контроллер USB от FTDI

№ 9’2010
В марте 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, которые могут выполнять функции периферийного устройства или хостконтроллера; набор интерфейсных модулей
(UART, 2×SPI slave, SPI master, параллельный
8-разрядный FIFO, ШИМ, отладочный интерфейс); мультиплексор, предназначенный для
коммутации внутренних блоков контроллера
и внешних выводов; 4 канала прямого доступа к памяти (DMA); флэш-память размером
256 кбайт и 16 кбайт ОЗУ. На рис. 1 и 2 для
сравнения приведены блок-схемы хостконтроллеров VNC2 и VNC1. Микросхемы
серии Vinculum II доступны в корпусах LQFP
и QFN с количеством выводов для каждого
типа 32, 48 и 64.

Рис. 1. Основные узлы контроллера Vinculum II

Рис. 2. Основные узлы контроллера Vinculum I

Контроллеры в 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.

В новом хост-контроллере применена более гибкая схема назначения выводов, чем
в Vinculum I. Она основана на базе мультиплексора, который позволяет подключать
внутреннюю периферию процессора к внешним выводам. В старом процессоре на внешние выводы можно было скоммутировать
только один интерфейс из трех возможных.
Мультиплексор нового процессора позволяет
одновременно подключать несколько интерфейсных блоков, в зависимости от числа выводов выбранного корпуса. Дополнительно
каждый внутренний сигнал может быть одновременно скоммутирован более чем на один
внешний вывод микросхемы. Такая возможность может быть использована, например,
при отладке для контроля передаваемых данных. Для упрощения конфигурации выводов
в состав среды разработки входит утилита I/O
MUX Configuration Utility (рис. 3). С ее помощью можно назначить выводам требуемый
функционал и сформировать код, который
включается в проект. Кроме интерфейсных
задач, выводы микросхемы могут играть
роль линий ввода/вывода общего назначения
под управлением центрального процессора.
В указанном режиме выводы могут служить
входом или выходом, а также формировать
прерывание по фронту (по переднему, заднему или по любому из них) или уровню (низкому или высокому).

Рис. 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). Драйверы
обеспечивают интерфейс пользовательского
приложения с аппаратными ресурсами хостконтроллера. Аппаратные драйверы предоставляют доступ к ресурсам контроллера посредством API-функций; они поставляются
производителем в закрытом виде. Драйверы
верхнего уровня выполняют специализированные функции, например работу с файловой
системой. Они не имеют прямого доступа к аппаратным ресурсам. В дополнение к драйверам
верхнего уровня, предоставляемым производителем, могут быть реализованы собственные
драйверы, которые могут быть надстройкой
к существующим или выполнять собственные уникальные функции. Пользовательские
драйверы также не могут непосредственно обращаться к аппаратным ресурсам контроллера. Драйверы и разрабатываемое приложение
работают под управлением операционной системы VOS, которая обеспечивает управление
и доступ к драйверам, обработку прерываний,
планировку и синхронизацию выполняемых
задач на приоритетной основе.

Рис. 4. Структура модели программного обеспечения Vinculum II

Среда разработки 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.

Рис. 5. Отладочная плата V2-Eval

Рис. 6. Мезонинный модуль V2-Eval-Ext

Отладочная плата содержит все необходимые компоненты для тестирования и программирования контроллера Vinculum II.
Соединение V2-Eval с компьютером и средой разработки обеспечивается с помощью
4-канального моста FT4232H. 4 канала микросхемы обеспечивают связь ПК и VNC2
по интерфейсу UART, реализуют отладочный интерфейс, возможность контроля передаваемой информации по UART и некоторые другие функции. Совместно с модулями V2-Eval-Ext отладочный набор V2-Eval
содержит все необходимое для быстрого
старта. Модули V2-Eval-Ext в первую очередь
предназначены для работы с отладочной
платой, поэтому часть компонентов, необходимых для работы процессора Vinculum II,
установлена на отладочной плате V2-Eval.

Рис. 7. Модуль V2DIP1-32

Модули V2DIP1-xx (рис. 7) и V2DIP2-xx
(рис. 8) выполнены в стандартном для FTDI
формате DIP, “xx” обозначает количество
выводов микросхемы, установленной на данном модуле. Они не требуют дополнительных внешних компонентов для своей работы.
Отличие модулей V2DIP1 и V2DIP2 заключается в количестве USB-разъемов, установленных на них. Модули V2DIP1-xx оборудованы
одним разъемом типа A, V2DIP2-xx — сдвоенным USB-разъемом типа А. На все модули V2DIP также установлен разъем для программирования и отладки.

Рис. 8. Модуль V2DIP2-64

Для программирования и отладки хостконтроллера Vinculum II предлагается специальный отладочный модуль VNC2 debug
module (рис. 9). Он обеспечивает протокол
взаимодействия среды проектирования и контроллера VNC2, а также позволяет управлять
выводами PROG и RESET (требуется для активации режима программирования).

Рис. 9. Отладочный модуль VNC2 debug module

Программируемый хост-контроллер 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.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *