В. Капитанов, В. Мистюков, С. Довгань
Почти сразу с момента своей разработки и, особенно в последнее время, шина PCI приобретает все большую популярность среди производителей компьютерной техники, полностью вытесняя шину ISA, которую на большинстве современных материнских плат уже не обнаружишь. Чем обусловлена такая популярность? Это, во-первых, высокая производительность в режиме блочных передач (до 528 Мбайт/сек для PCI 64-бит/66-МГц), во-вторых, поддержка протокола Plug&Play, гибкий арбитраж шины, а также компактность и надежность коммутационных соединений (Compact PCI), поддержка JTAG IEEE1149.1. И хотя в мире в настоящее время проектируются и более производительные системные шины, шине PCI по существующим прогнозам еще долго будет отдаваться наибольший приоритет.
В настоящей статье мы не будем заострять внимание на достоинствах и недостатках существующих системных шин, а рассмотрим, каким образом современный разработчик может реализовать свои решения с использованием шины PCI, какие существуют альтернативы и каковы стоимостные характеристики существующих подходов.
Как правило, контроллер шины PCI выполняется в виде отдельной СБИС, например, фирм AMCC, PLX, реализующей автоматы состояний для управляющих и контрольных сигналов шины, набор регистров, ответственых за конфигурационное пространство контроллера, и предоставляющей разработчику определенный пользовательский интерфейс. Чем хорош такой подход? В данном случае, разработчик не тревожится за выполнение строгих требований спецификации шины со стороны системного интерфейса, поскольку СБИС контроллера обеспечивает гарантированные временные характеристики и основной упор делает на разработку своего конкретного приложения. В то же время, для согласования контроллера с устройством, например, через FIFO, разработчику приходится использовать высокоскоростную логику дополнительного управления, поскольку пользовательская часть стандартных СБИС контроллеров не позволяет напрямую сопрягать произвольные устройства, в том числе, и современные процессоры цифровой обработки сигналов (DSP). В большинстве случаев, в качестве сопрягающей "обвязки" применяются микросхемы программируемой логики. Таким образом, недостатком данного подхода служит избыточное количество корпусов ИС СБИС контроллера, FIFO, логика.
Для крупносерийного производства устройств PCI пользовательского уровня, например, видео- или сетевых карт западные фирмы довольно часто используют заказные интегральные схемы, реализующие на одном кристалле как непосредственно сам контроллер шины, так и специфическое пользовательское приложение. Основной недостаток данного подхода заключается в высокой стоимости подготовки производства заказной схемы, порой исчисляющейся десятками тысяч долларов. К недостаткам стоит отнести также длительное время разработки и производства заказной схемы и, кроме того, низкую гибкость устройства и невозможность последующих доработок схемы без дополнительных материальных и временных издержек.
Следующим подходом, лишенным недостатков обоих предыдущих, является построение устройства PCI на базе приборов программируемой логики. Рассмотрим этот подход подробнее.
Производители микросхем программируемой логики (ПЛИС) в настоящее время предлагают широкий спектр изделий, параметры которых как по быстродействию, так и по объему внутренней логики вполне позволяют реализацию такого сложного устройства, как контроллер PCI на одном кристалле, и, более того, сам контроллер PCI может занимать совсем незначительную часть объема всей микросхемы. Так, например, контроллер PCI шины разрядностью 64 бит и с системной частотой 66 МГц занимает в ПЛИС фирмы Xilinx XCV1000 (свыше 1 млн. вентилей), всего 3% от общего объема! Контроллер PCI 32 бит/33 МГц имеет объем порядка 10 тыс. вентилей и на небольших ПЛИС Xilinx занимает 2030% объема кристалла, оставляя разработчику значительные свободные ресурсы микросхемы. В данном случае, ярко выражен системный подход к разработке пользовательского устройства интеграция контроллера и пользовательского приложения на одном кристалле (System-On-Chip) (рис. 1).
Рис. 1. Системная интеграция на ПЛИС Xilinx
Стоит заметить, что данное направление получило сильное развитие, особенно с ростом внутренних объемов ПЛИС и резким падением цен на них. Высокая надежность однокристального решения и, как следствие, невысокая сложность печатной платы, дает этому подходу все преимущества реализации устройства PCI на заказных БИС, сохраняя при этом гибкость системы и возможность ее быстрой реконфигурации. Именно гибкость решения на ПЛИС является значительным преимуществом данного подхода.
Благодаря возможности быстрого перепроектирования ПЛИС, разработчик может в дальнейшем в кратчайшие сроки провести необходимую модернизацию (upgrade) своего устройства, уже переданного заказчику, не работая на месте непосредственно с самим устройством, а выслав конечному пользователю файл прошивки ПЛИС, определяющий порядок функционирования устройства. В последнее время ведущими производите-лями программируемой логики в средства проектирования ПЛИС все чаще включается поддержка upgrade ПЛИС через Интернет.
Современные ПЛИС предоставляют разработчику много замечательных архитектурных и функциональных особенностей, делающих возможным построение на кристалле цифровых устройств различного назначения и сложности. Такими особенностями являются:
- большой объем внутренних логических ресурсов (до 3,2 млн. вентилей в XCV3200E);
- высокие рабочие частоты (до 210 МГц);
- наличие в ПЛИС типа FPGA (Field Programmable Gate Array) быстродействующего (до 210 МГц) блочного и распределенного ОЗУ;
- внутренние шины с третьим состоянием и минимальными задержками на переключение;
- высокоскоростные буфера ввода/вывода цифровых данных (до 310 Мбит/вывод);
- поддержка множества периферийных стандартов с различными пороговыми уровнями;
- встроенный порт JTAG.
Стоит упомянуть наличие широкого спектра корпусов различного исполнения с большим числом внешних двунаправленных выводов, что позволяет разработчику организовать широкие шины передачи данных и множество цифровых портов (PCI 64 бит/66 МГц задействует более 100 внешних выводов микросхемы только со стороны системного интерфейса).
Рассмотрим средства разработки PCI интерфейса на ПЛИС. В настоящее время почти каждый производитель приборов программируемой логики поставляет тот или иной вариант библиотек интерфейсов PCI или средств их генерации (например, GUI для LogiCORE PCI), служащих надстройками для средств разработки ПЛИС. Стоимость данных библиотек достаточно велика (до 18 тыс. долларов для LogiCORE PCI 64-бит/66-МГц) и предполагает использование их для серийного производства либо для уникальных образцов дорогостоящей техники. В отечественных условиях ввиду недостаточности объемов выпуска продукции и неразвитости производства данный вариант не всегда приемлем, что заставляет искать "обходные" пути решения данной проблемы.
Здесь у отечественного разработчика есть два пути: либо попробовать реализовать свой вариант контроллера интерфейса PCI, отталкиваясь от положений спецификации PCI и собственного опыта, что, сразу заметим, сделать достаточно непросто, особенно в части выполнения жестких требований PCI. С другой стороны, есть смысл обратиться к соответствующему опыту отечественных разработчиков, предлагающих свои продукты, как правило, значительно дешевле западных поставщиков. К тому же, библиотеки, предлагаемые западными разработчиками, в основном, допускают полную модификацию внутренней структуры контроллера PCI, что в большинстве случаев предоставляет избыточные возможности (требующие значительных затрат), оказывающиеся невостребованными.
Примером выхода из подобного положения может служить разработанное отечественной фирмой "Скан Инжиниринг-телеком" ядро контроллера PCI 32 бит/33 МГц Slave. Ядро представляет собой библиотеку для средств проектирования Xilinx, содержащую символ контроллера PCI с "закрытым" внутренним содержимым и ассоциированным netlist-файлом [1]. Разработчик осуществляет подключение своего приложения к контроллеру в схемотехническом редакторе (рис. 2) или на VHDL, не вникая во внутреннее содержимое контроллера, заранее оптимизированного для функционирования на шине PCI и с предопределенными временными и топологи-ческими характеристиками.
Рис. 2. Внешний вид контроллера в схемотехническом редакторе Foundation
Стоить заметить, что пользовательская сторона контроллера предоставляет разработчику устройства очень гибкий интерфейс, позволяющий сопрягать с PCI устройства различного функционального назначения, например, выполнить одновременное подключение к контроллеру процессора DSP (через внутреннее FIFO ПЛИС), внешней памяти пользователя, до 32-х 32-разрядных портов ввода/вывода и т. д. Далее производится совместное функциональное моделирование интегрированного ядра контроллера с пользовательской "обвязкой" и последующая трассировка проекта. На рис. 3 приведен обобщенный маршрут проектирования PCI на ПЛИС Xilinx с использованием пакета проектирования Foundation.
Рис. 3. Маршрут проектирования ПЛИС Xilinx с применением ядра PCI
В процессе трассировки незадействованные внутренние выводы контроллера со стороны пользователь
ского приложения и соответствующая незадействованная логика контроллера подвергаются оптимизации, что позволяет сэкономить некоторый объем внутренних ресурсов ПЛИС.
После трассировки выполняется временное моделирование проекта с извлеченными задержками, и формируется файл прошивки ПЛИС. В итоге, разработчик реализует свое нестандартное решение на базе PCI практически на одном кристалле ПЛИС, ограничиваясь подключением к ПЛИС своих целевых устройств: DSP, памяти, портов и так далее. Конечно же, размеры и характеристики современных ПЛИС позволяют реализовать на кристалле те же DSP (за исключением больших массивов памяти) в виде так называемых ядер (CORE), развитием которых занимается целый ряд западных и отечественных фирм, однако это тема отдельной статьи и требует особого рассмотрения.
В качестве последнего аргумента в пользу применения ПЛИС Xilinx для реализации интерфейса PCI, рассмотрим сравнительную стоимость данного решения по сравнению с решением на базе стандартной микросхемы контроллера PCI. Условия сравнения выберем с целью обеспечения приблизительно равных функциональных возможностей реализуемых устройств следующим образом: рассмотрим основные особенности непосредственно стандартной СБИС PCI и выбранной для реализации ПЛИС Xilinx (таблица) и дополним их внешней обвязкой для обеспечения равных функциональных возможностей.
Таблица
Стандартные СБИС PCI | PCI контроллера на ПЛИС Xilinx |
Slave 33 МГц/32 бит | Slave 33 МГц/32 бит |
Совмещенная пользовательская шина адре/данные | Раздельные пользовательские шины адреса и данных |
6 BAR, внутреннее FIFO 2х32х8 | 2 BAR, внутреннее FIFO 32х64 |
Гарантированные временные показатели | Гарантированные временные показатели (TIMESPEC) |
Программирование назначения внешних выводов ПЛИС | |
Возможность реализации произвольного пользовательского интерфейса | |
Свободные 6 тыс. вентилей (в ПЛИС серии Spartan XCS20) | |
Необходимость приобретения логического ядра PCI | |
Возможность совместного моделирования контроллера и приложения |
С одной стороны, выберем СБИС PCI Slave AMCC5920 фирмы Applied Micro Circuits с конфигурационной EEPROM (16 Кбит Atmel), плюс внешнее FIFO 16 х 1k (высокоскоростное ОЗУ с управлением через CPLD), интерфейсная CPLD Xilinx XC95288 объемом 6,4 тыс. вентилей.
С другой стороны, выступает ПЛИС Xilinx серии Spartan XCS20 (20 тыс. вентилей) с конфигурационной PROM плюс стоимость логического ядра контроллера, перенесенная на количество выпускаемых изделий (рис. 4).
Рис. 4. Сравнительные стоимостные характеристики двух различных подходов реализации PCI интерфейса
Анализируя рис. 4, можно заметить, что при равных функциональных возможностях приведенных решений (не рассматривая преимуществ однокристальной реализации устройства на ПЛИС) ощутимую долю стоимости решения на ПЛИС при малых партиях вносит ядро PCI контроллера. Однако, переносимая на одно изделие стоимость ядра контроллера уменьшается пропорцио-нально росту объема выпуска, и уже на партии в сто изделий проявляется значительное преимущество подхода реализации PCI на ПЛИС Xilinx. Кроме того, ядро контроллера, благодаря гибкой конфигурации со стороны пользовательского приложения, предполагает использование в широкой номенклатуре изделий на базе PCI интерфейса (соответствующий рост объема выпуска), что ведет к быстрой самоокупаемости ядра.
Примером практического использования контроллера PCI интерфейса на ПЛИС Xilinx может служить отечественный инструментальный модуль XDSP-680 (рис. 5), предназначенный для решения широкого спектра задач, начиная от высокопроизводительной цифровой об-работки сигналов до построения нейронных сетей [2]. Вычислительное ядро модуля формируют от одной до 4-х ПЛИС фирмы Xilinx (в зависимости от конфигурации модуля) с общим объемом эквивалентных логических вентилей до 680 тыс. и внешним высокоскоростным ОЗУ. Производительность модуля определяется объемом и быстродействием установленных кристаллов и достигает 4,2 млрд. МАС (Multiply-Accumulate) на 16-разрядных независимых операндах и до 16 млрд. МАС на 8-разрядных операндах (для сравнения, производительность мощного DSP TMS320C6201 всего 0,4 млрд. МАС).
Рис. 5. Отечественный инструментальный модель XDSP-680
В одной ПЛИС модуля реализован контроллер шины PCI в виде логического ядра, описанного выше, посредством которого осуществляется обмен модуля с ПЭВМ. Стоит заметить, что ядро контроллера занимает 25% логических ресурсов ПЛИС XCS40 (40 тыс. вентилей), а при установке более крупной ПЛИС XC4085XLA (160 тыс. вентилей) всего 6,5%!
Подводя итог сказанному, отметим, что описанное интегрированное решение PCI интерфейса на ПЛИС фирмы Xilinx предоставляет пользователю высокую гибкость аппаратного ядра, все преимущества однокристального решения и при невысокой стоимости уже на мелкосерийном производстве делает данный подход превосходным решением для современного отечественного разработчика.
Литература
Тел.: (0732) 51 2199, 72 7101
E-mail: capt@scan.voronezh.su
Ваш комментарий к статье | ||||