Разработка «прошивки» для PCI-Express адаптера для BVG Group
Заказчик: BVG Group
Сайт: http://www.bvg-group.ru
Отрасль: Электроника и аппаратное обеспечение
Разработана плата, которая с одной стороны выполняет частные задачи заказчика, а с другой – является универсальной базовой платой для шины PCI Express.
Ситуация
Заказчик планирует разработать и изготовить адаптер, подключаемый к шине PCI Express. Требуется разработать «прошивку» и программную поддержку для этого адаптера. Выходные интерфейсы специфичны и здесь не рассматриваются. Входным интерфейсом является PCI Express. Кроме того, требуется выработать рекомендации для заказчика, какую ПЛИС заложить в основу системы.
Решение
Анализ рынка показал, что типовые решения для подключения к шине PCI Express имеются у обоих лидеров по производству ПЛИС – Altera и Xilinx. Однако на момент исследования цены на микросхемы Cyclone IV GX выгодно отличались от цен на микросхемы фирмы Xilinx аналогичной категории (с учётом необходимости размещения не только ядра PCI Express, но и ядер целевых интерфейсов). Поэтому в основу был положен именно кристалл Cyclone IV GX фирмы Altera.
Реализация основной части ядра PCI Express выполнена согласно типовым рекомендациям с сайта фирмы Altera. Однако все типовые реализации контроллера DMA либо чрезвычайно медленны (единицы мегабайт в секунду), либо сложны. Поэтому контроллер DMA был разработан самостоятельно с нуля. С учётом задержек в целевых интерфейсах скорость обмена через DMA достигает 192 мегабайт в секунду (PCIe 1x Gen1). Развитая система буферизации позволяет демпфировать случайные задержки как в интерфейсе PCI Express, так и в целевом интерфейсе. При блокировке одного из них другой блок будет работать до заполнения (опустошения) буфера FIFO. При использовании PCI Express с более высоким числом линий (x4, x8) пропускная способность FIFO возрастёт.
Для программной поддержки контроллера разработан драйвер на основе инфраструктуры WDF фирмы Microsoft. Драйвер является универсальным и может охватывать большое количество задач без перерботки.
Заложенная в плате память DDR в настоящий момент не поддержана ядрами, так как все поставленные задачи решены без её использования. Она является заделом на расширение, давая плате потенциальную универсальность.
Типовые загрузчики FPGA требуют использования ПЛИС MAXII самой высокой ёмкости, что сильно увеличивает цену платы. Поэтому был разработан собственный загрузчик, который позволяет обновлять «прошивку» программным методом, но при этом занимает 30% ёмкости самого малого кристалла MAXII.
Результат
Разработана плата, которая с одной стороны выполняет частные задачи заказчика, а с другой – является универсальной базовой платой для шины PCI Express. Так, например, на её базе уже делался логический анализатор для внутренних нужд компании BVG Group с объёмом буферной памяти 4 мегабайта, объем которой можно при необходимости увеличить, а также – шинный анализатор протокола I2C. Плата может быть быстро перепрограммирована под многие другие задачи.
Используемые технологии
«Прошивка» ПЛИС разработана на языке VHDL в среде Quartus II фирмы Altera. Моделирование велось в бесплатной версии системы Modelsim-Altera. Основа PCI Express взята из типовых примеров фирмы Altera. Ядро DMA разработано с нуля, так как типовые решения или слишком медленны, или слишком сложны. Особенностью разработанного ядра является псевдобесконечность передаваемого массива.
Для загрузки FPGA разработана «прошивка» для CPLD MAXII, считывающая данные по интерфейсу SPI (с переходом на 4 битный интерфейс) и записи по интерфейсу загрузки Parallel Flash фирмы Altera. Разработка велась на языке VHDL.
Драйвер разработан на языке Си в среде WDK фирмы Microsoft с использованием инфраструктуры WDF фирмы Microsoft.
Скачать