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

№ 2’2000
PDF версия
Устройства на шине PCI чаще всего представляют собой некоторый предпроцессор сигналов, аналоговых или дискретных, выполненный на базе программируемых ПЛИС.

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

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

Пример 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

При разбиении PCI-устройства на две части, фиксированную и изменяемую, мы стремились к максимальному упрощению и удешевлению фиксированной части — PCI контроллера. Чтобы уложиться в малогабаритный корпус TQFP cо 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 в память компьютера для визуализации. Кроме того, имеются дискретные входы и выходы для управления и мониторинга источника видеосигнала. Типичное применение — это экстракция отраженных импульсов в радиолокации, ультразвуковой локации и других быстропротекающих процессах.

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

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