Подключение специализированных процессоров к персональному компьютеру с применением интерфейса USB

УДК 681.327

А. А. Архангельский, Е. И. Гурин, Б. А. Савельев

ПОДКЛЮЧЕНИЕ СПЕЦИАЛИЗИРОВАННЫХ ПРОЦЕССОРОВ К ПЕРСОНАЛЬНОМУ КОМПЬЮТЕРУ С ПРИМЕНЕНИЕМ ИНТЕРФЕЙСА USB

Аннотация. Рассматриваются вопросы подключения специализированных вычислительных устройств, реализованных на программируемых логических интегральных схемах, к персональной ЭВМ по интерфейсу USB. Приводятся примеры реализации на языке VHDL и результаты экспериментального исследования.

Ключевые слова: интерфейс USB, программируемые логические интегральные схемы, язык VHDL, персональный компьютер.

Abstract. The article considers the problems of connection of specialized computers, realized on the basis of FPGA, to a personal computer via USB. The authors give examples of the realization in VHDL language and results of the experimental research.

Key words: USB interface, FPGA, VHDL, personal computer.

Введение

Для связи внешних устройств с ЭВМ широко применяются последовательные интерфейсы. Они интересны тем, что позволяют объединить множество устройств, используя небольшое количество проводов. До недавнего времени последовательные интерфейсы персонального компьютера были представлены коммуникационным портом, работающим согласно спецификации RS-232. Интерфейс RS-232 сохраняет все преимущества последовательной связи, однако он имеет ряд недостатков, в том числе низкое быстродействие, плохую помехозащищенность, отсутствие гальванической развязки. Поэтому в настоящее время все большее распространение получает интерфейс USB. Применение интерфейса USB требует разработки устройств для реализации достаточно сложных алгоритмов обмена. Упростить процедуры обмена позволяют микросхемы преобразования интерфейсов, которые берут на себя реализацию этих алгоритмов. Такие микросхемы широко применяются для подключения устройств пользователя [1-3]. Кроме того, на их основе выпускаются готовые модули, которые еще более упрощают использование интерфейса USB. В работе рассматривается сопряжение устройств с компьютером по USB с использованием модулей USB.

1. Разработка аппаратной части

На рис. 1 показана схема с типовым модулем M, обеспечивающим сопряжение процессора, реализованного на ПЛИС, с персональной ЭВМ типа IBM PC обычным USB-кабелем. Основу модуля M может составлять микросхема FT245 фирмы FTDI; описание этой микросхемы [4] можно найти на сайте www.ftdichip.com. Микросхема обеспечивает преобразование данных из интерфейса USB в параллельный интерфейс. Синхронизация работы модуля производится от тактового генератора, установленного на модуле. Для составления программ обмена используются драйверы, которые можно бесплатно скачать с сайта www.ftdichip.com.

Рис. 1. Схема подключения типового модуля и8Б

Обмен данными между ПЛИС и модулем М производится по двунаправленной шине 0[7..0], управление обменом производится сигналами КО, WR, ТХЕ и ИХБ. При чтении данных из модуля И8Б в ПЛИС согласно техническому описанию микросхемы БТ245 должна быть реализована следующая диаграмма (рис. 2,а).

ЮТ

Г

гхГ=0

гхГ-0

ЯП

С[7.0].

К—» г0у >1 1 '1 ^1 /<Т 1

1 1 1 1

-^^Данны^^

гхМ

-----ГХ1-1

а) б)

Рис. 2. Диаграммы обмена данными

Микросхема БТ245 формирует сигнал КХБ (активное значение ноль) в момент готовности данных, передаваемых в устройство пользователя. В ответ устройство пользователя формирует сигнал чтения КО (активное значение - ноль), по которому микросхема БТ245 формирует передаваемые данные 0[7..0]. Согласно техническому описанию временной интервал Т1 от начала КО до выдачи данных составляет от 20 до 50 нс. Таким образом, от момента формирования КО до принятия данных при частоте 50 МГц надо выполнить ожидание не менее трех тактов синхросигнала.

На рис. 2,б показан граф переходов данной схемы. Начальным состоянием автомата записи является состояние 0, схема стартует при получении сигнала готовности rxf=0. Следующие четыре состояния автомат проходит при любых значениях сигналов, при прохождении этих состояний вырабатывается активное значение сигнала чтения М. На рис. 2,б не показаны состояния 2-4, последовательность этих состояний обеспечивает подсчет необходимого числа тактов синхросигнала частотой 50 МГц для выполнения временных соотношений обмена, указанных в техническом описании. В состоянии 4 данные принимаются на внутренний регистр data_rd, этим обеспечива-

