|
|
  |
Скоростной девайс с USB интерфейсом - нужен совет, нужен совет опытных людей... |
|
|
|
Apr 13 2007, 23:10
|
Гуру
     
Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965

|
20 МГц для микроконтроллера многовато, особенно если это не просто пересылка, а еще и какие-то разборки по алгоритмам. Я бы поставил DSP от TI серии 55хх, он уже вполне должен успеть. Я, конечно, понимаю, что Cypress проще в программировании, но есть еще Philips и PLX. С последним я не работал, но по описанию выглядит очень хорошо. Еще один вариант построения системы - пустить данные в обход процессора в FPGA и там шевелить пинами, тогда требования к процу резко ниже.
|
|
|
|
|
Apr 16 2007, 15:05
|
Частый гость
 
Группа: Участник
Сообщений: 75
Регистрация: 25-07-04
Из: Rostov-on-Don
Пользователь №: 382

|
Цитата(vmp @ Apr 16 2007, 14:21)  Сразу видно - документацию не читал.  В Cypress FX2 данные обычно идут в обход процессора, сразу на FIFO или GPIF. Процессорное ядро там нужно только для начальной конфигурации и (иногда) для разбора высокоуровневых команд. Данные же там обрабатываются аппаратно без участия процессорного ядра. да ну не могу ж я ЗНАТЬ ВСЕ о разных МК только прочитав манулы-)) ЗНАТЬ можно только после того как что-то на чем то сделал, наступив на все грабли... постараюсь пояснить что я имел в виду... Например, я послал устройству команду 0x81 0xAA 0xBB, таких команд может быть несколько. Например, с помощью МК она должна по битам с 0го вывести байт 0хАА на пин0 а байт 0хВВ на пин1, прочитав при выводе состояние пин2, пин3, пин4 и отправив эти 3 байта сразу, потому что бит7 в байте команды подразумевает ответ немедленно и данные должны быть отправлены сразы не дожидаясь заполнения буфера. так вот вопрос - подскажите тогда, как знающий человек, сколько байт и пакетов я должен послать к 013а, чтобы сайперс выполнил эту последовательность через GPIF и я получил данные и привел их к виду 3х байт?
|
|
|
|
|
Apr 16 2007, 15:50
|

Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 20-01-05
Из: Зеленоград
Пользователь №: 2 070

|
Цитата(MSL @ Apr 16 2007, 16:05)  постараюсь пояснить что я имел в виду... Например, я послал устройству команду 0x81 0xAA 0xBB, таких команд может быть несколько. Например, с помощью МК она должна по битам с 0го вывести байт 0хАА на пин0 а байт 0хВВ на пин1, прочитав при выводе состояние пин2, пин3, пин4 и отправив эти 3 байта сразу, потому что бит7 в байте команды подразумевает ответ немедленно и данные должны быть отправлены сразы не дожидаясь заполнения буфера.
так вот вопрос - подскажите тогда, как знающий человек, сколько байт и пакетов я должен послать к 013а, чтобы сайперс выполнил эту последовательность через GPIF и я получил данные и привел их к виду 3х байт? Как минимум 1 обмен типа OUT и 1 обмен типа IN. Только не с 3 байтами - GPIF вращать байты не умеет. Это лучше сделать на хосте и послать развернутые данные на нужный endpoint. Далее GPIF выдаст их на шину данных (8 или 16 бит) с нужной частотой и нужными стробами. C входными данными аналогично. Формат обмена придется изменить, возложив больше работы на центральный процессор. При его гигагерцах это оправданно. Если все-таки нужно высокое быстродействие - то тогда на шину FX2 можно повесить FPGA, какой-нибудь Циклон-2 за $15. Конфигурированием её может заниматься тот же FX2. Все ПО и зашивка FPGA могут грузиться с хоста.
|
|
|
|
|
Apr 17 2007, 08:58
|
Гуру
     
Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965

|
Учтите еще одно соображение. Даже для high-speed USB частота обмена командами довольно низкая, и если Вы хотите иметь 20 МГц в режиме команда - действие - ответ, то, скорее всего, у Вас ничего не получится. Высокая скорость на USB достигается только при передаче потока данных. В режиме команда - ответ можно рассчитывать максимум на то, что в одном микрофрейме (125 мкс) придет команда, следующий микрофрейм будет пропущен, т.к. с ответом не успеть к началу, и в следующем будет ответ. Следующая команда может быть получена еще через микрофрейм. Т.е. 4 микрофрейма на обмен. И это в лучшем случае. Некоторые контроллеры привязывают такой обмен к фрейму 1 мс даже для high speed USB. Посмотрите, насколько можно изменить Ваш протокол на потоковый или крупноблочный, чтобы много действий подряд было задано в одной команде.
|
|
|
|
|
Apr 17 2007, 09:05
|
Гуру
     
Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136

