Научная статья на тему 'Последовательные шинные интерфейсы и цифровые инструменты общего назначения'

Последовательные шинные интерфейсы и цифровые инструменты общего назначения Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
904
144
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Джонсон Дэйл, Городецкая Галит

В статье описано, каким образом цифровые инструменты общего назна- чения с возможностями управления вводом/выводом данных могут ис- пользоваться для поддержки трех широко используемых шин последова- тельного интерфейса. Пользуясь такими инструментами, можно строить недорогие тестеры, делать свои тестовые системы более компактными, создавать многоканальные тестовые системы с интерфейсами управле- ния, пригодными для любых пользователей, и получать множество до- полнительных возможностей для удовлетворения своих потребностей тестирования в будущем.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Последовательные шинные интерфейсы и цифровые инструменты общего назначения»

Дэйл Джонсон (Dale JoHNsoN)

[email protected] Перевод: Галит ГороДЕцкАЯ

Введение

Цифровые инструменты общего назначения для эмуляции протоколов часто используемых последовательных шинных интерфейсов в состоянии обеспечить ряд преимуществ по сравнению со специализированными средствами тестирования шин и зачастую представляют разумный компромисс между функциональностью, гибкостью и стоимостью. Например, специализированный тестер имеет более широкие возможности, такие как управление протоколом и анализ трафика между контроллером шины и тестируемым устройством. Однако при более общем подходе цифровые инструменты общего назначения позволяют приспосабливаться к нестандартным скоростям обмена и таймингу, а также поддерживать другие задачи тестирования. В конечном счете, цель состоит в нахождении таких ситуаций, когда нестандартное применение цифровых инструментов общего назначения оправдано и предоставляет ощутимые преимущества.

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

Последовательные шинные интерфейсы

и цифровые инструменты общего назначения

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

Стандартное затруднение, с которым сталкиваются тест-инженеры, занимающиеся тестированием компонентов, реализующих один или несколько последовательных протоколов, формулируется примерно так: приобрести ли нам тестовое оборудование, предназначенное для тестирования специфического типа шин, или же цифровой инструмент общего назначения и программировать его функции в соответствии с требуемыми задачами? В этой ситуации, как и в любой другой, следует взвесить все достоинства и недостатки в отношении функциональности, гибкости и стоимости каждого из вариантов. Использование цифровых инструментов общего назначения для эмуляции наиболее часто применяемых последовательных протоколов обычно предоставляет некоторые преимущества по сравнению с использованием специализированного тестового оборудования. В статье рассмотрены три типа шин с последовательным протоколом обмена данными — SPI (Serial Peripheral Interface), I2C (Inter-Integrated Circuit) и JTAG. В статье обсуждаются способы использования цифровых приборов общего назначения для эмуляции этих протоколов и преимущества такого подхода. Далее приведены краткие описания этих весьма популярных и широко используемых последовательных шинных протоколов.

Шина sPI

Один из самых простых последовательных шинных протоколов — это последовательный периферийный интерфейс, называемый также шиной SPI. Шина SPI представляет со-

бой последовательный синхронный стандарт полнодуплексной передачи данных, разработанный компанией Motorola Devices для обеспечения простого и недорогого сопряжения микроконтроллеров и периферийных устройств. Обмен данными происходит между ведущим и ведомым устройствами, при этом ведущее устройство инициирует обмен данными, выбирая одно или несколько ведомых устройств для передачи им данных.

В рамках шины SPI используются четыре цифровых сигнала для передачи информации между устройствами (рис. 1):

• CLK — последовательный синхросигнал;

• SDO (Serial Data Output) — вход ведущего, выход ведомого;

• SDI (Serial Data Input) — выход ведущего, вход ведомого;

• CS — разрешение (выбор) микросхемы ведомого.

Передача данных происходит из старшего разряда (MSB) сдвигового регистра ввода/вывода (В/В) ведущего устройства в младший разряд (LSB) регистра В/В выбранного ведомого устройства и из старшего разряда (MSB) регистра В/В выбранного ведомого в младший разряд (LSB) регистра В/В ведущего. Ведущий шины передает данные синхронно с генерируемым им же сигналом CLK, а ведомый захватывает переданные биты данных. Одновременно с этим ведомый отправляет свою посылку данных. Передача данных происходит по переднему или заднему фронту синхросигнала, в зависимости от его полярности и фазы входа/выхода. Ведущий шины выбирает ведомого для передачи, активизируя сигнал разрешения CS на микросхеме ведомого. Обычно используются синхросигна-

Ведущий

Тактовый сигнал

Разрешение

Вход ведомого

Выход ведомого

Ведомый

Ж-

і г

Управление

