Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PCI
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > ISA/PCI/PCI-X/PCI Express
PaulB
Здравствуйте.
Нужно разработать плату к PCI слоту, чтоб эта плата обменивалась данными с другими платами, датчиками и прочим. Головная программа находящаяся в самом компе должна всем этим рулить.
Пожалуйсто подскажите как это воплатить в жизнь? help.gif
makc
Эта тема уже обсуждалась. Воспользуйтесь поиском по форуму.
PaulB
Как эта тема называется? А то я искал но не чего стоищего так и не нашёл.
HardJoker
Цитата(PaulB @ Aug 20 2006, 12:09) *
Как эта тема называется? А то я искал но не чего стоищего так и не нашёл.


А какая требуется периферия. У меня есть одно изделие: два Etherneta'а (SMSC9115) + USB Device + RS-232 + 256MB SDRAM + 512MB Flash. С другой стороны ПЛИС (LatticeXP) PCI
PaulB
В принципе любая. Особых ограничений нет лишбы могла общаться.
makc
Цитата(makc @ Aug 20 2006, 11:57) *
Эта тема уже обсуждалась. Воспользуйтесь поиском по форуму.


Например:
http://electronix.ru/forum/index.php?showt...9837&hl=PCI
http://electronix.ru/forum/index.php?showtopic=17142&hl=
И еще тема, очень созвучная Вашей - http://electronix.ru/forum/index.php?showtopic=15105&hl=


Цитата(PaulB @ Aug 20 2006, 12:50) *
В принципе любая. Особых ограничений нет лишбы могла общаться.


"Общение" подразумевает реализацию специфичных интерфейсов. Вы же не указали ни одного... А ведь тип интерфейсов определяет требования к интерфейсу на шине PCI (Master или Target, величины латентности и т.п.).
PaulB
>makc
Я конечно в этой теме ещё мало чего знаю, но насколько мне стало известно то, что оба этих устройства (Master & Target) должны присутствовать в PCI устройстве, так как через них осуществляется транзакция. Хотя может я неправ.

В общем, я понял так: чтобы сделать устройство (плату) к PCI шине надо на плату поместить контроллер, у которого одни порты должны идти к PCI шине, а другие к второстепенным деталям. Но чтобы всё это работало ещё надо сначала запрограммировать микроконтроллер, а потом написать драйвер для всего этого.
Так?
Поправьте меня если я чего не так понял.
DS
Нет, Вы не правы. Master и Target - это типы интефейсов PCI. Основное отличие - Master может инициировать транзакции на PCI шине, target - нет, он может выполнять только то, что от него требует Master.

На плате должен быть контроллер PCI, это конечный автомат, а не микроконтроллер. Поэтому, если контроллер покупной, PLX например, для не программируется только конфигурация в небольшой ПЗУ.
Если самодельный, как правило, ничего не надо программировать.

Драйвер, естественно, нужен, для полноценной работы, скажем под Windows, но в принципе можно и нахально писать в регистры / память устройства прямо из программы, тут PCI устройство ничем не отличается от любой другой периферии.
PaulB
>DS
Cпасибо.

Я вот ещё на один pdf файл наткнулся http://www.platan.ru/shem/pdf/pci.pdf

Что думаете? Что лучше, проще и дешовей?
DS
Если Вам надо изготовить в пределах тысяч плат - лучше покупать готовую микросхему типа PLX9052 за 25 - 30$ или что-то похожее. Вы будете гарантированы, что если сразу не заработало, то просто плохо припаяна микросхема к плате. Иначе обязательно будут проблемы - в упрощенных версиях PCI всегда что-то "незаконно" пропущено, что может привести, например, к тому, что некоторые материнские платы не будут подключать сигнал CLK к Вашей плате или еще хуже - вообще на одной плате работает, а другая не запускается даже.

Если будете работать с PLX (ими, кстати, даже CISCO в серийных устройствах не брезгует, они пользуют PLX9050 +Xilinxовский CPLD на своих 802.11 карточках), то не придется изучать аппаратную спецификацию PCI, а конфигурируется она уже в собранном виде при работе, ПЗУ записывается/считывается через специальный регистр. И примеров драйверов довольно много.
PaulB
Схемку не дадите? А при написания драйвера к каким портам обращаться и как?
DS
Вот Вам документация по 9052, изучайте.

