Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Готовые PCI ядра
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Vitёk
Проблема выбора, однако...
Имеются три готовых PCI интерфейса:
- свободно распространяемый OpenCores;
- LogiCORE, купленный у Xilinx;
- Альтеровские, которые лежат на здесь на ФТП...

Пока есть время, пытаюсь разобраться с первыми двумя. (Собственно, только начал...) smile.gif Первое впечатление - оба они мне не нравятся. Во-первых, в спецификациях на них написано, что будучи реализованы на Spartan-2 с поддержкой мастера тянут только 33 МГц, а разрабатываемое устройство может быть воткнуто в 66 МГц шину. Во вторых - со стороны пользователя неизвестные мне шины, что там, что там... На OpenCores - это WishBone. У Xilinx - вообще что-то непонятное, такое ощущение, что они к PCI сигналам цепляют с полсотни своих и отдают пользователю. (Это я утрирую, конечно, но первое вречатление было примерно таким.) Ну и в третих - по мелочам... smile.gif
Поэтому решил спросить у знатоков: кто какие корки использовал, и каковы ощущения от работы? На какие трудно обходимые ограничения, не видимые сразу, можно напороться?
Пару слов о разрабатываемом устройств: PCI интерфейс - на Spartan-2, далее стоит Virtex-2Pro. На интерфейсе стоит DDR память. Интерфейс должен:
- уметь быть мастером;
- сливать/заливать по ДМА данные в память/из памяти;
- точно так же переливать данные в/из второй ПЛИС;
- обеспечивать доступ к PCI со стороны второй ПЛИС.
В соответствии в последними двумя требованиями вылезает ещё вопрос: какой протокол (шину, интерфейс) взять за основу для организации связи между ПЛИС? (Только не PCI !!! Шутка... smile.gif biggrin.gif )
Кто что скажет? Буду рад всем откликнувшимся. smile.gif
Realking
используй от PLDA
Vitёk
Цитата
используй от PLDA
Можно подробнее?
gab
Я остановился на OpenCores. К тому же wishbone очень простая шина ala ISA.
Насчёт 66 мегагерц - я сейчас кручю его в этом направлении (но мееедленно, т. к. мне оно _пока_ не нужно).
ra4fox
Сейчас как раз делаю проект с PCI, использую корку от Альтеры, работает хорошо, удобная настройка и использование в своих проектах.
Другие не пробовал, но стоит дополнительно корка от PLDA, там есть удобные програмки с исходниками, рекомендую посмотреть, сильно облегчит разработку ПО. cool.gif
Vitёk
Спасибо всем, кто ответил! smile.gif
to gab: если позволите, пара вопросов... smile.gif
- что, на Ваш взгляд, _плохого_ имеется в WishBone (какие ограничения, или может быть, откровенные косяки)?
- какова вероятнось "дотянуть" его до 66 МГц?
gab
2 Vitёk:
Про WB: Плохого вроде пока не нашёл (может плохо искал? smile.gif). Шина хорошо документирована, расширяема и съужаема smile.gif при необходимости. Мои проекты с использованием IP блоков под неё работают. Единственное, что мне не понравилось - это проект WB Interconnection Matrix. Я обычно свой вариант использую.

Про PCI: вероятность велика. В рассылке OpenCores пробегала инфа о подобных проектах. Там всё упирается в оптимизацию под некоторый базис (например Xilinx). После окончания своего текущего проекта (примерно начало лета) займусь этим.

PS: (немного саморекламы smile.gif) Скоро на OpenCores выложу свой проект -- DDS Generator.
Vitёk
Спасибо! smile.gif Я почему спрашивал про недостатки: у нас в конторе почти все, кому я говорил про OpenCores PCI, начинали заводить песню типа ".. оно там всё сырое, ни фига не работает, тыры-пыры.." Когда я пытался у них выяснить, что конкретно там сырое и как оно не работает, то в ответ слышал, ".. что я лично не работал, но слышал, что Вася рассказывал Пете, что он от кого-то там слышал, что там проблемы..." (в переполненом автобусе, наверное, разговор был), и "..ты думаешь, зря Зайлинксы за своё СТОПУДОВО рабочее ядро просят 5 килобаксов?..". Меня это насторожило: OpenCores-овское ядро выставлено на всеобщее обозрение уже не один год, и у его авторов наверняка было время, что бы довести до ума.
Теперь же, когда человек, лично его использовавший, утвержает, что проблем нет - то и у меня сомнений нет. smile.gif
Ещё один плюс в пользу OpenCores PCI против Xilinx Coregen: а когда закончится зайлинковская лицензия (у нас почти закончилась - она выдаётся всего на год), и через пару лет выйдет очередная их ублюдочная САПР, идеологически не совместимая с этим б####им у####ым п####ым ISE - что тогда делать? ... Вот и я о том же...