О 1 2 - - n-2 n-1 п

н

Полярность тактового сигнала = О

Выборка данных -Передача данных

0

Рис. 1. а) Подключение к шине SPI; б) тайминг шины SPI

Чтение/Запись

Подтверждение ■

Рис. 2. Структура шины I2C

лы с частотой от 1 до 70 МГц, что обеспечивает скорость передачи данных до 8,75 Мбит/с.

Шина I2C

Последовательная шина передачи данных I2C разработана фирмой Philips для связи между интегральными микросхемами. Эта шина поддерживает более одного ведущего устройства и широко используется для соединения с низкоскоростными периферийными компонентами и со встраиваемыми системами. Обмен информацией реализуется при помощи простого протокола, состоящего из трех основных типов сообщений: передача — запись посылки от ведущего к ведомому, прием — чтение посылки ведущим от ведомого и комбинированные посылки, состоящие из множества операций чтения или записи между ведущим и ведомым устройствами. Для осуществления процесса обмена информацией по PC-шине используются всего две сигнальные цепи — цепь данных SDA и цепь синхронизации SCL. Цепи SDA и SCL включаются по схеме с открытым стоком и через резисторы подтягиваются к шине питания (рис. 2). Использование такой схемы включения позволяет иметь несколько ведущих устройств, при этом каждое устройство, подключенное к шине I2C, может выступать как в роли ведущего, так и в роли ведомого.

Обмен данными начинается с посылки старт-бита, всегда формируемого ведущим устройством. При этом цепь SDA переходит с «лог. 1» на «лог. 0», а в цепи SCL сохраняется «лог. 1». За старт-битом следует 7-битное адресное поле, однозначно определяющее, какому именно ведомому устройству предназначено сообщение. Восьмой бит в адресном байте определяет режим работы: 1 — для чтения данных, 0 — для их записи. После передачи байта данных передатчиком во время девятого тактового импульса в цепи SCL появляется бит подтверждения (ACK). В этот момент приемник переводит цепь SDA в «лог. 0», подтверждая тем самым прием переданного ему байта. Если приемник по какой-либо причине не перевел линию SDA в «лог. 0», он передает бит отсутствия подтверждения (NACK), и в этом случае обмен данными отменяется. В конце опера-

ции ведущее устройство посылает стоп-бит и переводит цепь SDA из «лог. 0» в «лог. 1», удерживая при этом «лог. 1» в цепи SCL. Протокол I2C обеспечивает скорость передачи данных до 100 кбит/с в стандартном режиме и до 3,4 Мбит/с — в ускоренном режиме, хотя на максимальной скорости его производительность падает примерно вдвое.

Шина JTAG в стандарте IEEE 1149.1

Под названием JTAG, или, что то же самое, граничное сканирование, или же под более официальным наименованием — стандарт IEEE 1149.1 — уже почти 20 лет известен и очень широко применяется стандарт тестового доступа к микросхемам, оборудованным соответствующим портом — ТАР (Test Access Port). Этот стандарт тестирования вначале был предназначен, вообще говоря, только для обнаружения дефектов сборки пе-

чатных плат, таких как короткие замыкания или обрывы, холодная пайка, дефекты связи с контактами внутри самих микросхем и т. д. Однако с течением времени IEEE 1149.1 эволюционировал в мощный инструмент тестирования самих интегральных микросхем как бы изнутри, вплоть до выполнения функциональных тестов логических блоков на невысоких частотах, значительно медленнее собственных рабочих частот микросхем. Кроме того, структуры JTAG широко используются для внутрисхемного программирования (прожига) микросхем ЭППЗУ и флэш-памяти, программирования (конфигурирования) ПЛМ, FPGA и других компонентов.

Обычно JTAG-шина состоит из четырех обязательных сигнальных цепей, к которым иногда добавляется необязательная, пятая шина сброса (TRST). Обязательные четыре цепи — это цепь тестового входа TDI (Test Data Input), цепь тестового выхода TDO (Test Data Output),

цепь выбора режима TMS (Test Mode Select) и цепь синхросигналов TCK (Test Clock). Последовательность битов управления в цепи TMS, синхронизируемая по цепи TCK, приводит к одновременному управлению внутренними «машинами состояний» каждой из микросхем, объединенных в так называемую JTAG-цепочку, как это показано на рис. 3.