ется задержка приема данных на три такта (интервал T1 на рис. 2,а), т.е. не менее чем на 50 нс. В состоянии 5 ожидается окончание сигнала rxf.

Аналогичные последовательности реализуются при записи данных из ПЛИС в модуль USB. Если микросхема FT245 готова принять от ПЛИС данные и передать их в компьютер, то сигнал TXE устанавливается в ноль. Для записи данных ПЛИС формирует сигнал WR (активное значение - единица), а затем производит выдачу данных D[7..0]. Согласно техническому описанию длительность сигнала WR должна составлять не менее 50 нс, т.е. не менее трех тактов синхросигнала частотой 50 МГц.

Разработка схемы, выполняющей обмен и записываемой в ПЛИС, осуществлялась на языке VHDL. Схема работает в двух режимах: чтения и записи. Первоначально схема находится в режиме чтения, в котором ПЛИС принимает данные из компьютера. При получении соответствующих команд схема переходит в режим записи, в котором в компьютер передается заданное количество байтов, а затем схема снова переходит в режим чтения. Рассмотрим описание схемы чтения 1 байта, которая работает в соответствии с временной диаграммой, показанной на рис. 2,а:

if avt rd="000" and rxfz='0' and wr mode='0' -- 1

Приведенный выше фрагмент находится внутри процесса, задающего работу схем по синхросигналу clk. Начальным состоянием является состояние 0 ("000"), схема стартует при получении сигнала готовности rxf=0, это условие указано в первой строке. Следующие четыре состояния (строки 3-5) схема проходит при любых значениях сигналов, при прохождении этих состояний вырабатывается активное значение сигнала чтения rd. В состоянии 5 (шестая строка) ожидается окончание сигнала rxf, после чего происходит переход из состояния 5 в состояние 0.

При передаче заданного количества чисел в компьютер схема ожидает команду из компьютера и при поступлении этой команды формирует сигнал режима записи на время передачи в компьютер заданного количества байтов. Так, например, по команде, имеющей код 0Dh, инициируется передача массива 3000 байт. Для проверки временных параметров передачи данных в рассматриваемую схему введен аппаратный таймер, который работает по традиционному принципу и содержит счетчик и два регистра, которые имеют разрядность 32. В нужные моменты состояние счетчика фиксируется в этих регистрах, а затем передается в компьютер для вычисления измеряемых интервалов по разности поступивших чисел.

В настоящей работе использовались модули DLP-USB245M и MMUSB245RL. Для реализации схем на ПЛИС использовались модули Spartan-3E Sample Pack с установленной на ней ПЛИС XC3S100E-TQ144 фирмы Xilinx и LDM-ACEX1K10-T144 с ПЛИС ACEX EP1K10TC144-3N фирмы Altera. Конфигурирование ПЛИС производилось через интерфейс JTAG с помощью параллельного кабеля.

then avt_rd<="001"; elsif avt_rd="001" or avt_rd="010" or avt rd="011" or avt rd="100" then

2

3

4

5

6

7

8

avt_rd<=avt_rd+1; elsif avt rd="101" and rxfz='1' then

avt_rd<="000"; end if;

2. Разработка программного обеспечения

Программа управления составлена на языке С. Она посылает в ПЛИС по интерфейсу USB команду 0Dh и другие команды и данные, а также принимает из канала данные, которые при необходимости можно просмотреть на экране дисплея. В начале исходного файла программы нужно вставить строку #include "ftd2xx.h", к проекту нужно подключить библиотеки FTBUSUI.dll, FTD2XX.dll, FTD2XX.lib [5]. Рассмотрим отдельные фрагменты программы, которые обеспечивают связь с устройством и представляют интерес в контексте данной статьи.

Открытие канала USB производится следующими операторами [5]:

ftStatus = FT_Open(0, &ftHandle);

if (ftStatus == FT_OK) printf(" FT Open OK = %x \n",ftStatus);}

else // ERROR

При успешном открытии функция FT_Open возвращает значение FT_OK, при неуспешном работа прерывается. Переменная ftStatus имеет тип FT_STATUS. Запись одного значения производится следующими командами:

ftStatus=FT_Write (ftHandle, &b1, 1, &q1);

if (ftStatus != FT_OK) // ERROR

В приведенном фрагменте b1 - записываемые данные, q1 - число реально записанных байтов, это число возвращает функция FT_Write. В данном примере записывается один байт, однако можно записывать массив байтов, в этом случае вместо &Ь1 должен присутствовать указатель на массив, а вместо 1 нужно указать количество выводимых байтов. Перед чтением данных желательно проверить содержимое очереди чтения:

