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

 
 
> Скоростной девайс с USB интерфейсом - нужен совет, нужен совет опытных людей...
MSL
сообщение Apr 13 2007, 20:36
Сообщение #1


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

Группа: Участник
Сообщений: 75
Регистрация: 25-07-04
Из: Rostov-on-Don
Пользователь №: 382



Нужно сделать высокоскоростное USB устройство, которое будет общаться с PC. С выбором контроллера для юсб особой альтернативы, как я понял нет - Cypress. Проблема в другом - переданные в пакете команды и данные необходимо выводить по заданым алго на несколько GPIO пинов (8 шт) и читать с этих пинов с частотой до 20Mhz (а желательно и выше). Т.е. в связке с cypress нужен как можно более быстрый и как можно менее навороченный (не нужны CAN, Ethernet и пр.) МК, в котором можно по мере необходимости апдэйтить программу. такая вот засада... кто сталкивался с похожей задачей - подскажите плиз как лучше реализовать. спасибо!

Сообщение отредактировал MSL - Apr 13 2007, 20:38
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
MSL
сообщение Apr 16 2007, 12:18
Сообщение #2


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

Группа: Участник
Сообщений: 75
Регистрация: 25-07-04
Из: Rostov-on-Don
Пользователь №: 382



спасибо всем, кто откликнулся и посоветовал.. пока изучаю мануалы TI на TMS320VC5509A и TUSB6250 (TUSB6250 это мк с hi-speed USB и ядром как у cypress, но вроде побыстрее - 60мг и тактов на команду меньше). Поскольку устройство будет принимать и передавать данные со скоростью от сотен килобайт до нескольких мегабайт в секунду - full speed думаю будет достаточноЖ-) Основная нагрузка будет ложится на разбор команд из юсб пакета. Даже самая простая low-level команда - такая как выставить пины в соотв. с переданными байтами, с определенными задержками и чтением указанных пинов через заданные интервалы будет выполняться уже за десятки команд (а будут и команды сотоящие из low-level команд). 013a никак не потянет все это на 20mhz. Поэтому, пока склоняюсь к TMS320VC5509A, хоть там и новое для меня ядро. C удовольствием сделал бы на МК с ARM9, т.к. с arm все для меня понятно, но пока не нашел ненавороченного мк с арм9...
Go to the top of the page
 
+Quote Post
vmp
сообщение Apr 16 2007, 13:21
Сообщение #3


Местный
***

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



Цитата(MSL @ Apr 16 2007, 13:18) *
013a никак не потянет все это на 20mhz.


Сразу видно - документацию не читал. smile.gif
В Cypress FX2 данные обычно идут в обход процессора, сразу на FIFO или GPIF. Процессорное ядро там нужно только для начальной конфигурации и (иногда) для разбора высокоуровневых команд. Данные же там обрабатываются аппаратно без участия процессорного ядра.
Go to the top of the page
 
+Quote Post
MSL
сообщение Apr 16 2007, 15:05
Сообщение #4


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

Группа: Участник
Сообщений: 75
Регистрация: 25-07-04
Из: Rostov-on-Don
Пользователь №: 382



Цитата(vmp @ Apr 16 2007, 14:21) *
Сразу видно - документацию не читал. smile.gif
В Cypress FX2 данные обычно идут в обход процессора, сразу на FIFO или GPIF. Процессорное ядро там нужно только для начальной конфигурации и (иногда) для разбора высокоуровневых команд. Данные же там обрабатываются аппаратно без участия процессорного ядра.


да ну не могу ж я ЗНАТЬ ВСЕ о разных МК только прочитав манулы-)) ЗНАТЬ можно только после того как что-то на чем то сделал, наступив на все грабли...

постараюсь пояснить что я имел в виду... Например, я послал устройству команду 0x81 0xAA 0xBB, таких команд может быть несколько. Например, с помощью МК она должна по битам с 0го вывести байт 0хАА на пин0 а байт 0хВВ на пин1, прочитав при выводе состояние пин2, пин3, пин4 и отправив эти 3 байта сразу, потому что бит7 в байте команды подразумевает ответ немедленно и данные должны быть отправлены сразы не дожидаясь заполнения буфера.

так вот вопрос - подскажите тогда, как знающий человек, сколько байт и пакетов я должен послать к 013а, чтобы сайперс выполнил эту последовательность через GPIF и я получил данные и привел их к виду 3х байт?
Go to the top of the page
 
+Quote Post
vmp
сообщение Apr 16 2007, 15:50
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 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 могут грузиться с хоста.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 04:07
Рейтинг@Mail.ru


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