Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PCI на MAX II
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Pavel_
Здравствуйте всем!
Задача такова: имеется плата с ISA-интерфейсом на которой установлена ПЛИС EPM3128ATC144-10, микросхема ST16C554 (4 UARTa) гальваническая развязка UARTов и RS-422 преобразователи, четыре 8-ми разрядных регистра ввода-вывода для сканирования клавиатуры и управления светодиодами. Решено было превести сие чудо на PCI и поиметь сразу все прелести Plug`n`play а заодно и освоить новое, более дешёвое семейство MAX II.
Опыта в использовании PCI нету. В связи с этим есть несколько вопросов:
1. Изучаю спецификации PCI 2.2, PCI 3.0 , книги Гука "Аппаратные интерфейсы ПК" и "PCI system architecture" Tom Shanley and Don Anderson" Что ещё посоветуете почитать?
2. Выбрали ПЛИС - EPM570T144C5. Хватит ли её ресурсов и производительности, если учесть, что новое устройство с точки зрения PCI будет иметь две функции: одна функция - это UARTы, соответственно 4 BARа одна линия прерываний - INTA, другая - ввод-вывод, 1 BAR и ещё одна линия прерываний INTB. Здесь на форуме Boris_TS говорил про проблемы реализации многофункциональных устройств с использованием нескольких прерываний, стоит ли отказаться от использования 2-х функций?
3. А не изобретаем ли мы велосипед? т.е. может посоветуете недорогие микросхемы UART со встроенным PCI-интерфейсом типа MCS9835CV. Не получится ли дешевле, чем связка ПЛИС+ST16C550?
4. Решено сделать так (по опыту ISA), новое устройство будет иметь 5-вольтовую спецификацию разъёма PCI. 5V с шины будет преобразовываться в 3,3V с помощью LM1117DT-3.3 и запитавть ПЛИС. Судя по спецификации на семейство MAX II при 3,3V питании выводы ПЛИС 5-V толерантны. Будет такая схема работать или есть лучшие варианты?
5. Прошивку ПЛИС разрабатываю в графическом редакторе пакета Quartus 8.0 (bdf), может быть есть у кого примеры реализации PCI устройства в таком формате? Я был бы очень признателен. Удастся ли сэкономить ресурсы ПЛИС, если отказаться от использования стандартной PCI-корки.
Заранее спасибо всем, кто откликнется!!!
DmitryR
Цитата(Pavel_ @ Sep 8 2009, 12:32) *
2. Выбрали ПЛИС - EPM570T144C5. Хватит ли её ресурсов и производительности,
Забавно, вы сначала выбрали устройство, а потом спрашиваете, хватит ли его ресурсов. Конечно же не хватит, неужели этого не видно уже из толщины спецификации PCI?

Цитата(Pavel_ @ Sep 8 2009, 12:32) *
3. А не изобретаем ли мы велосипед?
Изобретаете.

Цитата(Pavel_ @ Sep 8 2009, 12:32) *
т.е. может посоветуете недорогие микросхемы UART со встроенным PCI-интерфейсом типа MCS9835CV.
OXuPCI954.

Цитата(Pavel_ @ Sep 8 2009, 12:32) *
Не получится ли дешевле, чем связка ПЛИС+ST16C550?
Получится, причем в разы.

Цитата(Pavel_ @ Sep 8 2009, 12:32) *
Судя по спецификации на семейство MAX II при 3,3V питании выводы ПЛИС 5-V толерантны. Будет такая схема работать или есть лучшие варианты?
Есть, QS3861 в разрыв линий.

Цитата(Pavel_ @ Sep 8 2009, 12:32) *
Удастся ли сэкономить ресурсы ПЛИС, если отказаться от использования стандартной PCI-корки.
Удастся, но с учетом стоимости труда инженера по деньгам вы проиграете.
Pavel_
Цитата(DmitryR @ Sep 8 2009, 12:46) *
Забавно, вы сначала выбрали устройство, а потом спрашиваете, хватит ли его ресурсов. Конечно же не хватит, неужели этого не видно уже из толщины спецификации PCI?

