Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: CY7C68013A bulk
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > RS232/LPT/USB/PCMCIA/FireWire
tvv
Из FPGA передаю данные тугой струей на кипариса по 16 битной шине в 2 эндпоинта, из кипариса в bulk пакетами по 512 байт. Так вот проявляется неприятная "проблемка", чем больше в СЛОВЕ единичек например 0хFFFF тем меньше скорость передачи по usb. Подцепил анализатор и выяснилось что чем больше выше упомянутых единичек тем больше время от начала передачи данных до ACK. Может кто сталкивался? Помогите чем сможете, хотя бы направление в котором искать решение.
galjoen
Цитата(tvv @ Mar 25 2008, 15:55) *
Так вот проявляется неприятная "проблемка", чем больше в СЛОВЕ единичек например 0хFFFF тем меньше скорость передачи по usb.

Про битстаффинг слышали? Или у вас замедление больше чем на 20%? В вопросе об этом нет.
tvv
Нет к сожалению пока не слышал. А можно поподробнее. Если данные 0х1010 то скорость приблизительно 385-390 Mbps если же посылаю 0xFFFF то 320-330, где то получается около 20%
galjoen
Цитата(tvv @ Mar 25 2008, 16:12) *
Нет к сожалению пока не слышал.

Тогда это вопрос для "песочницы".
Цитата(tvv @ Mar 25 2008, 16:12) *
А можно поподробнее.

Более 5 бит одного значения подряд не бывает. В этом случае передатчик вставляет бит противоположного значения. Приёмник его выкидавает, и данные от этого не изменяются. Если 6 бит (или больше) одного значения подряд - в USB ошибка Staff Error. В некоторых случаях генерится специально.
tvv
Все когда то начинали с песочницы. Спасибо за ответ.
tvv
Вопрос. Создаю я очередь буферов BeginDataXfer(buffer[i], size, event); Затем дожидаюсь события WaitForMultipleObjects(event), один буфер забираю FinishDataXfer, один соответсвенно ставлю в очередь. Так вот что получается данные я получаю все, но вот нет порядка в данных. Можно ли это вырешить или писать сортировщик? к сожалению из-за сложности порядкаданных и сортировщик получится очень нетривиальный чего бы не хотелось? Спасибо за ответ.
galjoen
Цитата(tvv @ Apr 8 2008, 12:57) *
Так вот что получается данные я получаю все, но вот нет порядка в данных.

Не понял, у вас одна часть данных через одну bulk-EP передаётся, а другая часть через другую bulk-EP? И EP с разными адресами? Если так, то порядка в данных добиться невозможно. Но и смысла в 2х EP нет - скорость bulk передачи от этого не зависит.
Седой
Цитата
Создаю я очередь буферов BeginDataXfer(buffer[i], size, event);....................
Так вот что получается данные я получаю все, но вот нет порядка в данных.

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

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

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

Если вы не успеваете принимать данные с помощью драйверов Cypress - делайте свой драйвер с организацией постоянного чтения данных с одной ЕP в буфер драйвера и чтением данных приложением из этого буфера.
loginser
Не сказал бы что скорость не увеличится. Долго игрался с данной задачей и в итоге 2 эндпоинта получилось в 1.3-1.4 раза побыстрее одного. Скорости добился максимальной 49 Мегабайт в секунду. А на одном эндпоинте и 40 не получалось.
Konst_777
Цитата(loginser @ Jun 18 2008, 14:30) *
Не сказал бы что скорость не увеличится. Долго игрался с данной задачей и в итоге 2 эндпоинта получилось в 1.3-1.4 раза побыстрее одного. Скорости добился максимальной 49 Мегабайт в секунду. А на одном эндпоинте и 40 не получалось.

Да, скорость обмена замечательная. Как я понимаю, FX2LP работает в режиме Synchronous Slave FIFO. Пожалуйста, напишите подробнее: какую операционную систему и какой драйвер Вы используете, как Вы измеряли скорость обмена.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.