Повышение гибкости устройств c шиной PCI

Повышение гибкости устройств с шиной PCI

Устройства на шине PCI чаще всего представляют собой некоторый предпроцес-сор сигналов, аналоговых или дискретных, выполненный на базе программируемых ПЛИС. Как правило, загрузка конфигурации в такие матрицы производится автоматически при включении питания, путем считывания кодов из внешнего ПЗУ. Однако в ряде практических случаев требуется гораздо большая гибкость и оперативность в смене конфигурации ПЛИС. Этому вопросу и посвящена данная статья. Ниже предложен особый PCI-контроллер, который в дополнение к основным функциям Master-Target может производить оперативную перезагрузку ПЛИС файлом, например с винчестера.

Андрей Прохоренко

«Фирма Фитон» h ttp://w ww.phyton.r u, Email: aprokh@phyton.ru, тел.(095) 481-0583

Перечислим достаточно очевидные примеры применений, в которых такой контроллер выглядит весьма полезным.

Пример 1 — фильтрация на FIR-фильтрах. Известно, что по ресурсам ПЛИС самым благоприятным случаем в разводке таких фильтров является вариант с постоянными коэффициентами фильтра. В этом случае можно использовать встроенные в логические макроячейки Look-Up таблицы матриц ALTERA FLEX, и разводка получается достаточно экономной, а полученное устройство обладает хорошими характеристиками по быстродействию. Однако когда речь заходит о регулируемых фильтрах и, соответственно, о переменных параметрах импульсной характеристики, результирующие схемы сильно разрастаются и устройства теряют в быстродействии. Выходом из положения может служить оперативная перезагрузка ПЛИС из заготовленного ряда FIR-конфигураций с постоянными коэффициентами. Такие файлы-заготовки удобно хранить на винчестере и вызывать в работу из меню.

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

Пример 3 — универсальная плата экстрактора радиолокационного сигнала. Здесь также весьма полезна переконфигурация ПЛИС с винчестера, поскольку оборудование закрыто, опечатано, сертифи-

цировано и его вскрытие с целью смены прошивки ПЗУ является для большинства эксплуатационников серьезной проблемой.

Пример 4 — дистанционное сопровождение устройств, например через Интернет. У пользователя, получившего новую версию, возникает проблема, если ПЛИС устройства загружается из ПЗУ. И наоборот, — если загрузка производится с винчестера, то обновление версии сводится к простой замене старого файла на новый.

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

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

ми ресурсами и изменяемой конфигурацией, содержит основную часть системы, оперативно загружается с винчестера через первую ПЛИС и тем самым обеспечивает уникальную гибкость применения. На рисунке представлено распределение узлов PCI-системы между двумя ПЛИС (обе — фирмы ALTERA).

PCI-контроллер удалось разместить в ПЛИС EPM7256A, в малогабаритном корпусе TQFP-144 с питанием +3,3 В. Этот контроллер рассчитан на 32-битную шину данных и работу на частоте 33 МГц. Допускает подключение как к трехвольтовой шине PCI, так и к пятивольтовой. Конфигурация контроллера заносится в его EEPROM, и при включении питания он сразу готов к работе. После проведения стандартных операций Plug-and-Play контроллер способен производить загрузку конфигурации в ПЛИС серии FLEX8000, 10K и другие от фирмы ALTERA. Статические сигналы для проведения загрузки ПЛИС (CFG, DONE,

ERROR) отображаются на резервные биты командного слова и слова состояния в служебной зоне PCI-контроллера (Config. Area). Загрузка производится по параллельной пассивной асинхронной схеме (PPA), по тем же линиям (aD[7..0], RD, WR), которые после нее будут участвовать в передаче данных между основной ПЛИС и контроллером. Для загрузки файла с винчестера в конфигурационную память ПЛИС («Configuration RAM») требуется специальный программный драйвер.

