реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
tvv
сообщение Mar 25 2008, 12:55
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 8-10-04
Пользователь №: 824



Из FPGA передаю данные тугой струей на кипариса по 16 битной шине в 2 эндпоинта, из кипариса в bulk пакетами по 512 байт. Так вот проявляется неприятная "проблемка", чем больше в СЛОВЕ единичек например 0хFFFF тем меньше скорость передачи по usb. Подцепил анализатор и выяснилось что чем больше выше упомянутых единичек тем больше время от начала передачи данных до ACK. Может кто сталкивался? Помогите чем сможете, хотя бы направление в котором искать решение.
Go to the top of the page
 
+Quote Post
galjoen
сообщение Mar 25 2008, 13:06
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(tvv @ Mar 25 2008, 15:55) *
Так вот проявляется неприятная "проблемка", чем больше в СЛОВЕ единичек например 0хFFFF тем меньше скорость передачи по usb.

Про битстаффинг слышали? Или у вас замедление больше чем на 20%? В вопросе об этом нет.
Go to the top of the page
 
+Quote Post
tvv
сообщение Mar 25 2008, 13:12
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 8-10-04
Пользователь №: 824



Нет к сожалению пока не слышал. А можно поподробнее. Если данные 0х1010 то скорость приблизительно 385-390 Mbps если же посылаю 0xFFFF то 320-330, где то получается около 20%
Go to the top of the page
 
+Quote Post
galjoen
сообщение Mar 25 2008, 13:22
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(tvv @ Mar 25 2008, 16:12) *
Нет к сожалению пока не слышал.

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

Более 5 бит одного значения подряд не бывает. В этом случае передатчик вставляет бит противоположного значения. Приёмник его выкидавает, и данные от этого не изменяются. Если 6 бит (или больше) одного значения подряд - в USB ошибка Staff Error. В некоторых случаях генерится специально.
Go to the top of the page
 
+Quote Post
tvv
сообщение Mar 25 2008, 13:24
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 8-10-04
Пользователь №: 824



Все когда то начинали с песочницы. Спасибо за ответ.
Go to the top of the page
 
+Quote Post
tvv
сообщение Apr 8 2008, 08:57
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 8-10-04
Пользователь №: 824



Вопрос. Создаю я очередь буферов BeginDataXfer(buffer[i], size, event); Затем дожидаюсь события WaitForMultipleObjects(event), один буфер забираю FinishDataXfer, один соответсвенно ставлю в очередь. Так вот что получается данные я получаю все, но вот нет порядка в данных. Можно ли это вырешить или писать сортировщик? к сожалению из-за сложности порядкаданных и сортировщик получится очень нетривиальный чего бы не хотелось? Спасибо за ответ.
Go to the top of the page
 
+Quote Post
galjoen
сообщение Apr 8 2008, 14:41
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(tvv @ Apr 8 2008, 12:57) *
Так вот что получается данные я получаю все, но вот нет порядка в данных.

Не понял, у вас одна часть данных через одну bulk-EP передаётся, а другая часть через другую bulk-EP? И EP с разными адресами? Если так, то порядка в данных добиться невозможно. Но и смысла в 2х EP нет - скорость bulk передачи от этого не зависит.
Go to the top of the page
 
+Quote Post
Седой
сообщение Apr 10 2008, 06:41
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 21-02-05
Из: Урал
Пользователь №: 2 806



Цитата
Создаю я очередь буферов BeginDataXfer(buffer[i], size, event);....................
Так вот что получается данные я получаю все, но вот нет порядка в данных.

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

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

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

Если вы не успеваете принимать данные с помощью драйверов Cypress - делайте свой драйвер с организацией постоянного чтения данных с одной ЕP в буфер драйвера и чтением данных приложением из этого буфера.
Go to the top of the page
 
+Quote Post
loginser
сообщение Jun 18 2008, 11:30
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 19
Регистрация: 9-06-08
Пользователь №: 38 171



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

Сообщение отредактировал loginser - Jun 18 2008, 11:31
Go to the top of the page
 
+Quote Post
Konst_777
сообщение Jun 18 2008, 16:50
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 1-06-05
Пользователь №: 5 644



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

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

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th June 2025 - 08:35
Рейтинг@Mail.ru


Страница сгенерированна за 0.01515 секунд с 7
ELECTRONIX ©2004-2016