ftStatus=FT_GetQueueStatus (ftHandle, &n);

После выполнения этой функции переменная n примет значение количества готовых к чтению данных. После этого производится чтение:

ftStatus=FT_Read (ftHandle, bt, n, &q2);

В этой функции q2 - число реально считанных байтов, это число возвращает функция FT_Read, массив bt может быть определен как unsigned char. Если данные не готовы, т.е. n=0, то операцию чтения надо пропустить, либо повторить функцию FT_GetQueueStatus. Если выполнить чтение данных без предварительной проверки, то в случае отсутствия данных программа может зависнуть. После окончания работы с каналом USB надо выполнить функцию FT_Close. Возможен также другой вариант чтения данных, рекомендуемый в [5], который использует функцию задания таймаута FT_SetTimeouts.

3. Экспериментальное исследование

Схема, приведенная на рис. 1, подключалась к компьютеру с помощью обычного кабеля USB. При получении кода 0Dh схема, записанная в ПЛИС, выдает в модуль DLP-USB245M три тысячи байтов данных, причем первое передаваемое число равно 04h, а далее значения уменьшаются на единицу, после 00h выдается FFh, и цикл повторяется несколько раз. На рис. 3 показан

момент перехода схемы, записанной в ПЛИС, из режима чтения в режим записи; момент старта, от которого производится отсчет тактов, отмечен маркером Т.

Рис. 3. Временные диаграммы обмена информацией

Диаграмма, приведенная на рис. 3, получена с помощью логического анализатора ChipScope Pro фирмы Xilinx, аппаратная часть которого встраивается в ПЛИС вместе с разрабатываемой схемой. Следует заметить, что на рис. 3 показаны диаграммы внутренних сигналов ПЛИС, сигналы на контактах микросхемы FT245 могут несколько отличаться. Маркером T отмечен прием из микросхемы FT245BL в ПЛИС числа 0Dh, в тактах с 7 по 9 осуществляется запись числа 04h из ПЛИС в микросхему FT245BL. Следующее число 03h передается в тактах с 40 по 42. В таком же темпе данные передаются и в дальнейшем, темп передачи определяется микросхемой FT245BL.

Максимальная скорость передачи данных в микросхеме FT245BL согласно технической документации составляет 1 Мбайт/с. Из диаграммы на рис. 3 видно, что период передачи данных составляет чуть более 30 тактов, что при частоте 50 МГц равно примерно 0,7 мкс. Это соответствует скорости передачи чуть большей, чем 1 Мбайт/с. Анализ временных диаграмм показывает, что период передачи данных составляет от 0,66 до 0,82 мкс. Кроме того, в процессе передачи возникают задержки от 3 до 4 мкс, вызванные заполнением внутреннего буфера микросхемы FT245BL.

Усредненные временные параметры передачи данных измерялись с помощью аппаратного таймера, встроенного в ПЛИС. Как следует из результатов эксперимента, время передачи 3000 байтов из ПЛИС в ЭВМ в разных экспериментах составляло от 2,38 до 2,44 мс, среднее время передачи одного байта - около 0,8 мкс. Были также получены и проанализированы временные диаграммы приема данных из микросхемы FT245BL в ПЛИС. Анализ диаграмм показывает, что период чтения составляет в среднем 21 такт, что соответствует 0,42 мкс, т.е. данные при чтении поступают в более высоком темпе, чем при записи. Однако при чтении периоды ожидания возникают чаще и сами эти периоды дольше, они могут составлять 30 мкс и более. Были проведены измерения временных параметров операции чтения. В ПЛИС из компьютера передавались 3000 байтов, время передачи измерялось аппаратным таймером и составило 2907,56 мкс, что дает в среднем 0,97 мкс на передачу одного числа, что соответствует техническим данным микросхемы FT245BL.

Для измерения времени работы отдельных участков программы обработки использовался таймер компьютера, данные из которого считывались с использованием драйвера 'т10, который разрешает прямое обращение к портам. Считывание одного отсчета таймера производилось следующими операторами:

_outp( 0x43, 0xd2 ); // запись в порт 43h числа d2h

ml=_inp( 0x40 ); // чтение младшего байта

st=_inp( 0x40 ); // чтение старшего байта

^=( ^<<8) & 0xff00) + (ш1 & 0x00ff) );

Вычисление временных интервалов производится путем вычитания соседних отсчетов. Период работы таймера равен 1/18,2 Гц (примерно 54,9 мс); квант времени, определяющий точность измерения, равен (1/18,2) мс/216, что составляет примерно 0,8 мкс.

