|
|
  |
Новичковое: FX2 USB, Совсем "заклинило", помогите советом |
|
|
|
Apr 2 2008, 06:14
|

Частый гость
 
Группа: Свой
Сообщений: 109
Регистрация: 14-01-08
Из: Москва
Пользователь №: 34 069

|
Краткое описание ситуации: есть макетка с Xilinx и FX2 USB. Нужно вводить/выводить данные по USB для проекта, который делается под Xilinx. Обмен достаточно тривиальный: по одному FIFO принимается байт команды, по второму - пакет данных. ПО третьему возвращается статус, по четвертому - обработанный пакет данных. Сделал уже несколько вариантов ввода-вывода, ни один не работает. Команду - принимает. Данные тоже принимает. А вот с возвратом - глюки.  То нормально возвращает байт статуса, но при выдаче пакета данных первым идёт ff (Z-состояние?). Переписал полностью по даташиту на FX2 - стало даже хуже... Теперь данные просто не возвращает (программа на PC "висит" на чтении), а байт статуса иногда возвращается правильный, а иногда - FF. В симуляторе - всё работает нормально. В post-route simulation сначала глючило ("зависало" в одном из состояний , но после того, как снизил клок с 50МГц до 25 - стало работать так же, как и в behavioral. (клок на платке - 24 Мгц, пробовал и на 12 - ведёт себя так же  ). Явно я где-то что-то делаю не так. Буду очень признателен за дружеский подзатыльник в нужном направлении. P.S. Он ещё очень нужен потому, что уже поджимают сроки, с неработающим обменом данными показывать просто нечего, а из фазы "заклинивания" можно не выбраться очень долго и не видеть каких-нибудь совершенно очевидных вещей. 
FX2_bidir.v ( 8.91 килобайт )
Кол-во скачиваний: 350
|
|
|
|
|
Apr 2 2008, 09:41
|

Частый гость
 
Группа: Свой
Сообщений: 109
Регистрация: 14-01-08
Из: Москва
Пользователь №: 34 069

|
Цитата(dm.pogrebnoy @ Apr 2 2008, 12:08)  Уточните пожалуйста в какую сторону идет обмен данными. Из компа в Xilinx или наоборот. Вариантов на самом деле может быть много, сами промучались, в основном были проблемы с прошивкой самого контроллера USB. В ПЛИС проблем было меньше, потому что можно было выдать тривиальные тестовые сигналы, для проверки. Пишите подробнее, думаю разберемся. В обе... Задействованы все 4 FIFO. По первому, из PC в ПЛИС идет байт команды - с этим проблем не наблюдается. По второму, из PC в ПЛИС передаётся пакет данных, которые можно попросить ПЛИС считать (по одной из команд). С этим, вроде бы тоже проблем нет. Читает и записывает в память ПЛИС. Проблемы начинаются с выводом из ПЛИС. Если считать статус по третьему FIFO (опять-таки, выдав нужную команду по первому) - получается (хотя, сейчас, похоже, тут тоже свои глюки появились), то прочитать обратно пакет данных по четвертому (выдав нужную команду в ПЛИС) у меня так и не получилось. Самое лучшее, что было - это получался пакет, у которого первым байтом шёл FF, а затем все байты пакета. Сейчас даже этого нет.  Причём в симуляторе - всё работает, пакеты принимаются и передаются, без каких-либо проблем. К сожалению, перепрошивать USB контроллер у меня нет возможности, он, что-то вроде "чёрного ящика" на данном этапе.  Его нужно как-то удовлетворить...
|
|
|
|
|
Apr 2 2008, 18:12
|
Участник

Группа: Свой
Сообщений: 63
Регистрация: 1-03-05
Из: г.Ростов-на-Дону
Пользователь №: 2 988

|
Цитата(ReedCat @ Apr 2 2008, 10:14)  В симуляторе - всё работает нормально. В post-route simulation сначала глючило ("зависало" в одном из состояний , но после того, как снизил клок с 50МГц до 25 - стало работать так же, как и в behavioral. (клок на платке - 24 Мгц, пробовал и на 12 - ведёт себя так же  ). С логикой сильно не разбирался, но IFD, OFD вроде описаны. При использовании внутренней тактовой выхода IFCLK частота может быть 48 МГц или 30 МГц. 24 или 12 это тактовая ядра 8051. Тактовую на выходе IFCLK пробовали инвертировать? И как дела с констрейнами (судя по глюкам при 50 в пост-руте - никак)? Упаковка I/O Registers/Latches into IOBs должна быть both (Inputs and Outputs).
|
|
|
|
|
Apr 2 2008, 19:25
|

Знающий
   
Группа: Свой
Сообщений: 747
Регистрация: 11-04-07
Пользователь №: 26 933

|
Полностью согласен с gammanoid.
Но насколько я помню, без начальной кофигурации FX2 работать не желал. У вас флешка стоит прошитая или нет? Вижу что по умолчанию 48 мегагерц внутри крутятся, а наружу не выдаются, а у вас именно с контроллера такт приходит. Так что делаю два вывода, или это вообще не должно работать, так как у вас код для синхронного режима написан, или некоторые этапы конфигурации все-таки сделаны (я IFCONFIG имею ввиду по крайней мере). Нужно уточнить. Если тактотвая частота на конотроллер подается с ПЛИС, то намного лучше и фифо тактировать с ПЛИС, хотя не принципиально. Предложил бы в любом случае на данном этапе не заморачиваться с флагами, заведите как можно более простые сигналы управления (т.е. константы+пила на шину данных), проверить самое начало. Замечу, что в режиеме внутреннего тактирования никаких других тактов кроме такта с ноги IFCLK брать нельзя, разве что использовать асинхронный режим в этом случае.
--------------------
|
|
|
|
|
Apr 3 2008, 06:52
|

Частый гость
 
Группа: Свой
Сообщений: 109
Регистрация: 14-01-08
Из: Москва
Пользователь №: 34 069

|
Цитата(gammanoid @ Apr 2 2008, 22:12)  С логикой сильно не разбирался, но IFD, OFD вроде описаны. При использовании внутренней тактовой выхода IFCLK частота может быть 48 МГц или 30 МГц. 24 или 12 это тактовая ядра 8051. Тактовую на выходе IFCLK пробовали инвертировать? И как дела с констрейнами (судя по глюкам при 50 в пост-руте - никак)? Упаковка I/O Registers/Latches into IOBs должна быть both (Inputs and Outputs). Та программка, которая инициализирует FX2, предлагает мне в качестве вариантов "USB frequency" 12, 24 или 48МГц. Про возможную инверсию такта в даташите прочитал, но еще не пробовал. С констрейнами дела - никак. Единственный заданный констрейн - на клок. Упаковку - проверю, спасибо. Цитата(dinam @ Apr 3 2008, 05:45)  Что-то я не понял, вы пытаетесь наладить связь не правя прошивку FX2  ??? А откуда вы её вообще взяли? У меня большую часть времени заняло как раз правильно сконфигурировать slave FIFO. Да, именно так. Есть макетная плата, на которой есть как-то сконфигурированный FX2. Мне она нужна, чтобы продемонстрировать работоспособность проекта, а для этого нужно ввести данные и вывести результаты. Других опций, кроме как по USB через этот контроллер - нет. Точных данных о том, как он сконфигурирован - тоже нет. Приходится догадываться, опираясь, в частности на простейший пример. Точно ясно, что: - клок на ПЛИС идет с FX2 - режим синхронный - флаги FIFO точно НЕ в индексном режиме - ширина слова - 8 бит Вот вроде и всё, что удалось определить точно. Элементарный пример из комплекта макетки (приаттачено) - работает...
FX2_bidir.v ( 3.12 килобайт )
Кол-во скачиваний: 315
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|