|
Цитата(MSL @ Apr 16 2007, 13:18)  Поскольку устройство будет принимать и передавать данные со скоростью от сотен килобайт до нескольких мегабайт в секунду - full speed думаю будет достаточноЖ-) Вы что-то путаете: Full Speed - это до 12 Мбит/с, т.е. до 1,5 Мбайт/с. Цитата(MSL @ Apr 16 2007, 16:05)  да ну не могу ж я ЗНАТЬ ВСЕ о разных МК только прочитав манулы-)) ЗНАТЬ можно только после того как что-то на чем то сделал, наступив на все грабли... Всё знать и не надо. Надо знать, сможет ли данный МК справиться с поставленной задачей. А это можно выяснить, прочитав руководства. Цитата(MSL @ Apr 16 2007, 16:05)  постараюсь пояснить что я имел в виду... Например, я послал устройству команду 0x81 0xAA 0xBB, таких команд может быть несколько. Например, с помощью МК она должна по битам с 0го вывести байт 0хАА на пин0 а байт 0хВВ на пин1, прочитав при выводе состояние пин2, пин3, пин4 и отправив эти 3 байта сразу, потому что бит7 в байте команды подразумевает ответ немедленно и данные должны быть отправлены сразы не дожидаясь заполнения буфера. Здесь могу только согласиться с vmp: либо меняйте протокол обмена, либо ставьте ПЛИС.
|
|
|
|
|
Apr 17 2007, 12:41
|
Частый гость
 
Группа: Участник
Сообщений: 75
Регистрация: 25-07-04
Из: Rostov-on-Don
Пользователь №: 382

|
Цитата(Alex11 @ Apr 17 2007, 09:58)  Учтите еще одно соображение. Даже для high-speed USB частота обмена командами довольно низкая, и если Вы хотите иметь 20 МГц в режиме команда - действие - ответ, то, скорее всего, у Вас ничего не получится. Высокая скорость на USB достигается только при передаче потока данных. В режиме команда - ответ можно рассчитывать максимум на то, что в одном микрофрейме (125 мкс) придет команда, следующий микрофрейм будет пропущен, т.к. с ответом не успеть к началу, и в следующем будет ответ. Следующая команда может быть получена еще через микрофрейм. Т.е. 4 микрофрейма на обмен. И это в лучшем случае. Некоторые контроллеры привязывают такой обмен к фрейму 1 мс даже для high speed USB. Посмотрите, насколько можно изменить Ваш протокол на потоковый или крупноблочный, чтобы много действий подряд было задано в одной команде. да, я понимаю, что по юсб в режиме команда - ответ я не получу откликов с такой частотой и что на стороне PC задержки уже в мс - есть некоторый опыт работы с юсб-) Протокол обмена и будет делаться потоковым с блоками данных в десятки килобайт (но точно здесь уже точно ничего не скажешь - потому как это будет уже зависеть от того, что за девайс будет сделан). Просто МК должен с макс. скоростью исполнять все полученные команды из буфера. Только в начале приема/передачи данных будет что-то типа хэндшэйка и определение параметров передачи данных, а дальше в потоке все. Одна из причин почему я упираю на то, что мк должен выполнять команды - он должен контролировать правильность выполнения/передачи данных и некоторых случаях прекращать разбирать команды и сообщать об ошибке, чтобы не привести оконечное устройство в ступор (ну или оно было просто отсоединено и пр.). Цитата(scifi @ Apr 17 2007, 10:05)  Вы что-то путаете: Full Speed - это до 12 Мбит/с, т.е. до 1,5 Мбайт/с. сорри, я знаю - просто написал желаемую на данный момент цифру, что в голове сидела... Цитата(scifi @ Apr 17 2007, 10:05)  Здесь могу только согласиться с vmp: либо меняйте протокол обмена, либо ставьте ПЛИС. еще раз могу сказать все только спасибо, что советы/поправки! На данных момент исходя из того, что было сказано я прихожу к выводу, что реализовывать нужное устройсто нужно при помощи hi-speed USB (коих нет так много и все-таки хочется иметь на будующее возможность передачи со скоростью больше full) контроллера плюс быстрой ПЛИС или МК, который будет только выполнять принятые команды... Как говорится, пока ясно, что еще ничего не ясно..(( Выбор ПЛИС, буфер обмена между ПЛИС и юсб контроллером, его размер и приемрный принцип их общения... буду думать...-)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|