> Скоро на OpenCores выложу свой проект -- DDS Generator.
Успехов. smile.gif
ASN
Vitёk
Xilinx PCI Core - это проверенный рабочий проект с максимальным быстродействие.
OpenCores - это общий проект, разработанный в неоптимизированном стиле.
Поэтому - если есть деньги и нет времени - Xilinx PCI Core.
Если нет лишних денег и есть время - OpenCores.
З.Ы. Я сейчас "ковыряю" OpenCores для собственного развития. Хотя в проектах некоторые открытые корки использовал smile.gif.
adafin
Зашел на opencores загрузить PCI ядро, попал на страницу регистрации, заполнил, далее - download и уж минут 5 как никакой реакции(((
Сайт медленный/загруженный или какие другие проблемы?
DimaV
У когонибудь есть PCI ядро LogiCORE Xilinx, если не трудно положите на FTP, хочу попробовать. Сам работал с ядром OpenCores,
на частоте 33 МГц, получил скорости на мастере (относительно компа) запись - 56 МБ/с, чтение - 84 МБ/с .
Vitёk
Цитата
получил скорости на мастере (относительно компа) запись - 56 МБ/с, чтение - 84 МБ/с .
Что-то скорость
в 1/3 и 2/3 от максимальной меня настораживает sad.gif. На мосту PLX-9060 скорости получались поболее. Правда, ненамного...
Если не трудно, парочка наводящих вопросов. Спрашиваю не из праздного любопытсва, ибо сам намереваюсь это (OpenCores) использовать.
- какая была тактовая со стороны пользователя (то есть Wishbone) ?
- Target'ом на материнке, так понимаю, была память?
- какие ядра ДМА использовались? Каковы размеры одного блока данных?

ЗЫ: насчет этого бл№:%?го LogiCORE смотрите в ЛС. smile.gif
DimaV
Тактовая частота со стороны WB была 66 МГц, тестил в LINUX, выделялась память 1 МБ , длина burst - 128 слов (512 КБ). Вообще действительно это ядро не оптимизированно под скорость, это WB-Core (много в принципе ненужного кода), я вот подумал если нужа скорость надо писать самому, для конкретной задачи, вроде это не сложно. Скорости можно получить больше если разогнать WB.
keyru
Цитата(Vitёk @ Feb 18 2005, 09:38)
Цитата
получил скорости на мастере (относительно компа) запись - 56 МБ/с, чтение - 84 МБ/с .
Что-то скорость
в 1/3 и 2/3 от максимальной меня настораживает sad.gif. На мосту PLX-9060 скорости получались поболее. Правда, ненамного...
Если не трудно, парочка наводящих вопросов. Спрашиваю не из праздного любопытсва, ибо сам намереваюсь это (OpenCores) использовать.
- какая была тактовая со стороны пользователя (то есть Wishbone) ?
- Target'ом на материнке, так понимаю, была память?
- какие ядра ДМА использовались? Каковы размеры одного блока данных?

ЗЫ: насчет этого бл№:%?го LogiCORE смотрите в ЛС. smile.gif
*


opencore корка при записи с local bus вставляет два wait state т.е. чтобы загрузить pci по полной частота на wishbone должна быть как минимум 33*3=100Мгц ))
з.ы. на read wait state'ов нет
Vitёk
2 DimaV, keyru - спасибо, туман начинает потихоньку рассеиваться. smile.gif
Эти лишние 2 wait state - связаны с особенностями Wishbone или необходимостью реклока с тактовой пользователя на тактовую PCI? Вроде в спецификации самой Вилки временные диаграмы без задержек...
DimaV
Я поначалу пытался исправить эту фичу, но залез в такие дебри что забил на это на все (тем более что я не люблю верилог, пишу на VHDL).
keyru
Цитата(Vitёk @ Feb 18 2005, 11:32)
2 DimaV, keyru - спасибо, туман начинает потихоньку рассеиваться. smile.gif
Эти лишние 2  wait state - связаны с особенностями Wishbone или необходимостью реклока с тактовой пользователя на тактовую PCI? Вроде в спецификации самой Вилки временные диаграмы  без задержек...
*

вилка точно ни причем,синхронизация думаю тоже(ведь читать можно нормально) просто в корке WB rev3 сделана враппером для более ранней версии в которой регистровый фидбэк не был ещё специфицирован и разработчикам пришлось модифицировать протокол для того чтобы получить берстовый доступ(добавлен сигнал CAB_I) плюс как то мутно,c потерей лишнего такта, сделана запись в FIFo. а если кратко- просто так написана корка))
Vitёk
Однако, какие забавные подробности выплывают. sad.gif
Цитата
как то мутно,c потерей лишнего такта, сделана запись в FIFo
Это надо было постараться. Зачем? Я понимаю на чтение, где задержки неизбежны... Но на запись!? Даже контроль переполнения если делать, всё равно можно обойтись без них... Может фифо на запись у них хватило терпения вылизать, а на чтение просто положили? Типа работает и фиг с ним.
Цитата
просто так написана корка
Сейчас скармливаю её в ActiveHDL, и буду пытаться симулить. Время пока есть, и рискнуть можно. У меня пока что впечатление, что вещь хорошая, только непричёсанная. Если разобраться и довести до ума - то всем будет хорошо. (ключевое слово в этой фразе - "если":)smile.gif)
Спасибо!