Как команды, так и данные вводятся в JTAG-цепочку микросхем последовательно по цепи TDI, а выводятся так же последовательно по цепи TDO. Таким образом, контакт TDI первой микросхемы в JTAG-цепочке является и наружным контактом TDI схемы, контакт TDO этой микросхемы подключен к контакту TDI второй микросхемы и т. д., так что контакт TDО последней микросхемы в JTAG-цепочке подключается к наружному контакту TDО схемы. Типичная частота синхронизации JTAG-цепочек находится в диапазоне от 1 до 80 МГц, хотя максимально приемлемая частота ТСК для любой JTAG-цепочки определяется, очевидно, самой медленной (для JTAG, конечно) микросхемой этой цепочки. Требуемыми временными параметрами поддержки протокола JTAG являются соотношения между моментами поступления данных в цепь TDI и моментами поступления передних (и задних) фронтов импульсов в цепи синхронизации ТСК.

Поддержка разнообразных последовательных интерфейсов

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

Для поддержания модификаций одной и той же микросхемы, имеющих общее функциональное ядро и разные типы интерфейсных шин, производители, а точнее — контрактные производители, вынуждены использовать тестовую аппаратуру для поддержки как минимум трех или более различных шин. Для максимально широкого заполнения рынка разработчики предлагают целые линейки своих продуктов, снабженных шинами SPI, I2C, JTAG и некоторыми другими. Соответственно с этим, для тестирования и отладки нового продукта на производстве должна иметься подходящая аппаратура, поддерживающая все указанные типы шинных интерфейсов. В рамках рутинного подхода производителю потребовался бы набор специализированных тестеров — по одному

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

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

вательных шинных протоколов. В таком случае тест-инженер может работать на одном и том же тестовом оборудовании с привычным программным интерфейсом, а значит, сэкономить время на освоение аппаратуры.

Тестер последовательных шин общего назначения

Цифровые инструменты общего назначения содержат, как правило, средства обеспечения тайминга (обычно это программируемый генератор синхросигналов на основе ФАПЧ), схемы управления логикой, генераторы тестовых векторов и адресов, а также генераторы векторов тестирования памяти. Для простейшей эмуляции последовательной шины требуются как минимум следующие типы памяти: выходное ЗУ для хранения тестовых векторов, посылаемых в тестируемое устройство, память управления блокировкой, обеспечивающая динамический перевод двунаправленных цепей В/В в состояние с высоким импедансом, а также считывающая память для записи реакций тестируемого устройства. Программируемое управление аппаратной частью осуществляется посредством центрального компьютера, подключенного к тестеру. Типовое программное обеспечение включает набор аппаратных драйверов и тест-программу высокого уровня, которая управляет генерацией и загрузкой тестовых векторов, контролирует последовательность выполнения тестов и анализирует реакции тестируемого узла. На рис. 4 показана базис-

ная структура такого тестера, соединенного шиной PXI с центральным компьютером.

Как управление, так и программирование устройств по последовательным шинам обычно включает в себя те или иные действия с регистрами чтения или записи. Такие регистры могут иметь длину байта, слова или даже двух слов, однако независимо от их размера процесс управления или программирования сводится к работе с такими регистрами. Можно разработать простой пользовательский интерфейс команд (рис. 5) для задания простых команд чтения и записи в регистры тестируемого узла. Команды, переданные по последовательной шине, преобразуются в последовательные же тестовые векторы, предназначенные для загрузки в цифровой тестер. Формат команд соответствует при этом стандартному формату соответствующей тестируемой шины. Например, если команды предназначены для шины I2C, то ее тестовый вектор будет иметь вначале 7 битов адреса тестируемого узла, тогда как любая команда, предназначенная для шины SPI, будет состоять из тактового сигнала и наборов данных для пересылки в соответствующий регистр тестируемого узла.

Применение таких команд позволяет управлять тестируемыми узлами и конфигурировать их на достаточно высоком уровне и независимо от выбранного интерфейса. Тестовые векторы могут при этом загружаться непосредственно в аппаратуру тестирования или храниться в виде файлов для дальнейшего использования. При возникновении необходимости в тестировании узлов с новыми типами последовательных интерфейсов достаточно разработать только функции для трансляции простых команд в формат нового интерфейса, тогда как прежние команды для тестирования уже тестируемых интерфейсов никаких изменений не требуют. Сюда же можно добавить команды протокола JTAG (BYPASS, EXTEST, SAMPLE/PRELOAD), включая возможность импорта двоичных файлов, таких как файлы в формате SVF (Serial Vector Format), который поддерживает внутрисхемное программирование микросхем ЭППЗУ, ПЛМ, FPGA и некоторых других. Гибкость такой тестовой структуры позволяет заложить в нее множество вариантов и оперативно добавлять их по мере необходимости.

Если цифровой инструмент оснащен такими вспомогательными функциями, как привязка к фронту импульса, наличие про-

Синхросигнал I

Цепь синхронизации SCL |

Нарушение времени удержания

