Научная статья на тему 'Разработка устройства с интерфейсом PCI'

Разработка устройства с интерфейсом PCI Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
1558
184
i Надоели баннеры? Вы всегда можете отключить рекламу.

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Курбатов Александр

Рассматриваются вопросы, возникающие в начальной стадии проектирования аппаратной части и программного обеспечения устройств с шиной PCI. Сделан обзор возможных решений и их сравнение. Приведена информация о микросхемах и программах, ориентированных на поддержку интерфейса PCI.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Разработка устройства с интерфейсом PCI»

Разработка устройства с интерфейсом PCI

(Обзор проблем для начинающих)

Александр Курбатов

alex [email protected]

Рассматриваются вопросы, возникающие в начальной стадии проектирования аппаратной части и программного обеспечения устройств с шиной РС1. Сделан обзор возможных решений и их сравнение. Приведена информация о микросхемах и программах, ориентированных на поддержку интерфейса РС1.

Массовое применение офисных и бытовых PC для решения задач контроля и измерений, кроме понятных причин — низкой стоимости, распространенности, обилия программного обеспечении было также вызвано простотой организации связи компьютера с внешними устройствами. Чаще всего она реализовывалась путем установки соответствующих интерфейсных плат в слоты ISA системного блока. Если покупная плата по каким-нибудь причинам не подходила, то для многих несложных задач разработать и изготовить ее по силам и начинающему инженеру. Устройства. выполненные таким образом, не требуют корпуса и блока питания — весьма значительное достоинство по сравнению с решениями, использующими внешние порты PC (параллельный, последовательные, USB, GPIB).

Тенденции последних лет ргшитмя офисных и бытовых PC однозначно свидетельствуют о предстоящем исчезновении из них шины ISA (см., например, известную спецификацию РС99). В промышленных компьютерах этот процесс, видимо, будет более продолжителен во времени, но результат ожидается такой же. Таким образом, на несколько ближайших лет перспективным интерфейсом для вставных плат остается только PCI.

Хотя шина PCI появилась в PC достаточно давно, но в платах типа ЛЦП/ЦЛП или цифрового ввода/вывода. іде не требовались высокие скорости передачи данных, данный интерфейс до недавнего времени использовался редко. Причина этого — значительно большие затраты на аппаратную реа лизацию и программную поддержку по сравнению с ISA-устройствами. Сейчас же на такие затраты идти придется. Ниже будет сделан обзор некоторых решений, в которых эти трудности кажутся вполне преодолимыми.

1. АППАРАТНАЯ РЕАЛИЗАЦИЯ

Некоторые специализированные микросхемы, например для построения плат захвата видеокадра (frame grabber) фирмы Brooktree, имеют встроенный PCI интерфейс. Чаще же всего разработчик сам должен выбрать конкретной способ стыковки с шиной. Представляется, что существуют три таких основных способа.

По пути разработки заказных схем для построения собственных PCI-устройств идут крупные фирмы, например National Instruments. Этот подход очевиден для применения в изделиях, выпускаемых значительными сериями.

Во втором случае используют программируемые логические интегральные схемы (ПЛИС), практически всегда типа FPGA, и соответствующий библиотечный модуль PCI-интерфейса для применяемого САПРа разводки ПЛИС, который предлагает производитель последних или работающая с ним в альянсе третья фирма.

Третий способ заключается в применении специализированной микросхемы, формирующей на выходе сигналы локальной шины, удобной для последующего использования.

Рассмотрим более подробно два последних подхода, приемлемых для реализации PCI-интерфейса в малотиражных устройствах.

1.1. Использование ПЛИС

Реализации PCI-интерфейса, предлагаемые или рекомендуемые производителем ПЛ^С отдельно от поставляемого САПРа за дополнительную оплату, обычно разделяются на наиболее полный вариант с возможностями мастера шина (Bus Master) и упрощенный, в котором разрабатываемое устройство является ведомым (Target. Slave). Представляется, что в большинстве случаев для построения первых и не самых сложных собственных PCI- плат, а также и для переработки многих уже реализованных ISA-усгройств. достаточно возможностей режима работы Target. В дальнейшем изложение будет относиться только к такому классу устройств.

Практически все изготовители FPGA-кристаллов (Actel. Altera, Lattice, Xilinx и др.) предлагают PCI-решения. Они обычно заключаются в предоставлении библиотечного модуля, описанного в транслируемом САПРом формате и снабженного поддержкой для оптимальной разводки в кристалле и последующего симулирования.

