реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Spartan2 и PCI, вопрос по VHDL
dandy_ekb
сообщение Apr 16 2007, 10:16
Сообщение #1





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



Ситуация следующая:

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

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

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

help.gif
Go to the top of the page
 
+Quote Post
Elresearch
сообщение Apr 16 2007, 10:59
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 29-12-04
Пользователь №: 1 730



для HDL имхо всё равно под Spartan иль под CPLD (конечно есть несинтезабельные конструкции, но раз у Вас всё собирается...) тут может быть только один совет "осцил в зубы и по пинам".
я так понимаю у Вас реализован слейв по IO?
Go to the top of the page
 
+Quote Post
BSV
сообщение Apr 16 2007, 11:20
Сообщение #3


Знающий
****

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



А моделировать пробовали или считаете это пустой тратой времени?


--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
Go to the top of the page
 
+Quote Post
dandy_ekb
сообщение Apr 16 2007, 12:15
Сообщение #4





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



Цитата(Elresearch @ Apr 16 2007, 13:59) *
я так понимаю у Вас реализован слейв по IO?

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

да конечно моделировал, только чтоб все было нормально разделил двунаправленную шину PCI на входную и выходную, чтоб видно было что записывается и что считывается.
Go to the top of the page
 
+Quote Post
BSV
сообщение Apr 16 2007, 12:36
Сообщение #5


Знающий
****

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



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

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

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

Надо, однако, сразу было заметить, что телепаты в бессрочном отпуске!


--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
Go to the top of the page
 
+Quote Post
Elresearch
сообщение Apr 16 2007, 12:58
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 214
Регистрация: 29-12-04
Пользователь №: 1 730



ну раз IO и
Цитата
а запись в устройство похоже не проходит.
то выводите на пин hit по записи в порт и смотрите осцилой
Go to the top of the page
 
+Quote Post
dandy_ekb
сообщение Apr 16 2007, 14:06
Сообщение #7





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



Цитата(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 устройств, где бы можно было уже конкретно увидеть что выполняется, а что нет, вручную позадовать режимы

Сообщение отредактировал dandy_ekb - Apr 16 2007, 14:07
Go to the top of the page
 
+Quote Post
BSV
сообщение Apr 16 2007, 14:30
Сообщение #8


Знающий
****

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



Я Вам настоятельно советую - напишите тестбенч нормальный (пока хотя бы только запись/чтение конфигурационного пространства) и наверняка все сразу станет ясно. Можно конечно, и осцилом результата добиться, но ИМХО - это путь более длинный - сначала добейтесь, чтобы правильно работала логическая, а затем и временная модель.


--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
Go to the top of the page
 
+Quote Post
dandy_ekb
сообщение Apr 16 2007, 14:42
Сообщение #9





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



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

в том то и дело тестбенч есть все работает, и в микросхеме XC95144XL все работает, а в XC2S100 работать не хочет почему-то sad.gif
Go to the top of the page
 
+Quote Post
BSV
сообщение Apr 16 2007, 15:09
Сообщение #10


Знающий
****

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



Так бывает, конечно, но очень редко. Скорее всего имеющаяся модель не соответствует реальности - что-то там не учтено. Попробуйте взглянуть на нее критически, задействуйте весь потенциал паранойи, который у Вас имеется. Модель должна быть реальной - все, что Вы писали про разделение входа и выхода на трехстабильных шинах должно быть исключено. При моделировании Master'а нужно еще и арбитра описывать и тупой Таргет.


--------------------
Дурак, занимающий высокий пост, подобен человеку на вершине горы - все ему кажется маленьким, а всем остальным кажется маленьким он сам. /Законы Мерфи/
Go to the top of the page
 
+Quote Post
Vitёk
сообщение Apr 16 2007, 22:08
Сообщение #11


Местный
***

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



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


--------------------
/* Всё хорошо в меру. */
Go to the top of the page
 
+Quote Post
kiss
сообщение Apr 17 2007, 09:27
Сообщение #12


Участник
*

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



Добавлю к предыдущим высказываниям еще немного по существу:

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

Если проект не оптимизирован под IOB, то вся времянка может сильно "поплыть", с непредсказуемым результатом для наблюдателя. По устраненении данного несоответствия, возможно придется искать что-либо еще.
Go to the top of the page
 
+Quote Post
IEC
сообщение Apr 17 2007, 09:57
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 263
Регистрация: 22-03-05
Из: г. Харьков, Украина
Пользователь №: 3 598



Здравствуйте!

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

Очень удобно для отладки плат PCI.
Можно читать и изменять конфигурационные регисты, и записывать и считывать данные с памяти и I/O
Go to the top of the page
 
+Quote Post
dandy_ekb
сообщение Apr 19 2007, 12:13
Сообщение #14





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



все разобрался с этим делом, оказалась всеголишь банальная монтажная ошибка, но сходу не заметная)

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

еще хочу узнать для ликбеза: при разведении проекта в кристалле выходные буферы сами формируются или их нужно задавать при назначении контактов?
Go to the top of the page
 
+Quote Post
Дмитрий Мазунин
сообщение Apr 19 2007, 14:09
Сообщение #15


Местный
***

Группа: Свой
Сообщений: 259
Регистрация: 19-09-05
Из: Екатеринбург
Пользователь №: 8 715



Буферы формируются сами, если не нужно что-то специальное, например, LVDS.
В UCF-файле можете указать параметры буфера (стандарт, силу драйвера, скорость нарастания и т.д.)
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th July 2025 - 18:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01513 секунд с 7
ELECTRONIX ©2004-2016