Со стороны PCI все однозначно, со стороны Вашей схемы - сами конфигурируете что и как должно быть.
Адреса назначаются в зависимости от материнской плате и положения разъема. Они считываются через BIOS или средствами ОС.
ishergin
Доброго врмени суток!

Схема есть в формате Accel EDA, PCAD 2001 для ПЛИС Xilinx, если надо, то могу выслать.

Для начала надо определиться с ПЛИС или контроллером, исходя из Ваших задач и требований. Такой вот ответ на такой вопрос cheers.gif

Вообще я бы Вам посоветовал тот путь, который проделал я
1. Прочитать этот форум (подходящие тематические разделы) -- самая полезная вещь smile.gif
2. Прочитать спецификацию PCI
3. Прочитать книгу(и) по Verilog или VHDL
3.1. Научится разрабатывать драйвера для оборудования
4. Точно сформулировать цели и задачи
5. .... и т.д.

Просто Ваш вопрос охватывает как область железа, так и программирования, поэтому точнее формулируйте свой вопрос, если хотите получить точный или подробный ответ.
Ответы на общие вопросы можно найти прочитав форум или воспользовавшись поиском.

Удачи!
PaulB
>DS
За документацию спасибо.

Недавно нашёл статью, называется «Адаптер интерфейса PCI для периферийных устройств.» журнал «Радио». Там используется микросхема 9040, но также упоминается и 9052. Так же приведена схема адаптера. В принципе схема не сложная, но вот то, что касается микросхемы 9052 конечно дороговато. Жалко, что эту статью не как не могу найти, хотя где то на этом форуме я её видал.

А на PCI нельзя сделать, так как на LTP? Например: чтобы включить светодиод на ЛПТ надо один вывод светодиода подключить к источнику электроэнергии, а другой конец к одному из выводов ЛПТ порта. Потом просто посылается в порт сигнал и светодиод загорается. Можно ли такое сделать на PCI без применения моста, и получится ли обратная связь, если с внешнего устройства послать сигнал на PCI шину?
makc
PCI - это шина для нескольких устройств, а не примитивный интерфейс типа LPT. Так что ответ - НЕТ.
Самое простое - взять CPLD и реализовать на нем простейший интерфейс, как сделано в примерах на www.fpga4fun.com. Но работать это будет далеко не везде.
sazh
Нужно разработать плату к PCI слоту, чтоб эта плата обменивалась данными с другими платами, датчиками и прочим. Головная программа находящаяся в самом компе должна всем этим рулить.
Можно взять (как черный ящик) IP CORE PCI. Минимальные знания протокола + описание этого IPCORE( Если еще чего либо надо реализовать на FPGA). Несомненный плюс, клок PCI шины достается только FPGA.
PaulB
А программировать 9052 надо или нет? В каком режиме работает эта микросхема master или target и можно поподробнее об этих режимах и как они различаются?
DS
Цитата(PaulB @ Aug 21 2006, 17:29) *
А программировать 9052 надо или нет? В каком режиме работает эта микросхема master или target и можно поподробнее об этих режимах и как они различаются?


Надо программировать после сборки устройства отображение адресов шины PCI на локальную шину. Это делается на собранной PCI плате путем записи побитно в ПЗУ, которое подцеплено к 9052. ПЗУ можно, конечно, и заранее в программаторе зашить.
Это микросхема может работать только в режиме Target, для master нужна существенно более дорогая 9080. Это фактически означает, что по инициативе Вашего устройства нельзя будет переписать данные с устройства в память компьютера без участия процессора этого компьютера. т.е. target работает примерно так - устройство готово - прерывание на PCI, процессор вычитывает данные. Для master - данные готовы - переписываются в ОЗУ компьютера - потом прерывание, и процессор может с ними работать уже не обращаясь к Вашему устройству.
PaulB
Мне кажется, что для моего устройства хватит микросхемы с режимом target. Вот только всё же какую выбрать 2040, 9052 или какую другую посоветуете? На 2040 у меня есть схема, а на 9052 нет ни чего кроме документации (и то которая на английском), но первую на сколько мне известно уже сняли с производства и её наверное труднее найти, вторую не знаю.
А вообще как, эти микросхемы в свободной продаже или надо заказывать у производителя?
DS
9052 одно время продавалась в Техно - www.techno.ru. Схему я Вам могу дать - но и самому догадаться легко.
PaulB
P1, P2 это в PCI слот, если я правильно понял. D0 - D28 – это линии ввода – вывода,
а линии LBE0 – LBE3, RD, WR, CS0, CS1, LCLK, INT1, INT2, RST- это к программатору, хотя почему - то их больно много.
Всё так?
DS
Цитата(PaulB @ Aug 21 2006, 20:09) *
P1, P2 это в PCI слот, если я правильно понял. D0 - D28 – это линии ввода – вывода,
а линии LBE0 – LBE3, RD, WR, CS0, CS1, LCLK, INT1, INT2, RST- это к программатору, хотя почему - то их больно много.
Всё так?