Для примера остановимся несколько подробнее на решениях, которые рекомендует Altera. Она поставляет модуль PCITl MegaCore собственной разработки (рис. 1).

:<?мп9нентм и технр/іргиИі N? Г1999

Компоненты

Г1 обеспечивает 32-раэрядный обмен 1-шине с частотой 33 МГц. Модуль рас-« на применение FPGA серий FLEX10K и )00. При использовании одного базоадресного регистра в микросхеме 16QC208-2 он требует 689 логических нтов (52 % утилизации объема). Остав-в кристалле 631 элемент может искаться для построения других нужных ?кте цифровых схем. FIFO необходимо нять также самостоятельно.

1 написан на языке AHDL и зашифрован, можно списать с сайта фирмы jltera.com), выполнить разводку и симу-жие, но объектный файл для загрузки в гурационное ПЗУ не выдается (нужно по-лицензию. для чего и используется шиф-

«е собственного PCIT1, Altera рекоменду-«е другие решения, поставляемые со-чающими с ней фирмами. Например, и PLD Applications (www.plda.com) раз-н PCI Target Core (рис. 2). отличающийся 1 способом построения локальной ши-<ный модуль обеспечивает соответствие 2.2 PCI стандарта и в зависимости от ерсии поддерживает 32- или 64-разряд-мен по шине с частотой 33/66 МГц. FIFO ^усмотрено. PCI Target Core написан на /HDL также зашифрован и ориентиро-FPGA серий FLEX10K и FLEX6000. Его то-но списать с сайта и после регистрации ыслан код лицензии (без выдачи файла «мирования конфигурационного ПЗУ), ктирование с использованием рассмот-модулей осуществляется в обычном для л MAXPLUS порядке: их символьные изо-ия объединяются в общую схему с дру-зходимой в устройстве логикой, обозна-на рис. 2 как User Back-End Application, можность построения всей цифровой латы на одной микросхеме и является.

основным достоинством решения с гнием FPGA. К недостаткам можно огне-)ходимость приобретения РС1-расшире-ШРу (уровни цен достигают тысяч дол-зависимости от конфигурации и по-л) и наличия у разработчика достаточна в проектировании ПЛИС.

. Использование специализированных микросхем

ому пути построения РС1-интерфейса ут небольшие организации. Например, i Livetine (wwv.amplicon.co.uk) приме-кросхемы фирм Applied Micro Circuits www.amcc.com) и PLX Technology ttech.com.) в платах PCI 9810 (Very *ed PCI Analog Input Board) и PCI 260 Input Board) соответственно, выпускает микросхему 32-раэрядного it интерфейса типа S5920. осуществ-обмен с частогой 33 МГц. Ее основ-южности и назначение хорошо видны *. Схема имеет 160-выводный корпус

же назначения микросхемы типа PCI CI 9052, соответствующие версии 2.1 .ификации, производит PLX Tech-1римечательной дополнительной осо-

бенностью PCI 9052 (рис. 4) является наличие одного из режимов конфигурации, в котором она эмулирует сигналы шины ISA. Имеется FIFO размером 64 байта при записи и 32 байта при чтении. Обе схемы выполнены в 160-вы-водном корпусе QFP.

Для микросхем S5920 и PCI 9050 имеются средства поддержки разработки (Development Kit) и прототипные платы.

Конкрегные параметры PCI-устройства, такие как данные об его изготовителе и типе, распределение адресного пространства, загружаются в рассмотренные микросхемы из ППЗУ с последовательным доступом (Serial nvRAM на рис. 3 и EEPR0M на рис. 4). В случае отсутствия этого ППЗУ в конфигурационной области памяти схемы присутствуют типовые данные. Допускается чтение/запись ППЗУ по шине PCI путем обращения к специальным регистрам микросхемы с помощью имеющихся соответствующих программ.

Обычно это ППЗУ имеет объем 1 Кбит.

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

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

Применения специализированной схемы какого-нибудь из рассмотренных типов вряд ли будет достаточно для построения реального PCI-устройства. Для стыковки с создаваемой ею локальной шиной потребуются цифровые схемы, реализацию которых в настоящее время трудно представить без применения ПЛИС. Однако возможно использование существенно более простой, а в некоторых случаях и менее быстродействующей (более дешевой) версии ПЛИС, чем было бы необходимо для построения всей цифровой части устройства на одной микросхеме в соответствии со вторым вариантом. Также необязательно применение ПЛИС именно типа FPGA, требующей конфигурационного ПЗУ. Проектирование такой ПЛИС потребует меньших затрат времени и требований к САПР. Эти приведенные выше соображения лежат в основе выбора, какой из вариантов аппаратной реализации целесообразно использовать для построения конкретного устройства.