В процессе Plug-and-Play PCI-контроллер запрашивает у системы адресное пространство памяти максимальным размером 1 Мб и туда отображает все регистры управления устройством («PARAM. MEM»). Сами регистры физически размещаются в основной ПЛИС уже в результате ее конфигурации. Их количество, назначение и размер переменны, что определяет гибкость модификации. Доступ в эту зону параметров со стороны PCI-шины происходит через Target-узел контроллера. Он преобразует ее в простейший микропроцессорный интерфейс, состоящий из двунаправленной 32-битной шины данных, отдельной шины адресов и двух стробирующих сигналов: записи и чтения. Также узел Target обеспечивает нужные для загрузки ПЛИС длительности сигналов записи и чтения.

PCI-контроллер предназначен для построения различных устройств, которые сжимают входной поток данных и вводят его в память компьютера. Для этого он содержит отдельный узел Master, который способен производить операции «DMA запись в память». Минимальная фиксированная часть этого узла размещена в контроллере, а большая часть отнесена в изменяемую часть, в ПЛИС. На рисунке представлено распределение узлов DMA меж-

ду фиксированной и переменной частями системы. Наилучшие результаты по простоте и быстродействию получаются при использовании в качестве загружаемой ПЛИС матриц фирмы ALTERA из серии FLEX10KE. Они имеют структуру со встроенными двухпортовыми блоками памяти, из которых строится память FIFO с асинхронными записью и чтением. Такой тип буфера можно считать идеальной временной развязкой для процессов обработки сигнала и выгрузки результатов.

Взаимодействие при DMA между двумя частями системы происходит с использованием следующего набора сигналов: шина данных (32 бита), запрос на DMA, подтверждение доступа DACK, сигнал выборки начального адреса SelAdr и сигнал переключения на следующую порцию данных NEXT. Комбинации сигналов DACK и SelAdr определяют начало кадра, интервал выдачи из ПЛИС адреса, интервал посылки из ПЛИС данных в режиме Burst и окончание кадра. Master узел PCI-контроллера реализует Burst режим с одним циклом ожидания, в течение которого производится переключение по сигналу NEXT данных в ПЛИС и транспортировка их через контроллер на шину PCI. Сигнал NEXT не только выбирает новую порцию данных из FIFO, но и инкрементирует встроенный в ПЛИС счетчик адреса. Если по каким-либо причинам фаза передачи данных в шину PCI заканчивается неудачно, то сигнал NEXT не вырабатывается и следующая попытка DMA будет произведена с прежнего адреса. Управление DMA осуществляется через регистры из зоны параметров. Устройство управления относится к изменяемой части системы и может реализовать самые разнообразные варианты, с остановкой и выдачей прерывания INTA по достижению конца сегмента памяти DMA или без остановки.

При разбиении PCI-устройства на две части, фиксированную и изменяемую, мы стремились к максимальному упрощению и удешевлению фиксированной части — PCI контроллера. Чтобы уложиться в малогабаритный корпус TQFP го 144 выводами и использовать самую низкую скоростную градацию матрицы, пришлось пойти на незначительные в практическом плане ограничения. Они заключаются в следующем:

1. Обмен всегда ведется полными 32-битными словами при тактовой частоте 33 МГц. Для повышения частоты до 66 МГц можно использовать другую, более высокую скоростную градацию матрицы, но это резко удорожит конструкцию.

2. PCI-Target узел не работает в Burst режиме — доступна только одна порция данных в кадре.

3. Контроллер не проверяет четность поступающих данных и не вырабатывает сигналы PERR и SERR, но он вырабатывает сигнал четности PAR, сопровождая им передачу своих данных.

4. PCI-Master узел рассчитан только на «DMA запись в память».

5. PCI-Master узел вставляет один такт ожидания на фазу передачи в Burst режиме.

В принципе, описанная конструкция достаточно универсальна и подходит для самых разнообразных случаев построения предпроцессоров сигналов в составе системы с шиной PCI. Это позволило нам спроектировать и предложить пользователям одноплатный DSP-конструктор, в котором реализован описанный здесь подход разбиения системы на фиксированную и гибко модифицируемую части. Конструктор рассчитан на обработку видеосигналов с частотой квантования 40 МГц и выше, сжатие потока данных и ввод их по DMA в память компьютера для визуализации. Кроме того, имеются дискретные входы и выходы для управления и мониторинга источника видеосигнала. Типичное применение — это экстракция отраженных импульсов в радиолокации, ультразвуковой локации и других быстропротекающих процессах.