|
Spartan2 и PCI, вопрос по VHDL |
|
|
|
Apr 16 2007, 10:16
|
Группа: Новичок
Сообщений: 9
Регистрация: 16-04-07
Пользователь №: 27 075

|
Ситуация следующая: Есть проект на языке VHDL, его функция - обмен по шине PCI. Используется для программирования XC95144XL, все работает без вопросов. Сейчас разрабатываю новое устройство, только на базе XC2S100. Использую тот же проект VHDL в части обмена по шине PCI, но тут возникли проблемы, видно что что то считыватся из усройства, но не все, а запись в устройство похоже не проходит. Есть чтоли какие-то особенности в программировании Spartan2, сам алгоритм обмена описан вроде правильно и ведь работат в XC95144XL.
|
|
|
|
|
Apr 16 2007, 12:15
|
Группа: Новичок
Сообщений: 9
Регистрация: 16-04-07
Пользователь №: 27 075

|
Цитата(Elresearch @ Apr 16 2007, 13:59)  я так понимаю у Вас реализован слейв по IO? да так и есть Цитата(BSV @ Apr 16 2007, 14:20)  А моделировать пробовали или считаете это пустой тратой времени? да конечно моделировал, только чтоб все было нормально разделил двунаправленную шину PCI на входную и выходную, чтоб видно было что записывается и что считывается.
|
|
|
|
|
Apr 16 2007, 12:36
|

Знающий
   
Группа: Свой
Сообщений: 541
Регистрация: 11-04-05
Из: Москва
Пользователь №: 4 045

|
Цитата(dandy_ekb @ Apr 16 2007, 13:15)  только чтоб все было нормально разделил двунаправленную шину PCI на входную и выходную, чтоб видно было что записывается и что считывается. Это как?  И временное моделирование делали? И задержки с предустановками в соответствии со спецификацией задавали? Устройство в списке обнаруженных появляется? Чтение/запись конфигурационного пространства в железе и в модели работает? Какие еще команды PCI используются? Каков результат их выполнения в железе и в модели? Надо, однако, сразу было заметить, что телепаты в бессрочном отпуске!
--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
|
|
|
|
|
Apr 16 2007, 12:58
|
Местный
  
Группа: Свой
Сообщений: 214
Регистрация: 29-12-04
Пользователь №: 1 730

|
ну раз IO и Цитата а запись в устройство похоже не проходит. то выводите на пин hit по записи в порт и смотрите осцилой
|
|
|
|
|
Apr 16 2007, 14:06
|
Группа: Новичок
Сообщений: 9
Регистрация: 16-04-07
Пользователь №: 27 075

|
Цитата(BSV @ Apr 16 2007, 15:36)  Это как?  И временное моделирование делали? И задержки с предустановками в соответствии со спецификацией задавали? на входной шине данных выставлял нужные уровни сигналов, которые нужно записать в конфигурацию, а на выходной шине данных смотрел результат считанный из регистров конфигурации. Цитата(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 устройств, где бы можно было уже конкретно увидеть что выполняется, а что нет, вручную позадовать режимы
Сообщение отредактировал dandy_ekb - Apr 16 2007, 14:07
|
|
|
|
|
Apr 16 2007, 14:42
|
Группа: Новичок
Сообщений: 9
Регистрация: 16-04-07
Пользователь №: 27 075

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

Местный
  
Группа: Свой
Сообщений: 272
Регистрация: 17-01-05
Из: Ростов-на-Дону
Пользователь №: 2 018

|
Судя по симптомам, у вас не в порядке временнЫе параметры. Тактовая на шине PCI какая? Если 66 МГц, то добиться устойчивой работы на 2-м спартане проблематично. Я не знаю, как у вас реализована реакция на TRDY/IRDY, но в ядре от Xilinx от их состояния зависит, защелкивать ли в выходных триггерах новые данные или оставить старые, при этом для шины 33 МГц на принятие решения отводится 6 нс, а на 66 МГц соответсвенно 3 нс. (В даташите на ядро написано, что сопрячь Спартан-2 и 66 МГц непросто.) Совет: возьмите констрейн от готового ядра, посмотрите как там заданы временнЫе спецификации (у ядра от Xilinx их около десятка), и сделайте у себя похоже. И забудьте про 66 МГц (хотя бы на первое время).
--------------------
/* Всё хорошо в меру. */
|
|
|
|
|
Apr 17 2007, 09:27
|
Участник

Группа: Свой
Сообщений: 35
Регистрация: 2-07-06
Пользователь №: 18 516

|
Добавлю к предыдущим высказываниям еще немного по существу:
архитектуры CPLD и FPGA все таки достаточно сильно отличаются, и напрямую переносить VHDL код зачастую не удается. В данном случае, думаю, это связано с триггерами IOB, которые нужно обязательно использовать в FPGA для PCI дизайнов - у CPLD их нет, но у них проще ситуация с входной/выходной времянкой.
Если проект не оптимизирован под IOB, то вся времянка может сильно "поплыть", с непредсказуемым результатом для наблюдателя. По устраненении данного несоответствия, возможно придется искать что-либо еще.
|
|
|
|
|
Apr 19 2007, 12:13
|
Группа: Новичок
Сообщений: 9
Регистрация: 16-04-07
Пользователь №: 27 075

|
все разобрался с этим делом, оказалась всеголишь банальная монтажная ошибка, но сходу не заметная)
всем спасибо за советы, помогло)
еще хочу узнать для ликбеза: при разведении проекта в кристалле выходные буферы сами формируются или их нужно задавать при назначении контактов?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|