Изобретаете.

OXuPCI954.

Получится, причем в разы.

Есть, QS3861 в разрыв линий.

Удастся, но с учетом стоимости труда инженера по деньгам вы проиграете.

DmitryR, спасибо за быстрый ответ!
Я выбрал устройство исходя из примерных соображений и решил посоветваться с опытными людьми. Да, толста спецификация PCI, однако далеко не все функции мне потребуются. Мне нужно: пространство конфигурации для 2-х функций, в которых будут использоваться следующие регистры, приведу адреса: 00h, 04h, 08h, 0ch, 4 BARa( для другой 1 BAR), 3Ch и обработка команд доступа к пространству ввода-вывода и всё! Как Вы считаете сколько ресурсов ПЛИС для этого потребуется? Вот пример реализации доступа к пространству конфигурации PCI, реализованный на EPM3032 http://www.rlocman.ru/shem/schematics.html?di=41202 Обратите внимание как в этом примере подключена запитывается ПЛИС, есть ли необходимость в "QS3861 в разрыв линий"

OXuPCI954 - может быть OXmPCI954? Спасибо за инфу, буду изучать. Цена 1111 рэ по данным efind - или есть дешевле?
DmitryR
Что касается ресурсов, то PCI mini с OpenCores укладывается в самый маленький Spartan-3. Но это очень урезанное ядро, с одним BAR, с фиксированным размером области etc. Можно предположить, что вам потребуется следующий по емкости, или может даже еще следующий, так как UART тоже что-то занимает. QS3861 ставить придется - современные FPGA 5V не держат. А OXmPCI954 объявлен EOL, но OXu не думаю, что как-то сильно отличается. Скачайте доки, они не требуют NDA на эти чипы.
slog
EPM570 хватит на немного урезанный PCI. Ещё и место останется.
sysel
Посмотрите на продукцию EXAR.

Они делают многоканальные контроллеры UART с интерфейсом PCI (5V tolerance).
У них на каждый UART есть FIFO на 64(TX) и 64(RX) байт.

http://www.exar.com/Common/Content/Product...118&SubID=9
Kuzmi4
2 slog - это вы уже пробовали ? Или предварительная оценка ?
DmitryR
Цитата(slog @ Sep 8 2009, 18:29) *
EPM570 хватит на немного урезанный PCI. Ещё и место останется.
Это вполне возможно, просто слово "немного" каждый понимает по-своему. Как показывает приведенная выше ссылка, можно реализовать PCI и в меньшей CPLD, однако я назвал бы такую реализацию абсолютно минималистичной, а не "немного урезанной". И с учетом того, что задача несколько сложнее, чем зажечь лампочку при транзакции на PCI, да и FIFO при реализации UART не будут лишними - я бы все-таки советовал смотреть скорее на минимальные FPGA, чем на CPLD. Так как если уж брать ПЛИС, то и UART имеет смысл реализовать там, а также потому, что EP3C5 стоит столько же, сколько EPM570.
slog
Я делал в EPM1270 и примерно представляю сколько у меня сильно урезанный PCI занимал. В EPM570 влез бы, но действительно, сейчас я бы не связывался с EPM, нет в них смысла если есть EP3Cх. По цене примерно одинаково но ресурсов гораздо больше.


Основа того что я делал взята с этого же форума вот отсюда http://electronix.ru/forum/index.php?showt...ost&p=15250
В EPM1270 занимает всего 137 Logic Cells. Но я этот код несколько правил под свою задачу. Работает.
Kuzmi4
А не подскажете, в сторону мастера - это куда смотреть нужно? Ну кроме спецификации конечно laughing.gif
iosifk
Прочитал и удивился...
Ей богу... "Вот был у нас паровоз. Хочется поменять, но только чтобы топить углем"...
Если у Вас есть 4 потока данных, это значит, что должен быть какой-то протокол сверху. Или какая-то первичная обработка...
Так кто же мешает взять быстрый процессор, имеющий встроенный выход на PCI и этим процессором ПРОГРАММНО принимать все эти UART'ы... Ну и конечно у него должны быть еще и "родные" уарты ? Если посмотрите как сделаны платы расширения, то там и найдете такую архитектуру. Ну и если скорости в уартах не сильно велики, то процессор еще и протокол успеет обработать...
Процессор будет стоить примерно как ПЛИС или чуть больше, но при этом нижние уровни протокола все-таки чего-то тоже стоят. Трудозатраты на освоение - намного меньше, если для Вас ПЛИС - новая тема...

