Jump to content

    

Проблема с cy7c68013a

День добрый,

 

Пытаемся адаптировать оный микрух под передачу данных с PC в режиме bulk. Пошли простейшим путем - взяли плату Digilent USB2, вывели ifclk наружу, сделали прошивку для работы в режиме slave FIFO (внешний клок, 8-разрядная шина, автоматическая передача данных с USB на шину в обход фирмвари, работаем только с EP2). Для управления этим делом привесили ПЛИС (генерирует клоки, управляющие сигналы и забирает данные).

 

Собственно проблема: наблюдаем зависание cy7c68013a в процессе передачи. Количество передаваемых пакетов варьируется от пары-тройки до сотен тысяч, потом - зависание. Судя по флагам, буфер FIFO при этом пустой.

Передачу организуем мелкой тестовой самописной софтинкой, использующей CyAPI из DVK. Передача производится блоками по 512 байт, проблема наблюдается вне зависимости от задержки между передачей отдельных блоков.

 

Спасибо!

Share this post


Link to post
Share on other sites

У вас скорее всего проблемы в прошивке ПЛИС. Проверяйте соответствие временных задержек.

У меня подобное наблюдалось, когда я делал управление локальной шиной PLX9054 (PCI мост). Стояла не очень быстрая плисина и при небольшом изменение проекта PCI-плата работала то с зависаниями, то они вдруг исчезали (в симуляции все было отлично). Избавился от этого только после внесения в проект контроля задержек.

Share this post


Link to post
Share on other sites

Спасибо!

 

Да, проблема была в ПЛИС, теперь у нас новая беда :) Пока ПЛИС забирает данные - все нормально. Как только она приостанавливает передачу - FIFO в EZ-USB, видимо, заполняются, после чего плата перестает принимать данные от ПК. Причем не начинает их принимать даже тогда, когда ПЛИС пытается начать заново вытягивать данные. Не подскажете, в какую сторону копать?

Share this post


Link to post
Share on other sites

Копать в сторону отказа от Slave FIFO и написания GPIF интерфейса.

 

 

p.s. Проверьте корректность работы флагов пустого и полного FIFO.

Share this post


Link to post
Share on other sites

Флаги работают корректно. В чем преимущество GPIF (в данном случае)?

 

Спасибо!

Share this post


Link to post
Share on other sites
Спасибо!

 

Да, проблема была в ПЛИС, теперь у нас новая беда :) Пока ПЛИС забирает данные - все нормально. Как только она приостанавливает передачу - FIFO в EZ-USB, видимо, заполняются, после чего плата перестает принимать данные от ПК. Причем не начинает их принимать даже тогда, когда ПЛИС пытается начать заново вытягивать данные. Не подскажете, в какую сторону копать?

А как Вы управляете потоком данных ПЭВМ --> FIFO в EZ-USB? То есть, как организована передача в ПЭВМ готовности/неготовности FIFO в EZ-USB принимать данные от ПЭВМ?

Share this post


Link to post
Share on other sites
А как Вы управляете потоком данных ПЭВМ --> FIFO в EZ-USB? То есть, как организована передача в ПЭВМ готовности/неготовности FIFO в EZ-USB принимать данные от ПЭВМ?

 

Прошу прощения за глупый вопрос, но разве это не должно быть реализовано на уровне драйвера (используем стандартный CyUSB и CyAPI)?

Share this post


Link to post
Share on other sites
Прошу прощения за глупый вопрос, но разве это не должно быть реализовано на уровне драйвера (используем стандартный CyUSB и CyAPI)?

На уровне драйвера у Вас есть только одна возможность - задать таймаут для операции передачи данных настолько большим, чтобы неготовность ПЛИС принимать данные не приводила к возникновению таймаута EP2. Поскольку Вы так не делаете, то после возникновения таймаута Вам необходимо перезапустить EP2. Не уверен, что для этого достаточно перезапустить только драйвер (вызвать метод void CyUSBEndPoint::Abort(void) для EP2). Скорее всего придется перезапускать EP2 в FX2LP (проще всего перезапустить сам FX2LP вызвав bool CCyUSBDevice::Reset( void) ). Но, при перезапуске EP2 (драйвера и/или FX2LP) будут теряться данные.

 

Реальное управление потоком данных ПЭВМ --> ПЛИС предусматривает опрос готовности ПЛИС принять определенный объем данных, перед выдачей ПЛИС этого объема данных.

Share this post


Link to post
Share on other sites

Добрый день!

Kaamos, у меня к Вам вопрос по прошивке для 68013. Как Вы ее разрабатывали? С помощью отладочной платы сайпрес? У меня плата Nexys от того же производителя (digilent). Имею возможность грузить .iic проект в ром, но вот отладку по шагам осуществить похоже невозможно(

Edited by Artkop

Share this post


Link to post
Share on other sites

Добрый день,

 

Мы работали не с отладочной платой сайпресс, а адаптировали готовую; по поводу отладочных плат, к сожалению, сказать ничего не могу :(

Share this post


Link to post
Share on other sites
но вот отладку по шагам осуществить похоже невозможно(

Для отладки по шагам достаточно вывести наружу 0 или 1 UART и подключить к компьютеру. Далее в eeprom заливается программа монитора от сайпресса и из кейла можно грузить и отлаживать свою программу.

Share this post


Link to post
Share on other sites

У меня вот тоже есть вопрос почти в тему:

 

Если после включения питания cy7c68013a загрузилась из внешней I2C EEPROM, то после этого можно ли залить в неё прошивку через USB? Или для заливки прошивки через USB к cy7c68013a обязательно не должно быть подключено внешней памяти, откуда бы она могла загрузиться.

Share this post


Link to post
Share on other sites
Для отладки по шагам достаточно вывести наружу 0 или 1 UART и подключить к компьютеру. Далее в eeprom заливается программа монитора от сайпресса и из кейла можно грузить и отлаживать свою программу.

У FX2LP в 56-выводном корпусе нет последовательных портов.

 

 

У меня вот тоже есть вопрос почти в тему:

 

Если после включения питания cy7c68013a загрузилась из внешней I2C EEPROM, то после этого можно ли залить в неё прошивку через USB? ...

Можно.

Share this post


Link to post
Share on other sites
У FX2LP в 56-выводном корпусе нет последовательных портов.

 

Тогда облом. Простыми средствами отладку не запустить.

Share this post


Link to post
Share on other sites
Можно.

А что для этого делать то надо?

Драйвер её не видит, потому что она уже имеет другой VID-PID.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this