2. ПРОГРАММНАЯ ПОДДЕРЖКА

Для ISA-плат с фиксированными адресами программирование ввода/вывода обычно особых проблем не вызывает. К тому же для них накопилось много разных рекомендаций и наработок. В случае PCI-устройств дело обстоит значительно труднее. При написании целиком собственного программного обеспечения необходимо не только детальное знание существен-

но более сложного интерфейса, но и функций PCI BIOS, который определяет все адреса и прерывания РСІ-устройств в системе.

Поставщики PG-решений на основе FPGA для упрощения и ускорения всего процесса проектирования конечного изделия обычно комплектуют их драйверами и/или их исходными текстами. Так, Altera использует для этих целей продукцию фирмы BlueWater Systems (www.bluewatersystems.com).

Ниже рассматриваются два программных продукта, которые имеют как специализированное. так и универсальное назначения, и, как

•- - ► - 4 - *»*- - -

•W.

N

Рис. 1. Функциональная схема РСГТ1

Рис. 2. Блок-схема PCI Target Core представляется, способны перекрыть практически все реальные потребности при разработке программной поддержки шины PCI. Выбор конкретного из них зависит от требований к производительности устройства, типа операционной системы (OS), степени подготовленности разработчика в программировании и финансовых возможностей.

2.1. WinDriver

Для ускоренной разработки устройств на кристаллах производства АМСС (схема S5933) и PLX Technology (схемы PCI 9050/52/-54/60/80) без необходимости конкретного знания программистом многих деталей их работы фирма KRFTech (www.krftech.com) предлагает пакет WinDriver. Не упомянутый ранее

РСІ-контроллер S5933, имеющий режим Bus Master, совместим с рассмотренным S5920 по режиму Target, что позволяет использовать для S5920 соответствующие этому режиму специальные библиотечные функции упомянутого пакета.

Поддерживаемые платформы: Windows 9X/NT/2000/CE и Linux. WinDriver ориентирован на программирование на С но в последних версиях (4. К на момент подготовки статьи) появляется возможность использовать Delphi и Visual BASIC. Возможно применение пакета для поддержки РСІ-плат и на других схемах (с меньшими возможностями в части набора библиотечных функций), а также для интерфейсов ISA. ISA Plug and Play и PCMCIA. Обеспечивается обработка прерываний, а для PCI и работа в режиме DMA.

Пакет включает в себя специальную программу WinDriver Wizard, которая обеспечивает процедуру ускоренной разработки той части пользовательской программы, которая отвечает за поддержку аппаратной части. WinDriver Wizard создает скелет вызовов заданных функций на языке С для последующего компилирования (Microsoft Developper Studio 5 или 6, Borland C++ Builder 3 или 4, Linux) в составе пользовательской программы или в виде DLL-файла. Эта процедура также упрощает создание собственных драиверов VXD и SYS. Такой оптимизированный драйвер позволяет увеличить скорость обработки прерываний в Windows до 10 и более раз за счет их обслуживания самим драйвером, а не в пользовательской программе. WinDriver Wizard имеет режим диагностики, позволяющий непосредственно обращаться к ресурсам установленной в компьютер платы (порты, память, прерывания), что позволяет использовать его и при отладке аппаратной части проектируемого устройства.

Это достаточно дорогой, но мощный пакет стоит в минимальной конфигурации 899 долларов. На сайте фирмы имеется его 30-дневная испытательная версия.

2.2. DriverX

Более простым, быстрым и дешевым решением для многих задач обслуживания аппаратной части, не требующих максимально опти-

ActivoX Control Roforonco

Methods:

Allocot«OpQuoue ConfiguteDnvef ConhgurelnUirrupt ConligurelwkiOp ConhgurePcrtRanqe DcloleOpQuouf»

Enablelv GetDev>ceConlig GetQonoeReiuJtv MapDoviccMemofy Outp

QueyeBvfOulp OuoiM*Ou1p ReodBytn/Wofd/longDnra8uff«M ReodByte/Wcxd/longQueueBul SetErrofHarxJIer StartDevlce

