Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Разработка аппаратного USB анализатора
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам
unholy1986
Всем доброго дня суток!
Требуется совет знающих и опытных специалистов. Я являюсь студентом. На курсовой по Микропроцессорным Системам получил задание - Разработку аппаратного анализатор протокола USB. Функции проектируемого устройства (были перечислены преподавателем):
1) подключение параллельно линиям Data+ и Data- USB 2.0
2) режимы работы - High, Full, Low Speed
3) непрерывный анализ передаваемых пакетов от хоста к функции (устройству)
4) сохранение полученных пакетов в ОЗУ объемом до 512 MB
5) передача записанных данным по интерфейсу USB
Понимаю, что задание очень сложное, и с нашим уровнем знаний (говорю про студентов), неподъемно, ведь образование ВУЗов в нынешнее время оставляет желать лучшего.
Натыкался на информацию об анализаторах фирм LeCroy, Ellisys, Hitex (имеется у преподавателя на руках) - но никакой технической документации я не нашел, даже структурных схем. Все что было на сайтах производителя - брашуры, который смело называют datasheet - ами .
Мне очень сложно подступиться даже к структурной схеме из за низкого уровня знаний.
Жду советов и помощи. Заранее спасибо!
VDG
Цитата(unholy1986 @ Nov 8 2007, 13:43) *
На курсовой по Микропроцессорным Системам получил задание - Разработку аппаратного анализатор протокола USB. Функции проектируемого устройства (были перечислены преподавателем):

Не чего себе! smile.gif Ваш препод хочет озолотиться за счет студента. smile.gif
Настаивайте на смене задания, задача действительно тупиковая.
unholy1986
Даже с чего начать не предложите?

Опытных людей просьба материально оценить проект и дать оценку времени на данный проект (если проектом занимаются специалисты, а не студенты), если это возможно.
VDG
Цитата(unholy1986 @ Nov 8 2007, 15:51) *
Даже с чего начать не предложите?

Данный аппаратный логгер насколько помнится стоит в районе десяти т$. Кто в теме про такую золотую курицу будет молчать. А главное - это сложность, которая прямо соответствует цене аппарата. Здесь на форуме может парочка спецов и найдется, кто вообще в принципе может такой аппаратный логгер создать.... но студенту... wacko.gif ИМХО ваш препод вообще не понимает что такое USB и как оно устроено, поручая такое задание вам.
InvisibleFed
Утро доброе (в наших краях). VDG, существуют ведь не автономные (полупрограммные) анализаторы USB. Даже имеется один. Я знаком с unholy1986, он хочет его разобрать на днях, посмотреть что там. А перпод вкусре за USB, уж поверте. Тут или задача решаема, или задача повесить студента (она, кстати, тоже вполне решаема). Вопрос в другом. Проблема не только в цене или сложности реализации. Пока не ясно даже структурно что это за зверь должен быть. Полагаю, что раз обработка должна происходить "на лету", а скорость "полета" для High Speed не хилая, понадобится двухканальная память (замена двупортовой, которая довольна дорогая; пишем в один канал, считаем из другого, потом меняемся). Может кто-нибудь оценить производительность, требуемую МК (скажем, CY) на то чтобы все это дело посчитать? Кажется проще и правильнее смотреть в сторону ПЛИС. ? Даже если задача сложна, необходимо здраво оценить эту сложность, чтобы не идти к преподу с пустыми руками с просьбой сменить задание.
VDG
Вся сложность в п.3. Удавлив его, получите вполне нормальное задание - обычный виртуальный цифровой "захват", правда высокоскоростной.
Не требуется ведь разработать smile.gif. Студенту главное что на защите? - красивые графики на ватмане.
bzx
2 unholy1986
Данную тему можно развернуть и в сторону usb сниффера. Всем пунктам (1-5) он может отвечать. Я это к тому, что всю работу можно свести к программированию.
unholy1986
2VDG
Скажите пожалуйста, что значит "обычный виртуальный цифровой захват"?

2bzx
Данную работу выполняли наши одногруппники в предыдущем семестре - работали со SnoopyPro. Моя же задача - разработка аппаратного анализатора протокола USB.
Proton
Попробуйте посмотреть в сторону плат для промышленной автоматики с процессорами P4, CoreDUO. USB host там уже есть, память тоже имеется, останется приделать к ней приёмник на основе какого-нибудь драйвера или процессора. Имея Host и endpoint можно написать драйвера и программу под Win для этого мини-компьютера.
P.S. Настаивайте на смене задания. Эта задача не меньше чем на год работы серьёзной конторы. Аутсортинговые фирмы из регионов запросят за такое изделие не меньше 90k$.
-Al-
Цитата(unholy1986 @ Nov 8 2007, 12:43) *
Всем доброго дня суток!
Требуется совет знающих и опытных специалистов. Я являюсь студентом. На курсовой по Микропроцессорным Системам получил задание - Разработку аппаратного анализатор протокола USB. Функции проектируемого устройства (были перечислены преподавателем):
1) подключение параллельно линиям Data+ и Data- USB 2.0
2) режимы работы - High, Full, Low Speed
3) непрерывный анализ передаваемых пакетов от хоста к функции (устройству)
4) сохранение полученных пакетов в ОЗУ объемом до 512 MB
5) передача записанных данным по интерфейсу USB
Понимаю, что задание очень сложное, и с нашим уровнем знаний (говорю про студентов), неподъемно, ведь образование ВУЗов в нынешнее время оставляет желать лучшего.
Натыкался на информацию об анализаторах фирм LeCroy, Ellisys, Hitex (имеется у преподавателя на руках) - но никакой технической документации я не нашел, даже структурных схем. Все что было на сайтах производителя - брашуры, который смело называют datasheet - ами .
Мне очень сложно подступиться даже к структурной схеме из за низкого уровня знаний.
Жду советов и помощи. Заранее спасибо!

Препод хочет Вашей "смерти". Как уже было сказано - меняйте задание, это явно не курсовой проект...
khach
Делите тему на три-четыре части (для разных исполнителей). Один- два человека делают аппаратную часть - аппаратный интерфейс ЮСБ плюс необходимые навески для сниффига ) вч компараторы, анализ джиттера, квазосциллограф (стробоскоп) для анализа глазковой диаграммы. Все это подключено к мощному FPGA с большой буферной памятью, процом типа АРМ9 или быстрого USB datapump типа Cypress. Это две части не курсаки- дипломы. Еще один чел пишит начинку для для FPGA (курсак или диплом). Еще один- фирмварь для datapump, если анализ протокола оффлайновый в хост-компе (курсак) или если анализ на борту в АРМ - диплом. И плюс софт на компе- диплом (это я понял уже есть, тогда адаптация существующего под новое железо- курсак).
unholy1986
К дополнению скажу, что у преподавателя на руках имеются следующие микрахи, которые следует использоваться при реализации проекта:
1) ISP1505ABS
2) USB3300-EZK
-Al-
Цитата(unholy1986 @ Nov 11 2007, 05:14) *
К дополнению скажу, что у преподавателя на руках имеются следующие микрахи, которые следует использоваться при реализации проекта:
1) ISP1505ABS
2) USB3300-EZK

Это только трансиверы. khach описал, что придется делать, Вы уверены, что оно Вам надо???
InvisibleFed
Цитата
Делите тему на три-четыре части (для разных исполнителей). Один- два человека делают аппаратную часть - аппаратный интерфейс ЮСБ плюс необходимые навески для сниффига ) вч компараторы, анализ джиттера, квазосциллограф (стробоскоп) для анализа глазковой диаграммы. Все это подключено к мощному FPGA с большой буферной памятью, процом типа АРМ9 или быстрого USB datapump типа Cypress. Это две части не курсаки- дипломы. Еще один чел пишит начинку для для FPGA (курсак или диплом). Еще один- фирмварь для datapump, если анализ протокола оффлайновый в хост-компе (курсак) или если анализ на борту в АРМ - диплом. И плюс софт на компе- диплом (это я понял уже есть, тогда адаптация существующего под новое железо- курсак).


Да... Пипец. Я даже и не представлял... khach, не могли бы поподробней пояснить про "...анализ джиттера, квазосциллограф (стробоскоп) для анализа глазковой диаграммы". Вообще, насколько возможно не пропускать сигнал сквозь устройство, а "слушать" линию, чтобы устройство unholy1986 висело на линии? В данном случае не получиться просто взять, скажем тот же Cypress на ARM 9 со встроенным USB (двумя) и тупо перегонять весь поток из одного порта в другой с параллельным анализом. Нужна этакая полноценная система сбора данных трафика. Если возможно "повиснуть" на шине, то может просто взять приемо-передатчик (физически, который преобразует цифровой уровненвый синал в диферециальный и наоборот) и уже с него снимать и анализировать весь трафик. Ясно, что вначале будет стоять FPGA (МК вряд-ли успеет), которая будет, скажем, просто выделять пакеты в общем "мясе", а далее, мк уже разбирать их на куски. Прошу соображения по структуре устройства - unholy1986 мой товарищ, не плохо бы доказать преподу что тот,...ээээ плохо спит по ночам. smile.gif
slog
По моему речь просто про АНАЛИЗАТОР ПРОТОКОЛА речь. Не надо анализировать параметры физической линии. Т.е. достаточно приёмника, способного принимать дифференциальные USB сигналы, подключенного паралельно линии. Дальше аппаратный декодер на PLIS, на выходе байты передаваемые по линии. Можно еще аппаратно определять направление передачи.
khach
Цитата(InvisibleFed @ Nov 11 2007, 11:22) *
khach, не могли бы поподробней пояснить про "...анализ джиттера, квазосциллограф (стробоскоп) для анализа глазковой диаграммы".

Ну вы же просили "полноценный" :-). А полноценный предполагает возможность отладки не до конца функционирующего устройства, возможность наблюдать "пограничные" состояния, когда вроде работает, но иногда сбоит. Это бывает вызвано перекосом фронтов, наличием выбросов, джиттером клока одного из устройств. На глазковой диаграмме это все видно. Конечно, всю аналоговую часть можно проверить обычным Лекроем с дифференциальным щупом, но зато какая тема на диплом :-). Ладно, урежим осетра. Хотите наблюдать протокол двух гарантированно работоспособных устройств.
Оригинальные приемопередатчики в этом случае почти бесполезны- они терминируют линию (внутренние резисторы в 45 ом), измення ее импеданс в случае параллельного подключения вплоть до неработоспособности. Может быть, каким то хитрым способом можно полностью выключить передающую часть, но надо очень хорошо читать даташит на предмет таких возможностей. Поэтому более разумным представляется применение схемы "подслушивающего" приемника на быстрых компараторах.
Второе. Разбираться в той куче переходов, что лезет по USB при двунаправленном обмене весьма сложно- надо понять, какая сторона в текущей момент передает, а какая принимает. Для этого применяется пара дифференциальных приемников, между которыми находится с полметра кабеля (свитого в катушку и спрятанного внутри прибора). По задержкам фронтов между приемниками надежно определяется направление передачи. И при приеме это учитывается, вплоть до того, что для приема информации с хоста и девайса имеются два разных клока со своими ФАПЧ.
А пару USB3300 имеет смысл использовать в качестве десериалайзеров для приема данных с хоста и девайса соответственно. Но их входы USB подключать не непосредственно к кабелю, а к устройству
определения направления передачи.
Дальше обычная цифровуха. Если бюджет позволяет, то советую приобрести девелопмент боард с достаточно мощной FPGA и памятью, и вторую - с процессором, или "все в одном", но это если умеете работать и с тем процессором, что сидит во "все в одном" и с тем FPGA- такая удача бывает редко. Это позволит сэкономить 2-3 месяца (умножать на коэффициент 3 для студента) на разводку и сборку платы. Наличие готовых примеров и SDK тоже значительно ускорит работу. Без всего этого - "действительно хочет смерти"- объем работ неподемный. И это не курсак, диплом должне быть. Или курсак, плавно перетекающий в диплом, а в качестве курсака- ну например заставить сие устройство работать или в качестве хоста, или в качестве девайса по выбору процессора. Или двунаправленным ретранслятором, используя два приемопередатчика в стандартном включении - один хост, другой-девайс, но протокол известен заранее, что либо простое, типа HID. Это даст умение программировать FPGA (писать свою USB корку, а не пользоваться готовой библиотекой, можно сделать лог "на лету" в процессор итд). Устройство с двумя приемопередатчиками может служить базой для полноценного снифера, если не встретится неожиданных граблей в нестандартных режимах использования приемопередатчиков.
slog
А если направление определять врезав последовательно в линию резистор в 1 Ом ну 2шт для симметрии, и снимать напряжение на резисторе компаратором. Проще чем задержки в метре кабеля мерять.
InvisibleFed
Да, действительно, имелся ввиду анализатор протокола. Спасибо khach за подробную информацию. С загрузом в универе это даже до диплома не дотянуть кажись одному. Ваще туго. А резистор, как мне кажется, не создаст необходимую задержку.
=AK=
Описанию вашей задачи соответствует Ellisys. Я его когда-то разбирал из любопытства. По сути он состоит из 4-х микросхем:
Код
USB от хоста-->[CY7C6800]==[Xilinx FPGA]==[CY7C6800]-->к периферийному USB устр-ву
                               |
                               |
                   USB-->[CY7C68013]
slog
Цитата(InvisibleFed @ Nov 12 2007, 07:14) *
А резистор, как мне кажется, не создаст необходимую задержку.

Правильно кажется, резистор не создаст задержки smile.gif
Резистор создаст падение напряжения в несколько mV, по полярности которого простой компаратор определит направление передачи. Если линия с обоих концов согласована, то должно работать.
InvisibleFed
Цитата
Правильно кажется, резистор не создаст задержки smile.gif
Резистор создаст падение напряжения в несколько mV, по полярности которого простой компаратор определит направление передачи. Если линия с обоих концов согласована, то должно работать.


Уу.у.у. smile.gif

Цитата
Описанию вашей задачи соответствует Ellisys. Я его когда-то разбирал из любопытства. По сути он состоит из 4-х микросхем


4 Cypress-а?! Это круто! В такой конфигурации надо как-то поумному следить за тем чтобы устройству отдавалось в точности то, что ушло от хоста, и наоборот (в том числе и ID). Если такая схема реально будет работать, тогда все (почти) скатывается к программированию. Чего-то как-то слишком "просто". smile.gif
khach
Цитата(=AK= @ Nov 12 2007, 07:54) *
Описанию вашей задачи соответствует Ellisys. Я его когда-то разбирал из любопытства. По сути он состоит из 4-х микросхем:
-->[CY7C6800]

Да, похоже можно успеть пропихать пакет через FPGA от одной CY7C6800 до другой с допустимой задержкой. У CY7C6800 есть приятная фича- две раздельные шины данных приема и передачи. Вот на этом похоже и сыграли- без разбора пакетов гоняют их туда- сюда. Интерсно, как сделан у Ellisys режим трансляции состояний шины в момент сброса, засыпания, выключения питания...
unholy1986
Спасибо всем за оказанную помощь и информацию smile.gif
Надеюсь, что скоро появятся еще вопросы...
Serg_Sm
Цитата
Описанию вашей задачи соответствует Ellisys. Я его когда-то разбирал из любопытства.
По сути он состоит из 4-х микросхем:
USB от хоста-->[CY7C6800]==[Xilinx FPGA]==[CY7C6800]-->


У меня тоже подобная задача нарисовалась smile.gif Правда несколько попроще - анализировать ничего не нужно, необходимо просто вклиниться в USB обмен (сделать обычную RX/TX приемопередачу).
Только у меня не диплом, так что придеться точно делать. smile.gif
Вопрос к =AK= -
под "CY7C6800" подразумевались микросхема CY7C68000/CY7C68000А? Они одинаковые с двух сторон? Насколько крутая ПЛИС установлена между ними?

Это микросхема преобразователя USB в UTMI интерфейс (применяются для прикручивания USB к разным мобильным устройствам с параллельной шиной), все бы ничего, но цепляется она к хосту и, как я понял, выступает в роли мастера - от нее идет тактирование.
Т.е. прямо прикрутить их друг к другу похоже не выйдет - весь вопрос как реализована связь между ними на ПЛИС.
Stas
Можно приколоться и сделать PHY+Arria GX. Анализ протоколов - > Quartus->SignalTapII. Логику запуска на захват можно организовывать как захочется, объем отображаемой сигнатуры зависит от объема встроенной памяти + внешний чип DDR2 для хранения и т.д... Дешево, сердито и гибко wink.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.