Дальше - еще одно предложение. Возможно оно покажется не слишком оптимальным, но все же.
Берем KSZ8695 - у него 3 шины PCI. Одну используем как слэйв - ее втыкаем в Вашу материнку. Две другие - как мастер. На нее вешанм стандартные чипы "уарт-PCI". Получаем систему обработки. Попутно получаем Ethernet...
Serhiy_UA
Цитата(Kuzmi4 @ Sep 11 2009, 10:27) *
А не подскажете, в сторону мастера - это куда смотреть нужно? Ну кроме спецификации конечно laughing.gif

Если на корки мастеров то
Для QII 7.2 на PCI Compiler 7.2
Для Max+PlusII на pci_1_3
Pavel_
Цитата
Прочитал и удивился...
Ей богу... "Вот был у нас паровоз. Хочется поменять, но только чтобы топить углем"...
Если у Вас есть 4 потока данных, это значит, что должен быть какой-то протокол сверху. Или какая-то первичная обработка...
Так кто же мешает взять быстрый процессор, имеющий встроенный выход на PCI и этим процессором ПРОГРАММНО принимать все эти UART'ы... Ну и конечно у него должны быть еще и "родные" уарты ? Если посмотрите как сделаны платы расширения, то там и найдете такую архитектуру. Ну и если скорости в уартах не сильно велики, то процессор еще и протокол успеет обработать...
Процессор будет стоить примерно как ПЛИС или чуть больше, но при этом нижние уровни протокола все-таки чего-то тоже стоят. Трудозатраты на освоение - намного меньше, если для Вас ПЛИС - новая тема...

Спасибо за ответ, тока, если можно, без издёвок, пожалуйста! smile.gif
Да, есть "протокол сверху", однако требуется совместимость со старым ISA-устройством, т.е. с имеющимся ПО, написанным под него, так что этот вариант не пойдёт. Да и ПЛИС для нас не новая тема, мы их активно применяем для сопряжения с ISA-шиной.

Цитата
EPM570 хватит на немного урезанный PCI. Ещё и место останется.

Я сделал предварительную сборку проекта под EPM570T - получилось 251 LE это 4 BAR и поддержка пространства ввода-вывода. Без подсчёта паритета. Вот цитата из ссылки, приведённой выше:
Цитата
Если приглядеться к схеме "microcart", то можно заметить, что карта не ведет подсчета паритета и не производит выдачи сигналов ошибок паритета. Дело в том, что многочисленные эксперименты с шиной PCI на ПЭВМ годов выпуска от 1997 до 2007 и ОС Windows, Linux, QNX показали бесполезность подсчета паритета и выдачи сигналов ошибок паритета. Ни одна из ПЭВМ ни как не реагирует на данные передаваемые по шине PCI с заведомой ошибкой паритета, т.е контроллеры (мосты) шины, установленные на материнских платах, не выставляют регламентированные спецификацией PCI сигналы PERR или SERR. В случае, когда PERR или SERR выставляет карта расширения, то же ни какой реакции не наблюдается.

Как Вы относитесь к этому утверждению? Используете ли Вы в своих схемах контроль паритета?
Цитата
Я делал в EPM1270 и примерно представляю сколько у меня сильно урезанный PCI занимал. В EPM570 влез бы, но действительно, сейчас я бы не связывался с EPM, нет в них смысла если есть EP3Cх. По цене примерно одинаково но ресурсов гораздо больше