-

4/

мизированного драйвера, представляется использование пакета DriverX фирмы Tetradyne (www.tetradyne.com).

Этот пакет не ориентирован на поддержку конкретных типов микросхем сопряжения с шиной. Он использует стандартные возможности интерфейсов типа ISA и PCI.

DriverX предназначен для работы с языками программирования Visual C++. Delphi и Visual BASIC в среде Windows 9X/NT.

Для Visual BASIC поддержка осуществляется в форме ActiveX (OCX), что позволяет быстро получить результаты и при небольшом опыте программирования. Обширные возможности данного компонента видны из приведенного ниже списка имеющихся операций:

DriverX обеспечивает конфигурацию драйвера и устройства (Device) по шине ISA или PCL работу с физической памятью и портами. обработку прерываний и поддерживает режим PCI Bus Master DMA. Данные могут быть одно-, двух- или четырехбайтными.

Операции ввода/вывода включают в себя команды работы с одним портом (inp, outp), с диапазоном портов (InPort. OutPort) и буфферизированный обмен с автоинкрементированием (Auto-IncReadPort. AutoIncWiitePoit), позволяющий существенного увеличить скорость обмена (до 100 раз). Быстродействие также можно повысить путем использования операций ввода/вывода в режиме Queue, при котором драйвер выполняет группы и циклы заданных команд о течение одного обращения к нему.

При прерываниях вызывается пользовательская процедура их обработки ISR (Interrupt Service Routine).

Для РСІ-устройства предусмотрены операции GetBusDataByOffset и SetBusDataByOffset

11 го .«• -*««.1.9. *

««Они

Ьтт ОаМЧ*» ••

•КО »М» 1 »!»• 1 »*0

*1 ►я» Чі.

ь=-

лисе гГ5»1

имам* А~Щ

ІМ і**» * ^

• М Чъ=г

Рис. 3. Функциональная схема S5920

обеспечивающие чтение/запись его конфигурационной области памяти.

ЙЕ

Uf‘Mt

PCI

905?

-ЛХ-

10

Рис. 4. Интерфейсные сигналы и схема включения PCI 9052

Стоимость DriverX в конфигурации только ActiveX составляет 179 долларов для одной OS (Windows 9Х или NT), а для полной версии и обеих OS — 399 долларов.

3. ЗАКЛЮЧЕНИЕ

AutolncReodPoM

ConliguielvOp Connect Device Disoblelir Execute GetlvDala top In Port MapDmaBuHer OutPort

Qocuelnp

QiK>ueT«mpOu»p

AnTolncWritePort СолЦ-jureDynam >c

ConllgureMemRnnge Connectlnlerrupt Dhk: onnedDovtce

ConfigureDovice

ConliguielgnoroConflicts

ConligurePciPo»ame1eri DeloteDeviccConhgurolion Disconnect Inltir гир»

GetBylo/Wofd/LongBmDataByOHsot GetMdDuta GotPhyvcolAddfeiS

IsDf і vei Con! igui ed MapPorls

Qi*joeBteckHAiid OueueBullnp

OuuueOfTemp

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Queue WKilelnpEqual

UDeviceRonnlng MopMemofy QococAndTemp QueucloopBock QoeueWhildnpAnd RoadByU’/Wofd/longMcm SetByie/Wotd/longBusDaioByOffiet StopDevice UnmapMomory .

UnrnopPort» WfiteByto/Wofd/LongOmaBoHe» WrifeByto/Word/longMem

WntcByte/Wcxd/longQueueBuf ZoroDevlceConftg

Events

Onlntorrupt

Подводя итог, следует подчеркнуть, что по причине практической необъятности материала данной тематики освещенные вопросы изложены в намеренно сжатой форме. Предложенные варианты решений не претендуют на единственность по той же причине. Необходимая для начала проектирования конкретная информация о рассмотренных продуктах есть на соответствующих сайтах. Хочется также обратить внимание на то. что возможные сферы использования WinDriver и DriverX значительно шире, чем для решения задач, рассматриваемых в данной статье.

Поставщики микросхем фирм АМСС и PLX Technology в России не известны. Может на этот факт, особенно с учетом безусловного расширения в ближайшем будущем областей применения шины PCI, стоит обратить внимание организациям, поставляющих электронные компоненты.

i Надоели баннеры? Вы всегда можете отключить рекламу.