Нарушение времени установки II

Полное потенциальное нарушение ^

и

I I

Выбранный тайминг

I I

м

I

м

м

I

м

м

I

»

м

Синхросигнал

і

■мі

Цепь синхронизации SCL |_

_1_

I______I

Цепь данных SDA

I I

м

м

Верные данные

Т

0

Частота шины 400 кГц (частота синхросигнала 1600 кГц)

Рис. 6. а) Тайминг шины; б) «разгон» шины

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

Большинство последовательных шин имеет относительно невысокое быстродействие, поэтому, как правило, не возникает проблем, связанных с частотой синхронизации, однако могут возникнуть проблемы, связанные с таймингом самой шины. Например, если протокол шины требует строгого временного соответствия между тактовыми импульсами и данными для установки или удержания некоторых параметров, то цифровой инструмент также должен поддерживать такие требования. Если поддержки таких функций нет, то наиболее распространенным подходом к тестированию параметров шины является «разгон», или подъем частоты цифрового инструмента.

Например, для выставления бита данных протокол шины 12С требует, чтобы изменение сигнала в цепи SDA произошло только тогда, когда тактовый сигнал находится в состоянии «лог. 0». Если в цифровом инструменте отсутствует функция согласования сдвигов между тактовым сигналом контроллера и формой сигнала записываемых данных, то требуемый тайминг может быть достигнут с помощью подъема частоты и выборки с запасом по частоте как минимум в 4 раза. Например, если шина 12С работает на частоте 400 кГц, то вы программируете цифровой инструмент на частоту передачи

данных 1,6 МГц, используя четыре его состояния для представления одного цикла шины (рис. 6). Подобные виртуальные представления могут быть получены, в сущности, для любого цифрового инструмента, хотя при этом нужно принимать во внимание следующие два нюанса: учетверенная частота должна находиться пределах восприимчивости цифрового контакта В/В, и, кроме того, может потребоваться довольно емкий буфер для хранения тестовых векторов при уменьшении вчетверо и более их длины.

В большинстве цифровых инструментов предусмотрено применение множества параллельных каналов, куда больше, чем это обычно необходимо для тестирования последовательных шин. Дополнительные каналы могут использоваться для тестирования многоканальных (мультишинных) структур или же для расширения возможностей систем тестирования. Например, если вам необходимо запустить осциллограф в определенный момент времени, скажем, синхронно с некоторым событием цикла шины, то, таким образом зарегистрировав фактические данные на шине, вы можете использовать «свободный» цифровой канал как раз для запуска осциллографа. Можно, к примеру, задать появление строба синхронизации по каждому значащему биту в битовом потоке, либо только при получении реакции тестируемого узла или же в любое другое время по выбору (рис. 6б).

Примеры эмуляции шин

На рис. 7-9 приведены примеры использования цифровых инструментов общего назначения при тестировании шин ЭРГ, 12С и JTAG, включая системы с несколькими шинами.

Рис. 8. Поддержка многоканальной шины ГС

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Заключение

Несмотря на то, что специализированные тестеры предлагают более широкие возможности для тестирования конкретных последовательных шинных интерфейсов, система, построенная на цифровых инструментах общего назначения, может адаптироваться к разным типам шин и изменениям условий тестирования, обеспечивает поддержку нестандартных протоколов (скорость передачи данных, тай-

Рис. 9. Пример эмуляции шины JTAG

минг, длина сообщений), обеспечивает синхронизацию между внешними модулями системы и событиями протокола шины, а также обеспечивает поддержку других статических и динамических задач тестирования. Система, построенная на базе цифровых инструментов общего назначения, может значительно уменьшить габариты всего тестового стенда и сократить затраты времени на обучение и освоение, поскольку тест-инженер работает только с одним инструментом и изучает лишь один язык программирования. Кроме того, наличие только одного изготовителя (или представителя фирмы) способно значительно сэкономить время при получении необходимой технической поддержки. Благодаря тому, что тестовая система поддерживает несколько типов последовательных шинных интерфейсов, нет нужды в дополнительных инвестициях в аппаратные средства каждый раз, когда появляется новый протокол, что обеспечивает пользователю существенную экономию средств. В конечном счете, цель состоит в том, чтобы выявить те случаи, где разумное или оригинальное применение цифровых инструментов общего назначения оправдано и обеспечивает материальную выгоду и эффективное использование ресурсов. ■

Литература

1. http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus

2. http://en.wikipedia.org/wiki/I2c

3. http://www.jtag-test.ru/JTAGUniversity/basic.php

4. http://www.jtag-test.ru/JTAGUniversity/KiT.php

i Надоели баннеры? Вы всегда можете отключить рекламу.