Где можно достать готовые тестбенчи для PCI?
DimaV
Я использовал тестбенч который прилагался к XILINX LogiCore. Дописал функции RD/WR-burst. ядро LogiCore так и не удалось протестить на практике, тестил только модель (жду почту).
Vitёk
Это которые в $Xilinx\coregen\ip\xilinx\gip1\com\xilinx\ip\pci32_v3_0\fileset\v3.0.116.zip ?
Оно всё, оказывается, под рукой лежит, а я и не знаю...
anatol1983
А у кого нибудь есть инф-я по Wishbone на русском?
Vitёk
К вопросу о тестбенчах. Сначала собрал вместе OpenCore'вский PCI-мост и Xilinx`овый тестбенч. Сразу насторожило то, что не выполняются команды чтения конфигурации, хотя все необходимые сигналы присутствуют. (Присутствуют на мой взгляд, ибо в тот момент моё понимание работы PCI было мягко говоря неполным). То же самое произошло, когда были собраны вместе Xilinx PCI core и его же тестбенч. Меня это озадачивает до сих пор... Ну да и фиг с ними. Благо что OpenCore вместе с исходниками своего моста предлагает и свой навороченный тестбенч, и это всё превосходно симулится.
А что касается вопроса, вынесенного в заголовок темы - то буду делать сам smile.gif. При ближайшем рассмотрении оказалось, что не так страшен чёрт, как его малюют. Правил, определяющих поведение устройств на шине очень мало, на пальцах можно пересчтитать. А спецификации раздуты до страшных размеров потому, что там всё размусолено, и каждый нюанс обсасывается в 50 разных местах, вперемешку с другими. (ИМХО если всё лишнее повыкидывать, то весь PCI уместится на 3 страницах.) Так что пока есть время - буду разбираться, и к моменту выхода устройства в свет большая часть прошивки будет готова. И, ессно, сразу буду закладываться на 66 МГц.
TriD
С PCI пока не разбирался совсем, но попробовать на практике уже успел smile.gif
Взял PCI-ную корку из LogiCore и засунул ее в эвалюшен боард от AVNET, а затем в комп (селерон там какой-то). Комп нормально загрузился, определил наличие нового PCI-ного девайса. С помощью WinDriver'a удалось что-то по-писать/по-читать в выделенную облать. Это все. Корка, на первый взгляд, работает, дальше ковыряться пока нет времени (просто проверил саму возможность использования этой коры в будущих проектах).
bve
Вопрос в тему: у Альтеры было немало ядер. Последние, насколько я понимаю,
оптимизированы под Quartus, скажите, пожалуйста, где можно добыть ядра, оптимизированные под Max+Plus, и, желательно, для серии 1K. На FTP пожалуйста не ссылайтесь, рылом еще не вышел.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.