Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Spartan2 и PCI
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
dandy_ekb
Ситуация следующая:

Есть проект на языке VHDL, его функция - обмен по шине PCI. Используется для программирования XC95144XL, все работает без вопросов.

Сейчас разрабатываю новое устройство, только на базе XC2S100. Использую тот же проект VHDL в части обмена по шине PCI, но тут возникли проблемы, видно что что то считыватся из усройства, но не все, а запись в устройство похоже не проходит.

Есть чтоли какие-то особенности в программировании Spartan2, сам алгоритм обмена описан вроде правильно и ведь работат в XC95144XL.

help.gif
Elresearch
для HDL имхо всё равно под Spartan иль под CPLD (конечно есть несинтезабельные конструкции, но раз у Вас всё собирается...) тут может быть только один совет "осцил в зубы и по пинам".
я так понимаю у Вас реализован слейв по IO?
BSV
А моделировать пробовали или считаете это пустой тратой времени?
dandy_ekb
Цитата(Elresearch @ Apr 16 2007, 13:59) *
я так понимаю у Вас реализован слейв по IO?

да так и есть
Цитата(BSV @ Apr 16 2007, 14:20) *
А моделировать пробовали или считаете это пустой тратой времени?

да конечно моделировал, только чтоб все было нормально разделил двунаправленную шину PCI на входную и выходную, чтоб видно было что записывается и что считывается.
BSV
Цитата(dandy_ekb @ Apr 16 2007, 13:15) *
только чтоб все было нормально разделил двунаправленную шину PCI на входную и выходную, чтоб видно было что записывается и что считывается.

Это как? blink.gif И временное моделирование делали? И задержки с предустановками в соответствии со спецификацией задавали?

Устройство в списке обнаруженных появляется? Чтение/запись конфигурационного пространства в железе и в модели работает? Какие еще команды PCI используются? Каков результат их выполнения в железе и в модели?

Надо, однако, сразу было заметить, что телепаты в бессрочном отпуске!
Elresearch
ну раз IO и
Цитата
а запись в устройство похоже не проходит.
то выводите на пин hit по записи в порт и смотрите осцилой
dandy_ekb
Цитата(BSV @ Apr 16 2007, 15:36) *
Это как? blink.gif И временное моделирование делали? И задержки с предустановками в соответствии со спецификацией задавали?

на входной шине данных выставлял нужные уровни сигналов, которые нужно записать в конфигурацию, а на выходной шине данных смотрел результат считанный из регистров конфигурации.
Цитата(BSV @ Apr 16 2007, 15:36) *
Устройство в списке обнаруженных появляется? Чтение/запись конфигурационного пространства в железе и в модели работает? Какие еще команды PCI используются? Каков результат их выполнения в железе и в модели?

Само устройство только выполняет команды чтение/запись конфигурации и чтение/запись данных.

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

при первом запуске:
Device ID 1000
Vendor ID A400

при последующих запусках:
Device ID 006E
Vendor ID 00C1

Device ID задан константой 10EE (xilinx)
Vendor ID задан константой A4C1

регистр Command считывается по нолям, хотя в младший бит должна записываться '1'.

в регистр адреса тоже похоже не проходит запись.

из остальных регистров конфигурации информация считывается правильно.

-----------------------------------------------------------------------------------------------------------------------
Еще хочу узнать есть ли какие-нибудь программки тестовые для PCI устройств, где бы можно было уже конкретно увидеть что выполняется, а что нет, вручную позадовать режимы
BSV
Я Вам настоятельно советую - напишите тестбенч нормальный (пока хотя бы только запись/чтение конфигурационного пространства) и наверняка все сразу станет ясно. Можно конечно, и осцилом результата добиться, но ИМХО - это путь более длинный - сначала добейтесь, чтобы правильно работала логическая, а затем и временная модель.
dandy_ekb
Цитата(BSV @ Apr 16 2007, 17:30) *
Я Вам настоятельно советую - напишите тестбенч нормальный (пока хотя бы только запись/чтение конфигурационного пространства) и наверняка все сразу станет ясно. Можно конечно, и осцилом результата добиться, но ИМХО - это путь более длинный - сначала добейтесь, чтобы правильно работала логическая, а затем и временная модель.

