|
|
  |
CY7C68013A проблема со скоростью передачи на ПК, не получается получить больше 2 МБайт/с |
|
|
|
Jul 28 2010, 10:10
|
Частый гость
 
Группа: Свой
Сообщений: 184
Регистрация: 21-03-06
Из: Нижний Новгород
Пользователь №: 15 435

|
Приветствую всех. Используется чип CY7C68013A. конечная точка на прием имеет конфигурацию IN2 bulk 512 x 4, Slave FIFO, шина 16. К чипу усб подключена плис которая в данный момент при флаге фулл=1(не полный) пишет данные. Измерения производятся через 1 сек, количество байт которые были записаны в чип при правильном флаге. На стороне ПК запущена программа со следующем текстом CODE ... // Прием данных do{ len = xfer; success = dlg->InEndpt->XferData(inData,len); } while (success && dlg->bLooping); ...
xfer = 512 Вобщем только вызов чтения. Скорость при этом получается 2 МБайт/с. На этом же ПК стоит флэшка так скрость которую показывает тотолкомандер состовляет 20-23 МБайт/с. В чем может быть проблема такой низкой скорости? На форуме пишут что со стандартными драйверами достигали скорость начиная с 12 МБайт/с, а здесь в 4 раза меньше. Есть еще просьба, если кому не жалко дайте программу которая работает с данным чипом на скорости 12 МБайт/с или больше чтоб проверить дело в софте для ПК или в железе что то нето. Спасибо.
|
|
|
|
|
Jul 28 2010, 14:32
|
Знающий
   
Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644

|
Цитата(Димитрий @ Jul 28 2010, 13:10)  ... Есть еще просьба, если кому не жалко дайте программу которая работает с данным чипом на скорости 12 МБайт/с или больше чтоб проверить дело в софте для ПК или в железе что то нето. Спасибо. А пример Archive.rar из темы прием данных из АЦП в ПК по USB не подойдет?
|
|
|
|
|
Aug 27 2010, 08:01
|

Местный
  
Группа: Свой
Сообщений: 330
Регистрация: 10-06-05
Из: Россия, Москва
Пользователь №: 5 894

|
Цитата(Димитрий @ Aug 27 2010, 11:52)  ясно, по все видимости промахнулся с буфером капитально. Что то мне подумалось что раз в чипе поставили 1,5 кБайт буфер то этого должно хватать для высокой скорости, на всякий решил использовать в плисе еще на 16к. вилы... С внутренним буфером можно и 30МБайт/сек получить, НО это будет не гарантированная скорость, а средняя. Без внешнего буфера про RealTime высокоскоростной поток можно забыть. Цитата(ukpyr @ Aug 26 2010, 16:47)  Какую скорость можно получить под Linux и libusb ? Намного ниже чем с драйвером от Cypress ? Если Линукс тормознее винды, то и скорость будет ниже  А по существу, если все написано грамотно то >30МБайт/сек получить вполне реально.
|
|
|
|
|
Aug 27 2010, 11:30
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 23-10-05
Из: Мск
Пользователь №: 10 006

|
Цитата(-Al- @ Aug 27 2010, 10:48)  У нас внешний буфер на 512кБ, хватает для потока в 18МБайт/сек. Это конечно при условии грамотно написанной программы приема (используем штатный CyAPI). Подскажите, а физически что из себя представляет буфер у вас? Какая-то специфичная м/с?
|
|
|
|
|
Aug 28 2010, 07:42
|
Местный
  
Группа: Свой
Сообщений: 221
Регистрация: 23-10-05
Из: Мск
Пользователь №: 10 006

|
Цитата(-Al- @ Aug 27 2010, 15:34)  Обычная SRAMка (K6R4016V1D) прикрученная к ПЛИС EPM1270. Можно и SDRAM поставить, если нужно больший буфер, чтоб наверняка  . Подскажите, пожалуйста, по логике работы всей схемы: Откуда-то извне приходят данные на ПЛИС, ПЛИС их записывает в SRAM. Параллельно же ПЛИС считывает данные ("самые старые") из SRAM и подает их на FX2. А как реализуется одновременность доступа к памяти со стороны ПЛИС и со стороны FX2? В ПЛИС реализованы какие-то дополнительные буферы данных? И ещё вопрос как реализуется гарантия доставки данных? FX2 имеет какие-то флаги, по которым можно судить доставлены ли данные на ПК?
|
|
|
|
|
Aug 28 2010, 08:42
|

Местный
  
Группа: Свой
Сообщений: 330
Регистрация: 10-06-05
Из: Россия, Москва
Пользователь №: 5 894

|
Цитата(:-) @ Aug 28 2010, 11:42)  Подскажите, пожалуйста, по логике работы всей схемы:
Откуда-то извне приходят данные на ПЛИС, ПЛИС их записывает в SRAM. Параллельно же ПЛИС считывает данные ("самые старые") из SRAM и подает их на FX2. Именно так, у меня тактовая 48МГц, в ПЛИС сделан FIFO на внешней SRAM, чтение/запись - 1 такт. Цитата А как реализуется одновременность доступа к памяти со стороны ПЛИС и со стороны FX2? В ПЛИС реализованы какие-то дополнительные буферы данных? На одно слово, т.к. процедура записи/чтения у меня 1 такт, если-бы было SDRAM, то там сложнее, уже без большого буфера не обойтись. Цитата И ещё вопрос как реализуется гарантия доставки данных? FX2 имеет какие-то флаги, по которым можно судить доставлены ли данные на ПК? Есть флаги наличия/отсутствия данных во внутреннем буфере FX2.
|
|
|
|
|
Sep 17 2010, 14:03
|
Группа: Участник
Сообщений: 12
Регистрация: 11-05-08
Пользователь №: 37 409

|
Цитата(-Al- @ Aug 28 2010, 11:42)  Именно так, у меня тактовая 48МГц, в ПЛИС сделан FIFO на внешней SRAM, чтение/запись - 1 такт.На одно слово, т.к. процедура записи/чтения у меня 1 такт, если-бы было SDRAM, то там сложнее, уже без большого буфера не обойтись.Есть флаги наличия/отсутствия данных во внутреннем буфере FX2. А как настроены флаги наличия данных? используется ли бит INFM1 в EPxFIFOCFG?
|
|
|
|
|
Sep 20 2010, 08:26
|

Местный
  
Группа: Свой
Сообщений: 330
Регистрация: 10-06-05
Из: Россия, Москва
Пользователь №: 5 894

|
Цитата(leva87 @ Sep 17 2010, 18:03)  А как настроены флаги наличия данных? используется ли бит INFM1 в EPxFIFOCFG? Флаги настроены по направлению EndPointов Цитата // Flag A - EP2(In) Empty FIFO; // Flag B - EP4(Out) Full FIFO; // Flag C - EP6(Out) Full FIFO; // Flag D - EP8(Out) Full FIFO; Т.е. для In я смотрю флаг Empty, и пока его нет - вычитываю данные. Для Out - записываю данные, пока флаг Full не появится. Бит INFM1 я не использую.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|