Нет, это линии управления - lbe0 - lbe3 - активна, когда на шине идет передача соответствубщего байта (d0-d7, d8-15, d16 -d23, d24-d31). CS - выборка устройств пользователя. Внутри микросхемы есть селектор адреса, и когда адрес на шине PCI поадает в нужный диапазон, выставляется соответствующий CS. RD и WR - соответственно чтение и запись устройств пользователя. INT - запросы прерывания от устройства пользователя, RST - сброс. Программатор вообще не нужен.

Вы хоть картинки и временные диаграммы в документации внимательно изучите

PS А темку я перенесу в Интерфейсы, а то к ПЛИС она уже никак не относится.
Илья Игоревич
А вот я бы посоветовал автору темы сначала внимательно прочитать спецификацию PCI, а потом _хорошо_ подумать, нужно ли оно ему вообще.
Так, например, в разделе Electrical Specifications (rev. 3.0, p. 138) рассказывают, что шина работает на "отраженной волне" - т.е. например, драйвер шины поднимает напряжение не до трех вольт, а до полутора, но с высоким уровнем нарастания. Полученная волна отражается от "конца" шины (он без терминаторов) и складывается с начальным напряжением, в итоге получаются желаемые три вольта. Что это дает в практическом плане, кроме скорости? Необходимость очень аккуратно разводить плату, работающую с PCI. И точно, дальше в том же документе указывают конечные размеры и конфигурацию разведенных на плате сигналов, например, дорожка CLK должна быть длиной в 2.5+-1 дюймов.
Нет, не поймите меня неправильно, я не хочу никого пугатьsmile.gif Я лишь хотел предупредить, что сделать полностью совместимое со стандартом PCI устройство гораздо сложнее, чем с ISA или, тем более, LPT. Столь же сложнее, сколь и интереснее.
PaulB
>А вот я бы посоветовал автору темы сначала внимательно прочитать спецификацию PCI, а потом _хорошо_ подумать, нужно ли оно ему вообще.
У меня с англ-яз плоховато будет. Нужно. Почитав все сообщения я это кокраз и понял. Для моей "штуковены" это как мне кажется самое простое решение. Вот теперь стоит вопрос где её достать?
Oldring
Цитата(Илья Игоревич @ Aug 31 2006, 21:27) *
А вот я бы посоветовал автору темы сначала внимательно прочитать спецификацию PCI, а потом _хорошо_ подумать, нужно ли оно ему вообще.


Ага. Нужно в FAQ внести. Ни в коем случае не беритесь за PCI плату если для решения задачи достаточно USB устройства biggrin.gif
PaulB
USB конечно интересно, но PCI ещё интереснее т. к. у него больше вожможностей, темболее для моего устройства это только в данный момент достаточно простого обмена данными, а потом могут потребоваться более сложные функции.
>Ага. Нужно в FAQ внести.
НУЖНО! smile.gif
Георгий
А продает кто нибудь типа оценочных плат на PLX9052?
iosifk
Цитата(Георгий @ Oct 18 2006, 12:45) *
А продает кто нибудь типа оценочных плат на PLX9052?

Прежде чем хвататься за разработку PCI неплохо сначала ознакомиться с микроконтроллерами, которые уже имеют в своем составе порт PCI. Это по цене соизмеримо с покупкой "голого" контроллера
PCI, а по производительности - намного лучше. Да и плату экономит сильно.
Всех я конечно не знаю, но вот только некоторые:
BlackFin у ADI,
KSZ8695P и PX

Что-то есть у IDT и у Broadcom....
Георгий
Ну и что из того, чтоя приобрету контроллер с PCI на борту, полноценную плату я все рано изготовить не смогу. А так я поимею готовую плату с хорошо знакомым ISA интерфейсом.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.