Я сейчас задам, быть может, ламерский вопрос, но не судите строго. Насколько мне известно FPGA фирмы ALTERA в кое входит и EP3C(CYCLONE3) семейство имеет на борту энергозависимую SRAM память для хранения конфигурации, таким образом при включении питания её необходимо будет каждый раз конфигурировать, каким образом и в какой момент времени Вы организуете это дело? (если PCI-контроллер реализован в EP3C конечно)
sysel
Цитата(Pavel_ @ Sep 14 2009, 12:44) *
Я сейчас задам, быть может, ламерский вопрос, но не судите строго. Насколько мне известно FPGA фирмы ALTERA в кое входит и EP3C(CYCLONE3) семейство имеет на борту энергозависимую SRAM память для хранения конфигурации, таким образом при включении питания её необходимо будет каждый раз конфигурировать, каким образом и в какой момент времени Вы организуете это дело? (если PCI-контроллер реализован в EP3C конечно)

Если FPGAшка маленькая (вроде EP3C5), вполне можно обойтись конфигурированием в Active Serial mode, подключив конф. ПЗУ (epcs4), в которой храниться прошивка. Главное чтобы FPGA была бы полностью сконфигурирована раньше, чем сигнал Reset(на шине PCI) станет = 1 (примерно секунда с момента старта ПК).

Физически на плате рядом с FPGA будет размещена ПЗУшка в корпусе SOIC8 - вот и всё конфигурирование.
DmitryR
Цитата(Pavel_ @ Sep 14 2009, 12:44) *
таким образом при включении питания её необходимо будет каждый раз конфигурировать, каким образом и в какой момент времени Вы организуете это дело?
Это дело не надо организовывать, она сама конфигурируется из SPI флэшки после подачи питания. Прошивается же эта флэшка прямо из Квартуса.
Pavel_
Цитата
Это дело не надо организовывать, она сама конфигурируется из SPI флэшки после подачи питания.

Цитата
Главное чтобы FPGA была бы полностью сконфигурирована раньше, чем сигнал Reset(на шине PCI) станет = 1 (примерно секунда с момента старта ПК).

Вот именно это и смущает в этой схеме. Есть ли гарантия, что FPGA будет сконфигурирована? Прописаны ли эти времена в какой-нить официальной документации (конфигурирование FPGA, формирования сигнала RESET на шине PCI) У Вас лично есть подобные реализации?
Автокофигурирование из SPI флэшки - очень интересно...
sysel
Цитата(Pavel_ @ Sep 14 2009, 13:44) *
Вот именно это и смущает в этой схеме. Есть ли гарантия, что FPGA будет сконфигурирована? Прописаны ли эти времена в какой-нить официальной документации (конфигурирование FPGA, формирования сигнала RESET на шине PCI) У Вас лично есть подобные реализации?
Автокофигурирование из SPI флэшки - очень интересно...

Я с Cyclone III не работал пока, но у меня есть работающее устройство (моей разработки) для шины PCI на Cyclone II (EP2C5), где используется описанная конфигурационная схема. Время конфигурирования около 200 мс.
В альтеровском аппноте про конфигурирование циклона 2, есть формула, по которой можно рассчитать время загрузки. Думаю для циклона III такая формула тоже существует.

Вообще думаю, что вашу задачу решат EXAR-овские микросхемы. Это будет быстрее и менее рисковано чем городить на FPGA.

А вообще, серия MAXII от альтеры - это та же самая FPGA с конфигурационной памятью на борту.
Pavel_
Цитата
Я с Cyclone III не работал пока, но у меня есть работающее устройство (моей разработки) для шины PCI на Cyclone II (EP2C5), где используется описанная конфигурационная схема. Время конфигурирования около 200 мс.
В альтеровском аппноте про конфигурирование циклона 2, есть формула, по которой можно рассчитать время загрузки. Думаю для циклона III такая формула тоже существует.

