Перейти к содержанию
    

CY7C68013A bulk

Из FPGA передаю данные тугой струей на кипариса по 16 битной шине в 2 эндпоинта, из кипариса в bulk пакетами по 512 байт. Так вот проявляется неприятная "проблемка", чем больше в СЛОВЕ единичек например 0хFFFF тем меньше скорость передачи по usb. Подцепил анализатор и выяснилось что чем больше выше упомянутых единичек тем больше время от начала передачи данных до ACK. Может кто сталкивался? Помогите чем сможете, хотя бы направление в котором искать решение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так вот проявляется неприятная "проблемка", чем больше в СЛОВЕ единичек например 0хFFFF тем меньше скорость передачи по usb.

Про битстаффинг слышали? Или у вас замедление больше чем на 20%? В вопросе об этом нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет к сожалению пока не слышал. А можно поподробнее. Если данные 0х1010 то скорость приблизительно 385-390 Mbps если же посылаю 0xFFFF то 320-330, где то получается около 20%

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет к сожалению пока не слышал.

Тогда это вопрос для "песочницы".

А можно поподробнее.

Более 5 бит одного значения подряд не бывает. В этом случае передатчик вставляет бит противоположного значения. Приёмник его выкидавает, и данные от этого не изменяются. Если 6 бит (или больше) одного значения подряд - в USB ошибка Staff Error. В некоторых случаях генерится специально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вопрос. Создаю я очередь буферов BeginDataXfer(buffer, size, event); Затем дожидаюсь события WaitForMultipleObjects(event), один буфер забираю FinishDataXfer, один соответсвенно ставлю в очередь. Так вот что получается данные я получаю все, но вот нет порядка в данных. Можно ли это вырешить или писать сортировщик? к сожалению из-за сложности порядкаданных и сортировщик получится очень нетривиальный чего бы не хотелось? Спасибо за ответ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так вот что получается данные я получаю все, но вот нет порядка в данных.

Не понял, у вас одна часть данных через одну bulk-EP передаётся, а другая часть через другую bulk-EP? И EP с разными адресами? Если так, то порядка в данных добиться невозможно. Но и смысла в 2х EP нет - скорость bulk передачи от этого не зависит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Создаю я очередь буферов BeginDataXfer(buffer, size, event);....................

Так вот что получается данные я получаю все, но вот нет порядка в данных.

Насколько я понял, вы считаете основным ограничением по скорости в вашей задаче появление 1 ms межфреймовых интервалов между транзакциями по одной EP, поэтому и решили использовать две EP.

 

Задача синхронизации не тривиальная и требует четко продуманного алгоритма, причем он должен быть реализован как со стороны хоста, так и со стороны устройства.

 

Я согласен с galjoen, в этом нет никакого смысла, скорость действительно существенно не повысится, если вы у вас размер транзакции больше размера пакета по данной ЕP.

 

Если вы не успеваете принимать данные с помощью драйверов Cypress - делайте свой драйвер с организацией постоянного чтения данных с одной ЕP в буфер драйвера и чтением данных приложением из этого буфера.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не сказал бы что скорость не увеличится. Долго игрался с данной задачей и в итоге 2 эндпоинта получилось в 1.3-1.4 раза побыстрее одного. Скорости добился максимальной 49 Мегабайт в секунду. А на одном эндпоинте и 40 не получалось.

Изменено пользователем loginser

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не сказал бы что скорость не увеличится. Долго игрался с данной задачей и в итоге 2 эндпоинта получилось в 1.3-1.4 раза побыстрее одного. Скорости добился максимальной 49 Мегабайт в секунду. А на одном эндпоинте и 40 не получалось.

Да, скорость обмена замечательная. Как я понимаю, FX2LP работает в режиме Synchronous Slave FIFO. Пожалуйста, напишите подробнее: какую операционную систему и какой драйвер Вы используете, как Вы измеряли скорость обмена.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...