Как показали результаты измерений, на выполнение программных операций, включающих в себя попеременно передачу и прием небольших порций данных (по одному или двум байтам), требуется значительно больше времени, чем необходимо для работы аппаратуры. Операция передачи одного числа из компьютера в ПЛИС с помощью функции А81а1^=РТ_'п1е (йНапШе, &Ь1, 1, &q1) занимает 1 мс, хотя, как отмечалось выше, в аппаратуре это действие выполняется в среднем за 1 мкс. Время, необходимое на передачу из ЭВМ в ПЛИС одного байта и прием после этого из ПЛИС в ЭВМ двух байт, в разных экспериментах составляло от 2 до 4 мс, а в отдельных случаях - до 15 мс. Время от момента передачи команды 0БЬ, по которой ПЛИС начинает передавать массив данных, до момента получения этого массива программой составляет около 18 мс. Такие задержки вызваны особенностями операционной системы Windows и должны учитываться разработчиком. Для сравнения следует отметить, что функции 08 Windows, предназначенные для обмена данными с СОМ портом, работают еще медленнее. Приведенные выше данные получены на персональном компьютере типа 1ВМ РС с процессором АМБ ЛШоп 64 (3000 МГц). Полученные результаты временных параметров могут отличаться от подобных данных, полученных на другом компьютере и при другой загрузке процессора.

На рис. 4 показана схема, содержащая отладочную плату

ЬБМ-ЛСЕХ1К10-Т144 с установленным на ней модулем ММи8В245КЬ.

Цифрой 1 отмечен модуль ММшЬ245КЬ, цифрой 2 - плата ЬБМ-ЛСЕХ1К10-Т144. Программирование ПЛИС производится кабелем 1ТАО (отмечен цифрой 3). Основу модуля ММшЬ245КЬ составляет микросхема РТ245КЬ фирмы РТБ1, на модуле находятся перемычки, которые отвечают за его питание и напряжения его выходов. В данном случае модуль питался от шины и8В, напряжение микросхемы составляло 3,3 В. На модуле 1 имеется разъем типа В для подключения кабеля и8В экспериментальные данные формируются в блоке ПЛИС.

Заключение

Использование рассмотренных модулей позволяет обеспечить скорость обмена до 1 Мбайт в секунду, при этом время до получения готового образца средней сложности может занимать 1-2 дня. Если скорость, обеспечиваемая

модулями недостаточна, то можно использовать более скоростные микросхемы, например CY7C68013 фирмы Cypress или ISP1581 фирмы Philips, однако для их применения необходимо создание более сложных схем и соответственно требуется больше времени на разработку.

Рис. 4. Отладочная плата с модулем USB

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

Список литературы

1. Агуров, П. В. Интерфейсы USB. Практика использования и программирования / П. В. Агуров. - СПб. : БХВ-Петербург, 2004. - 567 с.

2. Шестопалов, А. Адаптер USB - RS-232 / А. Шестопалов // Схемотехника. -2006. - № 3. - С. 45-46.

3. Лысенко, А. Преобразователи интерфейса USB на микросхемах FT8U232AM, FT8U245AM / А. Лысенко, Р. Назмутдинов, И. Малыгин // Радио. - 2002. - № 6. -С. 36-38.

4. FT245BL USB FIFO (USB-Parallel) // Future Technology Devices Intl. Ltd, DS245BL Version 1.7. - 2005. - URL: www.ftdichip.com

5. D2XX Programmer's Guide / Future Technology Devices Internftional Ltd. - 2006. -110 P.

Архангельский Алексей Александрович Arkhangelsky Aleksey Alexandrovich

аспирант, Пензенский Postrgraduate student,

государственный университет Penza State University

E-mail: gurin2@yandex.ru

Гурин Евгений Иванович доктор технических наук, профессор, кафедра вычислительной техники, Пензенский государственный университет

E-mail: gurin2@yandex.ru

Савельев Борис Александрович доктор технических наук, профессор, кафедра информационно-вычислительных систем, Пензенский государственный университет

E-mail: gurin2@yandex.ru

Gurin Evgeny Ivanovich Doctor of engineering sciences, professor, sub-department of computer engineering, Penza State University

Savelyev Boris Alexandrovich Doctor of engineering sciences, professor, sub-department of data-computing systems, Penza State Univesity

УДК 681.327 Архангельский, А. А.

Подключение специализированных процессоров к персональному компьютеру с применением интерфейса и8Б / А. А. Архангельский, Е. И. Гурин, Б. А. Савельев // Известия высших учебных заведений. Поволжский регион. Технические науки. - 2011. - № 4 (20). - С. 35-42.