Вообще думаю, что вашу задачу решат EXAR-овские микросхемы. Это будет быстрее и менее рисковано чем городить на FPGA.

Большое спасибо за инфу! Буду думать в этом направлении...
Что касается Exar-овских микросхем, да согласен, если только UARTы - это хорошее решение, однако у нас есть потребность нагрузить устройство некоторыми дополнительными функциями, помимо UARTов, да и ещё один аргумент - изучить протокол PCI на будущее
Так что там с паритетом, кто-нибудь ответит?
sysel
Цитата(Pavel_ @ Sep 14 2009, 14:15) *
Так что там с паритетом, кто-нибудь ответит?

У меня контроль и выдача паритета присутствует.

Весь вопрос в том, на сколько правильный PCI Вы хотите сделать: строго по спецификации (как коммерческие ядра) или лишь бы работало (а-ля PCI mini). Со вторым вариатном можно на проблемы нарваться.

Если хотите, чтоб Ваша плата работала везде и всюду - тогда по первому пути.
Если плата в составе какого-либо Вашего устройства (встраиваемая система), можно пойти по второму пути, предварительно хорошенько всё протестировав.

Есть ещё третий путь: заложить в констукцию мост PCI-локальная шина (что-нибудь из продукции PLX). Тогда в ПЛИС не надо заботиться о протоколе шины PCI. В этом случае можно взять маленькую ПЛИС (МАХII или что-то из серии MAX3000A) для реализации связки локальная шина<->UARTы и локальная шина<->GPIO.
Но по деньгам дороше выйдет.
Pavel_
Цитата
У меня контроль и выдача паритета присутствует.

А Вы случайно не проверяли, какова реакция у системы на ошибку паритета?
Цитата
Есть ещё третий путь: заложить в констукцию мост PCI-локальная шина

думали об этом, но действительно:
Цитата
Но по деньгам дороше выйдет

да и к тому же нам от PCI нужно-то всего-ничего - PnP, доступ к портам ввода-вывода, а для этого, как мне кажется, готовые решения будут избыточными и дорогими.
Труд инженера сейчас у нас стоит не много, а конечную продукцию хочется произвести как можно дешевле.
sysel
Цитата(Pavel_ @ Sep 15 2009, 18:49) *
А Вы случайно не проверяли, какова реакция у системы на ошибку паритета?

Нет, не проверял.
Моя плата выполена под PCI-104 и входит в состав встраиваемой системы. Т.о. я не парился по поводу обеспечения 5V tolerance и доработки ядра PCI, т.к. заведомо было известно, что моя плата не будет втыкаться в какое-либо неизвестное мне устройства.
Я взял ядро pci32tlite ядро с opencores.org, вставил его в свой проект и оно у меня завелось в железе с первой же попытки. Потом в процессе отладки всей системы к ядру ни разу нареканий не было.
Первоначально отладкой взаимодействия с устройством занимался под ДОСом из своей паскалевской программы.
Victor®
Цитата(Pavel_ @ Sep 15 2009, 17:49) *
А Вы случайно не проверяли, какова реакция у системы на ошибку паритета?

думали об этом, но действительно:
да и к тому же нам от PCI нужно-то всего-ничего - PnP, доступ к портам ввода-вывода, а для этого, как мне кажется, готовые решения будут избыточными и дорогими.
Труд инженера сейчас у нас стоит не много, а конечную продукцию хочется произвести как можно дешевле.

http://opencores.org/project,pci32tlite_oc

PCI32TLITE_OC_HOWTO. Document to evaluate the PCI32TLITE IP Core creating "maxii_uart" project:

- Project to create a UART 16550 PCI peripheral using IP Cores from www.opencores.com:
- PCI32TLITE_OC(Peio Azkarate)
- A_VHDL_16550_UART(Howard LeFrevre)
- GH_VHDL_LIBRARY(George Huber and Howard LeFrevre)
- Permits easy evaluation of the IP on HW.
- Using PCI32TLITE_OC UART with LINUX serial standard driver.

Вроде как раз то что Вам и надо
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.