tvv 0 25 марта, 2008 Опубликовано 25 марта, 2008 · Жалоба Из FPGA передаю данные тугой струей на кипариса по 16 битной шине в 2 эндпоинта, из кипариса в bulk пакетами по 512 байт. Так вот проявляется неприятная "проблемка", чем больше в СЛОВЕ единичек например 0хFFFF тем меньше скорость передачи по usb. Подцепил анализатор и выяснилось что чем больше выше упомянутых единичек тем больше время от начала передачи данных до ACK. Может кто сталкивался? Помогите чем сможете, хотя бы направление в котором искать решение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 25 марта, 2008 Опубликовано 25 марта, 2008 · Жалоба Так вот проявляется неприятная "проблемка", чем больше в СЛОВЕ единичек например 0хFFFF тем меньше скорость передачи по usb. Про битстаффинг слышали? Или у вас замедление больше чем на 20%? В вопросе об этом нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tvv 0 25 марта, 2008 Опубликовано 25 марта, 2008 · Жалоба Нет к сожалению пока не слышал. А можно поподробнее. Если данные 0х1010 то скорость приблизительно 385-390 Mbps если же посылаю 0xFFFF то 320-330, где то получается около 20% Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 25 марта, 2008 Опубликовано 25 марта, 2008 · Жалоба Нет к сожалению пока не слышал. Тогда это вопрос для "песочницы". А можно поподробнее. Более 5 бит одного значения подряд не бывает. В этом случае передатчик вставляет бит противоположного значения. Приёмник его выкидавает, и данные от этого не изменяются. Если 6 бит (или больше) одного значения подряд - в USB ошибка Staff Error. В некоторых случаях генерится специально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tvv 0 25 марта, 2008 Опубликовано 25 марта, 2008 · Жалоба Все когда то начинали с песочницы. Спасибо за ответ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tvv 0 8 апреля, 2008 Опубликовано 8 апреля, 2008 · Жалоба Вопрос. Создаю я очередь буферов BeginDataXfer(buffer, size, event); Затем дожидаюсь события WaitForMultipleObjects(event), один буфер забираю FinishDataXfer, один соответсвенно ставлю в очередь. Так вот что получается данные я получаю все, но вот нет порядка в данных. Можно ли это вырешить или писать сортировщик? к сожалению из-за сложности порядкаданных и сортировщик получится очень нетривиальный чего бы не хотелось? Спасибо за ответ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
galjoen 0 8 апреля, 2008 Опубликовано 8 апреля, 2008 · Жалоба Так вот что получается данные я получаю все, но вот нет порядка в данных. Не понял, у вас одна часть данных через одну bulk-EP передаётся, а другая часть через другую bulk-EP? И EP с разными адресами? Если так, то порядка в данных добиться невозможно. Но и смысла в 2х EP нет - скорость bulk передачи от этого не зависит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Седой 0 10 апреля, 2008 Опубликовано 10 апреля, 2008 · Жалоба Создаю я очередь буферов BeginDataXfer(buffer, size, event);.................... Так вот что получается данные я получаю все, но вот нет порядка в данных. Насколько я понял, вы считаете основным ограничением по скорости в вашей задаче появление 1 ms межфреймовых интервалов между транзакциями по одной EP, поэтому и решили использовать две EP. Задача синхронизации не тривиальная и требует четко продуманного алгоритма, причем он должен быть реализован как со стороны хоста, так и со стороны устройства. Я согласен с galjoen, в этом нет никакого смысла, скорость действительно существенно не повысится, если вы у вас размер транзакции больше размера пакета по данной ЕP. Если вы не успеваете принимать данные с помощью драйверов Cypress - делайте свой драйвер с организацией постоянного чтения данных с одной ЕP в буфер драйвера и чтением данных приложением из этого буфера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
loginser 0 18 июня, 2008 Опубликовано 18 июня, 2008 (изменено) · Жалоба Не сказал бы что скорость не увеличится. Долго игрался с данной задачей и в итоге 2 эндпоинта получилось в 1.3-1.4 раза побыстрее одного. Скорости добился максимальной 49 Мегабайт в секунду. А на одном эндпоинте и 40 не получалось. Изменено 18 июня, 2008 пользователем loginser Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Konst_777 0 18 июня, 2008 Опубликовано 18 июня, 2008 · Жалоба Не сказал бы что скорость не увеличится. Долго игрался с данной задачей и в итоге 2 эндпоинта получилось в 1.3-1.4 раза побыстрее одного. Скорости добился максимальной 49 Мегабайт в секунду. А на одном эндпоинте и 40 не получалось. Да, скорость обмена замечательная. Как я понимаю, FX2LP работает в режиме Synchronous Slave FIFO. Пожалуйста, напишите подробнее: какую операционную систему и какой драйвер Вы используете, как Вы измеряли скорость обмена. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться