|
Вопрос по возможной скорости передачи через USB |
|
|
|
Oct 26 2010, 17:54
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 10-07-10
Из: Москва
Пользователь №: 58 386

|
Здравствуйте! Хочу поэкспереметировать со скоростной передачей через USB-устройство(пусть это будет Mass Storage Device). Решил, что возьму контроллер с модулем High-Speed USB. Только одну вещь не могу понять. Скорость передачи данных по USB максимум(пусть и теоретический) 480 Мбит/с, и действительно модуль тактируется от PLL 480 MHz. Однако сам процессор имеет тактовую частоту 60 МГц. Предположим, что в эксперименте МК выступает в роли моста - получает данные по USB и выдает их в последовательный порт. Получается, что узким местом становится последовательный порт контроллера и скорость будет только максимум 60 Мбит/с? Если это действительно так, то может стоит для таких целей брать ПЛИС? Будет ли с ней результат лучше?
|
|
|
|
|
Oct 26 2010, 18:50
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 10-07-10
Из: Москва
Пользователь №: 58 386

|
Цитата Зачем данные с USB в COM - порт (там 115200 бит, а не 60 МБит, кстати говоря) транслировать ? Задача не в COM-порт вывести, а из поля данных пакета USB перегнать данные побитово последовательно на один из GPIO контроллера. И выжать при этом скорость побольше.
|
|
|
|
|
Oct 27 2010, 07:04
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 10-07-10
Из: Москва
Пользователь №: 58 386

|
Цитата МК производительнее скорости последовательной шины на разрядность своей внутренней шины данных. Это-то понятно. Вопрос в том, может ли МК выдать на свои пины поток данных, сравнимый со скоростью потока данных через USB. Цитата Только ваша задумка с 480Мбит/с "тухлая" изначально. А я и написал, что эта скорость недостижима. Что вообще можно сказать про контроллер LPC3143? В нем, например, есть контроллер NAND памяти, который вроде как параллельный. Может его можно использовать?
|
|
|
|
|
Oct 27 2010, 07:11
|
Местный
  
Группа: Свой
Сообщений: 231
Регистрация: 7-12-06
Из: Киев
Пользователь №: 23 248

|
Цитата(Aldaris @ Oct 26 2010, 21:50)  Задача не в COM-порт вывести, а из поля данных пакета USB перегнать данные побитово последовательно на один из GPIO контроллера. И выжать при этом скорость побольше. Как правило в контроллерах где присутствует High-Speed USB должен быть еще и DMA. И передачей данных из USB в другую периферию должен заниматься именно он. А перегонять данные на GPIO не получится, та как низкоскоростная периферийная шина не даст. Тут или шина внешней памяти + ПЛИС или другая скоростная периферия передачи данных. Например SDIO
|
|
|
|
|
Oct 27 2010, 08:21
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 10-07-10
Из: Москва
Пользователь №: 58 386

|
Ну необязательно на GPIO. Просто нужно получить поток данных на выходе контроллера, пусть даже на параллельной шине. Спасибо SergeyDDD за способ с DMA и параллельной периферией. Думаю, он позволит повысить скорость. И все же...Интересно, будет ли реализация на ПЛИСе лучше, чем на контроллере?
|
|
|
|
|
Oct 27 2010, 08:34
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(Aldaris @ Oct 27 2010, 11:21)  Спасибо SergeyDDD за способ с DMA и параллельной периферией. Думаю, он позволит повысить скорость. И все же...Интересно, будет ли реализация на ПЛИСе лучше, чем на контроллере? Да, так должно получиться. Только это будет связка МК + ПЛИС. Пихать USB в ПЛИС, наверное, нет смысла. Кстати, а почему бы не взять МК с USB High Speed + Gigabit Ethernet, если несущественно, на какой именно интерфейс транслировать USB - трафик ?
|
|
|
|
|
Oct 27 2010, 08:46
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 10-07-10
Из: Москва
Пользователь №: 58 386

|
Цитата Только это будет связка МК + ПЛИС. Только ПЛИС вы имеете в виду поставить для сериализации данных с параллельного порта? Тогда это наверно лучшее решение, т.к. все равно данные на выходе буду на ПЛИСе обрабатывать.
|
|
|
|
|
Oct 27 2010, 08:51
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(Aldaris @ Oct 27 2010, 11:46)  Только ПЛИС вы имеете в виду поставить для сериализации данных с параллельного порта? Тогда это наверно лучшее решение, т.к. все равно данные на выходе буду на ПЛИСе обрабатывать. Например. Подключить ПЛИС к МК, например, на правах внешнего 32-разрядного статического ОЗУ (или другим подходящим способом), например, к тому же ARM9, и писать в ПЛИС данные, точно так же, как вы бы писали их в ОЗУ. Но я не представляю себе, чем вы будете перерабатывать такой интенсивный последовательный поток с выхода ПЛИС ?
|
|
|
|
|
Oct 27 2010, 09:13
|
Участник

Группа: Участник
Сообщений: 19
Регистрация: 10-07-10
Из: Москва
Пользователь №: 58 386

|
Цитата ...чем вы будете перерабатывать такой интенсивный последовательный поток с выхода ПЛИС ? На самом деле выход в итоге не будет именно последовательным. Планируется просто писать данные на скоростную флэш память.
|
|
|
|
|
Oct 27 2010, 09:24
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(Aldaris @ Oct 27 2010, 12:13)  На самом деле выход в итоге не будет именно последовательным. Планируется просто писать данные на скоростную флэш память. Тогда ПЛИС не нужна. Нужен только МК с USB - дивайсом и хостом, оба HS. К хосту подключаете обычную флешку. Дивайсом подключаетесь к источнику данных, принимаете данные, перерабатываете внутри МК, например, шифруете или делаете что-то еще, и сбрасываете на флэшку. Только рекомендую все это отладить на FS, там отладка сильно упрощается и захватывать поток на шине гораздо проще и дешевле. Полезным может оказаться даже обычный осциллограф. Ладно, я все равно вашей задачи не знаю, посему могу вам только подсказать возможные варианты ...
|
|
|
|
|
Oct 27 2010, 11:58
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(SergeyDDD @ Oct 27 2010, 13:11)  Как правило в контроллерах где присутствует High-Speed USB должен быть еще и DMA. И передачей данных из USB в другую периферию должен заниматься именно он. DMA имеет смысл, когда для него в МК имеется отдельная шина. Цитата(Aldaris @ Oct 27 2010, 15:13)  На самом деле выход в итоге не будет именно последовательным. Планируется просто писать данные на скоростную флэш память. Поймите, что USB это всего лишь интерфейс, способ связи. Причем не из самых простых. Есть и другие способы передачи информации. Следует рассмотреть задачу на другом уровне абстракий. Более высоком. И лишь потом спускаться на уровень интерфейса передачи данных.
|
|
|
|
|
Oct 27 2010, 12:30
|
Местный
  
Группа: Свой
Сообщений: 231
Регистрация: 7-12-06
Из: Киев
Пользователь №: 23 248

|
Цитата(rezident @ Oct 27 2010, 14:58)  DMA имеет смысл, когда для него в МК имеется отдельная шина. Что значит отдельная шина? Как правило DMA мастером висит на "Multi-Layer AHB" шине, так же как и процессорное ядро, только на своем уровне
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|