в том то и дело тестбенч есть все работает, и в микросхеме XC95144XL все работает, а в XC2S100 работать не хочет почему-то sad.gif
BSV
Так бывает, конечно, но очень редко. Скорее всего имеющаяся модель не соответствует реальности - что-то там не учтено. Попробуйте взглянуть на нее критически, задействуйте весь потенциал паранойи, который у Вас имеется. Модель должна быть реальной - все, что Вы писали про разделение входа и выхода на трехстабильных шинах должно быть исключено. При моделировании Master'а нужно еще и арбитра описывать и тупой Таргет.
Vitёk
Судя по симптомам, у вас не в порядке временнЫе параметры.
Тактовая на шине PCI какая? Если 66 МГц, то добиться устойчивой работы на 2-м спартане проблематично. Я не знаю, как у вас реализована реакция на TRDY/IRDY, но в ядре от Xilinx от их состояния зависит, защелкивать ли в выходных триггерах новые данные или оставить старые, при этом для шины 33 МГц на принятие решения отводится 6 нс, а на 66 МГц соответсвенно 3 нс. (В даташите на ядро написано, что сопрячь Спартан-2 и 66 МГц непросто.)
Совет: возьмите констрейн от готового ядра, посмотрите как там заданы временнЫе спецификации (у ядра от Xilinx их около десятка), и сделайте у себя похоже. И забудьте про 66 МГц (хотя бы на первое время).
kiss
Добавлю к предыдущим высказываниям еще немного по существу:

архитектуры CPLD и FPGA все таки достаточно сильно отличаются, и напрямую переносить VHDL код зачастую не удается. В данном случае, думаю, это связано с триггерами IOB, которые нужно обязательно использовать в FPGA для PCI дизайнов - у CPLD их нет, но у них проще ситуация с входной/выходной времянкой.

Если проект не оптимизирован под IOB, то вся времянка может сильно "поплыть", с непредсказуемым результатом для наблюдателя. По устраненении данного несоответствия, возможно придется искать что-либо еще.
IEC
Здравствуйте!

Есть программа WinDriver от JUNGO, сейчас кажется 9 версия.
Я пользовался 7 и 8 версиями, мне понравилось. Лекарство можно найти.

Очень удобно для отладки плат PCI.
Можно читать и изменять конфигурационные регисты, и записывать и считывать данные с памяти и I/O
dandy_ekb
все разобрался с этим делом, оказалась всеголишь банальная монтажная ошибка, но сходу не заметная)

всем спасибо за советы, помогло)

еще хочу узнать для ликбеза: при разведении проекта в кристалле выходные буферы сами формируются или их нужно задавать при назначении контактов?
Дмитрий Мазунин
Буферы формируются сами, если не нужно что-то специальное, например, LVDS.
В UCF-файле можете указать параметры буфера (стандарт, силу драйвера, скорость нарастания и т.д.)
grudinin
Здравствуйте знатоки логических кристаллов!
У меня возникла проблемка...Отладил проект pci контроллера(target, 33 Мгц) на 2 Спартане (200тыс) в корпусе TQ-144. Приобрел новую отладочную плату с такой же плис ( но корпус FG456), зашил в нее свой проект, вставил в pci слот и комп висит мертво...В чем проблема? Подскажите чем лечится, если нужно, могу выслать на мыло текст проекта на VHDL.
a_zh
А не пробовали проделать синтез, трассировку заново, но для корпуса FG456
grudinin
Цитата(a_zh @ May 4 2007, 16:15) *
А не пробовали проделать синтез, трассировку заново, но для корпуса FG456

Когда прошивал корпус FG456, то создал новый проект и проделал всё снова... Если бы было всё так просто sad.gif
Вообще, как от способа разводки платы, типа корпуса плис, зависит работа pci контроллера? И получается для каждого варианта разводки (перевыпуска) платы придется отлаживать проект заново? И от jtaga на плате не избавиться? sad.gif
BSV
Проверьте соответствие назначения контактов ПЛИС разводке платы, а также наличие соединений между контактами ПЛИС и PCI разъемом (так как корпус BGA тут jtag можно использовать).
Для поиска причины виса Вам могут помочь: аппаратный PCI-анализатор, продвинутая POST-карта, логический анализатор, осциллограф. Еще лучше попробовать выполнить временнОе моделирование проекта с учетом требований спецификации по задержкам и предустановкам.
Если на проект грамотно заданы ограничения и проект в них укладывается, то при адекватной разводке платы (выполненной в соответствии с требованиями спецификации) от типа корпуса ничего зависеть не должно.
Еще один момент - проверьте имеется ли питание ПЛИС (на некоторых старых платах на разъеме PCI отсутствует 3.3 В), хотя к зависанию это не должно вроде приводить.
grudinin
Проверял назначение контактов плис разводке платы(pinout report), соответствие полное, правда в ISE случается так, что последнюю ножку закрепить не удастся smile.gif
Подскажите, как грамотно осуществить временное моделирование и какую лучше программу использовать, желательно доступную бесплатно.
У меня две отладочные платы со 2 спартаном производства Memec и Digilent, одна с корпусом TQ144, другая FG456(DS-KIT-2s200). Так вот, в TQ144 все работает, а в FG456 пришлось с времянкой поиграться...
Насчет 3,3 вольт, они присутствуют, соответствующие светодиоды на плате горят smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.