В. Стешенко
Когда читатель возьмет в руки номер журнала "Chip News" с этим занятием, учебный год в большинстве вузов будет близок к завершению. Наступает пора экзаменов. Подходят к концу занятия и в нашей школе [1]. Это занятие посвящено в основном особенностям аппаратной реализации систем ЦОС с использованием ПЛИС. Мы рассмотрим некоторые практически значимые особенности использования возможностей современных ПЛИС.
Программирование и реконфигурирование в системе
Понятие программирование в системе (In-system programmability, ISP) относится к тем плис, которые позволяют осуществить программирование непосредственно в составе системы на смонтированной плате без использования программатора, причем программирование ПЛИС или конфигурационного ПЗУ может производиться многократно. Реконфигурирование в схеме (In-circuit reconfigurability, ISR) позволяет произвести перезагрузку данных в ПЛИС, построенной по SRAM-технологии "на лету", то есть без выключения питания системы. Свойства ISP и ISR характерны практически для всех современных ПЛИС, выпускаемых ведущими фирмами-производителями.
Как правило, микросхемы CPLD (XC9500 фирмы Xilinx, MAX7000S, A, B, E, MAX3000A, MAX9000 фирмы Altera и другие) программируются в системе через стандартный 4-контактный JTAG-интерфейс [2]. Программное обеспечение создает конфигурационную последовательность, которая загружается в ПЛИС с помощью специализированного загрузочного кабеля (ByteBlaster, BitBlaster или Master-Blaster для устройств фирмы Altera, XChecker для устройств фирмы Xilinx). Кроме того, для программирования таких ПЛИС можно использовать стандартный JTAG-тестер или простой интерфейс, эмулирующий последовательность команд JTAG.
В качестве примера рассмотрим схему конфигурационного кабеля ByteBlaster MV, опубликованную фирмой Altera [3] и предназначенную для программирования ПЛИС семейств конфигурации MAX7000S, A, B, E, MAX3000A, MAX9000. На рис. 1 приведена принципиальная электрическая схема устройства.
Рис. 1. Принципиальная схема загрузочного кабеля ByteBlasterMV
На схеме резисторы, помеченные "(1)", имеют номинал 100 Ом (реально можно от 50 до 150 Ом) и предназначены для защиты линий ввода/вывода. Конечно, в экстренных случаях можно обойтись и без них, но следует помнить, что "скупой платит четырежды", и не экономить "на спичках" (менять поврежденную ПЛИС обойдется дороже). Подтягивающие резисторы (pull-up resistors), обозначенные "(2)", имеют номинал 2,2 кОм (ясно, что на деле от 1 до 3,3 кОм). Микросхема шинного формирователя желательно 74НС244 (российский или белорусский аналог 1564АП5), хотя у автора один из ByteBlasterMV был собран на микросхеме серии 74АС (просто под рукой другого не оказалось) и успешно работает. Если вы работаете только с 5-В ПЛИС, то пойдут и серии 1533 и 555 (74ALS и 74LS), но тогда гарантий успешного программирования никто не даст. Вообще говоря, не следует заниматься изобретением велосипеда, благо штатная схема не содержит дефицитных компонентов, ее себестоимость порядка 1,52 доллара. Следует помнить, что длина кабеля от параллельного порта до ByteBlasterMV не должна превышать 100120 см (хотя в стандартном устройстве, поставляемом фирмой Altera, схема смонтирована непосредственно в корпусе разъема, но это неудобно в работе), длину кабеля от ByteBlasterMV до платы с установленной ПЛИС не стоит делать больше 25 см.
На рис. 2 приведена распайка разъема устройства ByteBlasterMV.
Рис. 2. Разъем кабеля ByteBlasterMV
На рис. 2 все размеры обозначены в дюймах. Обычно используют стандартный разъем на 10-жильный ленточный кабель под обжим.
Назначение контактов разъема кабеля ByteBlasterMV в различных режимах приведено в табл. 1.
Таблица 1
Контакт разъема ByteBlaster | Режим последовательной пассивной конфигурации PS Mode) | Режим программирования по порту JTAG (JTAG mode) | ||
Сигнал | Назначение | Сигнал | Назначение | |
1 | DCLK | Тактовый сигнал | TCK | Тактовый сигнал |
2 | GND | Сигнальная земля | GND | Сигнальная земля |
3 | CONF_DONE | Контроль завершения конфигурации | TDO | Данные с ПЛИС |
4 | VCC | Напряжение питания | VCC | Напряжение питания |
5 | nCONFIG | Контроль конфигурации | TMS | Контроль автомата JTAG |
6 | - | Не подключен | - | Не подключен |
7 | nSTATUS | Состояние конфигурации | - | Не подключен |
8 | - | Не подключен | - | Не подключен |
9 | DATA0 | Даные в ПЛИС | TDI | Данные в ПЛИС |
10 | GND | Сигнальная земля | GND | Сигнальная земля |
Режим последовательной пассивной конфигурации (PS Mode) применяется для загрузки конфигурации ПЛИС, выполненных по технологии SRAM, таких семейств, как FLEX6000, 8000, 10K, APEX, ACEX. Режим программирования по порту JTAG (JTAG mode) применяется для программирования в системе ПЛИС CPLD, конфигурационных ПЗУ ЕРС2 и готовящихся к выпуску ЕРС4, а также загрузки SRAM-устройств (правда, реже чем PS Mode). При работе с устройством необходимо помнить, что все коммутации и подключение кабеля следует проводить при выключенном питании. Питание устройства осуществляется от источника питания системы, в которую установлена ПЛИС. Естественно, "земли" должны быть общими.
Рис. 3. Включение ПЛИС FLEX10K в режиме последовательной пассивной конфигурации с помощью кабеля ByteBlasterMV
На рис. 3 и 4 приведены примеры включения ПЛИС для конфигурации ПЛИС и программирования.
Рис. 4. Включение ПЛИС МАХ7000, 9000 в режиме программирования через интерфейс JTAG
Конфигурационные ПЗУ и режимы загрузки
Для хранения конфигурационной информации ПЛИС, выполненных по технологии SRAM, используются последовательные ПЗУ.
При необходимости загрузки ПЛИС большой емкости используется каскадное включение нескольких ПЗУ. На рис. 5 приведена схема включения конфигурационных ПЗУ и ПЛИС семейств FLEX6000, FLEX10K, APEX20K фирмы Altera. Все резисторы имеют номинал 1 кОм.
Рис. 5. Конфигурация ПЛИС FLEX6000, FLEX10K, APEX20K при помощи ПЗУ EPC2, EPC1, EPC1441
Кроме использования ПЗУ, ПЛИС можно конфигурировать с использованием контроллера системы, в которой применена ПЛИС. В табл. 2 приведены возможные режимы конфигурации ПЛИС.
Таблица 2
Режим конфигурации | Применение |
Passive Serial (PS) Пассивный последовательный |
Конфигурация по последовательному синхронному порту микропроцессора (МП) или устройству ByteBlaster, BitBlaster, MasterBlaster |
Passive Parallel Synchronous (PPS) Пассивный параллельный синхронный |
Конфигурация по параллельному синхронному порту МП |
Passive Parallel Asynchronous (PPA) Пассивный параллельный асинхронный |
Конфигурация по параллельному авсинхронному порту МП. МП адресует ПЛИС как память |
Passive Serial Asynchronous (PSA) Пассивный последовательный асинхронный |
Конфигурация по последовательному асинхронному порту микропроцессора (МП) |
JTAG | Используется стандарт IEE Std. 1149.1 |
Особенности конструирования устройств на ПЛИС
Электронные узлы ЦОС с использованием современных ПЛИС значительно отличаются от устройств разработки конца 80-х начала 90-х годов. Во-первых, новые технологии поверхностного монтажа привели к уменьшению габаритов компонентов в 36 раз. Во-вторых, появились новые корпуса интегральных схем с малым шагом между выводами (0,50,65 мм), корпуса с шариковыми выводами (BGA), новые малогабаритные дискретные компоненты и соединители. В-третьих, повысилась точность изготовления печатных плат и возможности для разводки сложных устройств в малых габаритах. Появление новой элементной базы позволяет говорить о возможности во-площения сложных систем на одной плате и даже на одном кристалле (system-on-chip). Это означает, что на одной и той же типичной плате устройства обработки сигналов в малых габаритах размещаются высокочувствительный аналоговый тракт, аналого-цифровой преобразователь, высокоскоростная схема цифровой обработки на процессоре и (или) программируемых логических интегральных схемах, буферные элементы и драйверы линий связи, элементы стабилизаторов напряжения питания и преобразователей уровня и другие узлы. Естественно, что это накладывает свой отпечаток на методологию разработки платы и конструирования всего устройства в целом.
При проектировании плат с использованием средств САПР необходимо всегда помнить, что сколь совершенными ни были бы алгоритмы автоматической трассировки, они никогда не заменят работу конструктора. В лучшем случае, в автоматическом режиме возможна трассировка малочувствительных, медленных (до 35 МГц) цифровых цепей. А серьезные платы трассируются только вручную. Полезно проводить их анализ на взаимные помехи с использованием специализированных программных средств.
Особое внимание следует уделять проблеме заземления. Этому вопросу каждая фирма производитель элементной базы, уделяет огромное внимание в своих Application notes (например, [4]), однако, до сих пор многие разработчики "наступают на одни и те же грабли".
Как известно, земляная шина определяется как эквипотенциальная поверхность, потенциал которой служит для схемы уровнем отсчета напряжений.
При проектировании земляных цепей преследуются две цели. Во-первых, следует помнить, что заземление минимизирует напряжение шумов, возникающее при прохождении токов от нескольких схем через общее сопротивление земли. Во-вторых, необходимо исключить образование контуров заземления, чувствительных к электромагнитным полям и разностям потенциалов.
Таким образом, заземление представляет собой обладающую низким импедансом цепь возврата тока. Протекание любого тока в системе заземления приводит к появлению разности потенциалов, которая должна быть минимальной. Очевидно, что при проектировании топологии "земли" следует обеспечить импеданс заземления на как можно более низком уровне и контролировать токи, протекающие между источниками и нагрузками. Необходимо использовать несколько цепей заземления, соединенных в одной точке. Причем традиционного деления на аналоговую и цифровую "земли" может оказаться недостаточно. Иногда удобно разделять аналоговую земляную цепь на две: одна служит "землей" для слабого входного сигнала, а другая для мощного выходного. То же самое можно сказать и о цифровых "землях" мощные буферы на выходе могут быть причиной появления помех во входных цепях узла ЦОС.
Следует избегать заземления так называемой "гирляндой"; следует использовать одноточечные схемы заземления, когда различные "земли" соединяются в единственной точке ввода у разъема питания.
В первую очередь, следует помнить, что если разрабатывается плата, содержащая как аналоговые, так и цифровые узлы и работающая на достаточно большой тактовой частоте (> 1 МГц), то не следует "экономить на спичках" и разрабатывать двухслойную плату. В этом случае необходимо использовать многослойную плату, в которой внутренние слои представляют собой сплошные плоскости "земли" и питания. Более того, иногда целесообразно использовать отдельные слои для аналоговых "земель" или дополнительных экранов.
Нелишне напомнить обо всем известном скин-эффекте и зависимости импеданса от частоты, благодара которым область металлизации одного и того же размера будет иметь различный импеданс на низких и высоких частотах. Рекомендуется все свободное пространство платы заполнить сплошной областью металлизации, соединенной с общей шиной, чтобы избежать наводок.
Если скоростной сигнал передается на достаточно большое расстояние, то сделать это можно только по согласованной линии на низкоомную нагрузку. При проектировании схем на ПЛИС желательно ставить достаточно мощный буфер, например, 74HC244, 74HC245 и им подобный. Следует предостеречь разработчиков от соблазна использовать ПЛИС для реализации импульсных схем (генераторов, одновибраторов) с помощью внешних емкостей и сопротивлений. Конечно, работать будет, но не любят ПЛИС емкостную нагрузку.
Несколько слов следует сказать о фильтрующих емкостях. Очень часто начинающий разработчик чисто механически устанавливает их, где придется, руководствуясь только нормой установки блокирующих емкостей на число тех или иных микросхем. Следует помнить, что для того, чтобы фильтрующие емкости эффективно работали, длина цепи от вывода микросхемы до емкости должна быть минимальной. Использование планарных компонентов практически полностью позволяет решить эту проблему. Некоторые фирмы производители пассивных компонентов выпускают неплохие сборки фильтрующих емкостей, предназначенные для установки под корпусом PGA.
При проектировании платы, содержащей скоростные цифровые микросхемы (ПЛИС, сигнальные процессоры и т.п.), следует подумать о теплоотводе. Для этого можно использовать дополнительные слои металлизации платы.
После завершения разработки топологии платы устройства ЦОС стоит максимально расширить все силовые цепи, "земли", ответственные сигнальные цепи.
При разработке ответственных устройств не следует забывать о возможностях современных средств по анализу целостности сигналов, тепловых режимов, прочности и так далее [5].
Пример реализации устройства ЦОС на ПЛИС
В качестве примера рассмотрим реализацию алгоритма демодуляции ЧМн-сигналов, примененную при проектировании цифрового приемника телеметрической информации. Реализация цифровой части алгоритма демодуляции и выделения синхроимпульса была выполнена на кристалле FLEX10K50. Входными сигналами являлись две квадратуры принятого сигнала, полученные после смесителей. Реализованное устройство состоит из входных цифровых КИХ-фильтров с 16 отводами, непосредственно блока демодуляции ЧМн-сигнала и блока синхронизатора.
Для реализации входных КИХ-фильтров был использован пакет Altera DSP Design Kit. Данный пакет был выбран ввиду того, что он позволяет по рассчитанным коэффициентам цифрового фильтра быстро получить AHDL-описание устройства с данными характеристиками и максимально доступной точностью при заданных значениях точности входных данных и внутреннего представления коэффициентов фильтрации. Для этого исходные коэффициенты фильтра масштабируются. Кроме этого, DSP Design Kit позволяет сгенерировать векторный файл для моделирования работы фильтра, а также преобразовать выходные данные отклика фильтра к масштабу входных данных и построить график отклика фильтра на входное воздействие.
Вход фильтра является 8-бит, представление коэффициентов также 8-бит, точность вычислений и выходной сигнал имеют 17-бит точность. В отличие от классической реализации КИХ-фильтров в виде набора умножителей для взвешивания задержанных отсчетов входного сигнала и выходного сумматора, данная реализация вообще не содержит умножителей. Все операции умножения заменены операциями распределенной арифметики, что возможно благодаря постоянству коэффициентов фильтрации и наличию в кристаллах FLEX10К так называемых look-up-tables (LUTs). Результат операции умножения представляется в виде суммы нескольких слагаемых. Значения этих слагаемых выбираются из заранее сгенерированной по значениям коэффициентов фильтра таблицы в соответствии со входными данными. Сигналы с выходов фильтров (8 бит в дополнительном коде) подаются на квадратурные входы блока частотной демодуляции. Демодулятор должен осуществлять преобразование вида
но так как в данной работе принимаемый сигнал мог иметь частоту, равную строго w = w0 + Dw , где Dw = const для фиксированной скорости передачи данных, то для выделения символов достаточно определять лишь знак выходного сигнала демодулятора.
Отсюда вытекает структурная схема детектора, приведенная на рис. 6.
Рис. 6. Структурная схема цифрового частотного детектора
Для реализации демодулятора понадобились два регистра для хранения значений квадратур в предыдущий (k-й) момент времени Sk и Ck , два умножителя и один сумматор. Отличительная особенность данной структуры простота реализации на ПЛИС: вся схема является разомкнутой, может быть реализована на библиотечных компонентах пакета MAX+PLUS II.
Для выделения тактовой частоты можно использовать синхронизатор, осуществляющий оценку максимального правдоподобия. Блок синхронизатора осуществляет преобразование вида
где n количество отсчетов на символ, а m количество символов, используемых синхронизатором символов.
Входным сигналом синхронизатора является выход блока демодулятора. Функция y = ln (ch(x)) является четной и имеет асимптоту y = x ln2 при x > 0. Таким образом, в самом простом случае эту функциональную зависимость можно аппроксимировать функцией модуля: y = |x|, однако, с учетом ограничений на целочисленность вычислений, гораздо более близкой будет аппроксимация функцией
Заметим, что для реализации суммирования вида
sumi = yk + yk-1 + yk-2 +... + yk-n+1 нецелесообразно использовать каскад из n двухвходовых сумматоров, так как на каждом такте результат этого суммирования может быть получен из значения суммы на предыдущем такте путем вычитания yk-n-1 и прибавления yk+1. А именно:
Таким образом, для реализации этой части алгоритма синхронизации понадобится один регистр для хранения значения суммы на предыдущем такте и три сумматора, один из которых используется для изменения знака значения yk-n-1 (так как все числа представлены в дополнительном коде). Кроме того, необходимы регистры для хранения значений yk , yk-1 ,... , yk-n+1 . Если же не учитывать эти n регистров, то количество элементов для выполнения такой операции суммирования не будет зависеть от количества операндов и сэкономит ячейки ПЛИС при количестве слагаемых в сумме n > 4. В данном случае количество слагаемых в каждой сумме равно количеству отсчетов сигнала, приходящихся на символ, то есть n = 8, и эффект в увеличении скорости, а главное, в уменьшении занимаемого места, ощутим.
Так как синхронизатор работает по принципу максимума правдоподобия, то схема должна выставлять синхроимпульс в момент достижения выходным сигналом Xk максимума. Для определения момента наступления локальных максимумов этот сигнал дифференцируется, и теперь уже ищутся моменты перехода сигнала через ноль, а точнее, моменты смены знака продифференцированного сигнала. Причем смене значения знакового бита с "0" на "1" будет соответствовать максимум значения выходного сигнала. Однако, для того, чтобы синхроимпульс всегда появлялся ближе к середине, нужно отслеживать не момент, когда Xk максимально, а момент, когда этот сигнал достигает минимального значения. Именно поэтому в реализованной схеме отслеживается момент изменения знакового бита производной с "1" на "0".
Недостаток такой реализации значительная потребность в ресурсах трассировки ПЛИС. Поэтому если число слипшихся подряд одинаковых символов велико, целесообразно применять другой вариант выделения тактового импульса выделение фронтов символьной последовательности с помощью схемы "исключающее или" и подачу их на опорный вход ФАПЧ, например, 74НС7046. Правда, в этом случае, мы теряем в помехоустойчивости схемы.
Все блоки демодулятора были реализованы в виде параметризованных мегафункций с использованием языка AHDL, что позволяет с легкостью их использовать для приложений, требующих другой точности вычислений. Так, например, для блока синхронизатора параметрами задаются разрядность входных и выходных данных, количество отсчетов на символ и количество символов для усреднения.
От редакции
Завершая цикл статей "Школа разработки аппаратуры цифровой обработки сигналов на ПЛИС", рады сообщить, что издательством "Додэка" выпущена монография В.Б. Стешенко "ПЛИС фирмы ALTERA: проектирование устройств обработки сигналов", подготовленная на основе материалов, опубликованных нашим журналом.
Литература
- Стешенко В. Школа разработки аппаратуры цифровой обработки сигналов на ПЛИС. Занятия 1-7 // Chip News. 1999. # 8, 9, 10. 2000. #1, 3, 4.
- IEEE Standart 1149.1a, 1993.
- ByteBlasterMV Parallel Port Download Cable, Data Sheet, Altera corporation, ver. 1, April 1998.
- AN74. High Speed Boards Design, Altera corporation.
- Стешенко В. ACCEL EDA: технология проектирования печатных плат. М.: Нолидж. 2000.
Тел.: (095) 263 6736
E-mail: steshenk@sm.bmstu.ru
Ваш комментарий к статье | ||||