Перейти к содержанию
    

Разработка аппаратного USB анализатора

khach, не могли бы поподробней пояснить про "...анализ джиттера, квазосциллограф (стробоскоп) для анализа глазковой диаграммы".

Ну вы же просили "полноценный" :-). А полноценный предполагает возможность отладки не до конца функционирующего устройства, возможность наблюдать "пограничные" состояния, когда вроде работает, но иногда сбоит. Это бывает вызвано перекосом фронтов, наличием выбросов, джиттером клока одного из устройств. На глазковой диаграмме это все видно. Конечно, всю аналоговую часть можно проверить обычным Лекроем с дифференциальным щупом, но зато какая тема на диплом :-). Ладно, урежим осетра. Хотите наблюдать протокол двух гарантированно работоспособных устройств.

Оригинальные приемопередатчики в этом случае почти бесполезны- они терминируют линию (внутренние резисторы в 45 ом), измення ее импеданс в случае параллельного подключения вплоть до неработоспособности. Может быть, каким то хитрым способом можно полностью выключить передающую часть, но надо очень хорошо читать даташит на предмет таких возможностей. Поэтому более разумным представляется применение схемы "подслушивающего" приемника на быстрых компараторах.

Второе. Разбираться в той куче переходов, что лезет по USB при двунаправленном обмене весьма сложно- надо понять, какая сторона в текущей момент передает, а какая принимает. Для этого применяется пара дифференциальных приемников, между которыми находится с полметра кабеля (свитого в катушку и спрятанного внутри прибора). По задержкам фронтов между приемниками надежно определяется направление передачи. И при приеме это учитывается, вплоть до того, что для приема информации с хоста и девайса имеются два разных клока со своими ФАПЧ.

А пару USB3300 имеет смысл использовать в качестве десериалайзеров для приема данных с хоста и девайса соответственно. Но их входы USB подключать не непосредственно к кабелю, а к устройству

определения направления передачи.

Дальше обычная цифровуха. Если бюджет позволяет, то советую приобрести девелопмент боард с достаточно мощной FPGA и памятью, и вторую - с процессором, или "все в одном", но это если умеете работать и с тем процессором, что сидит во "все в одном" и с тем FPGA- такая удача бывает редко. Это позволит сэкономить 2-3 месяца (умножать на коэффициент 3 для студента) на разводку и сборку платы. Наличие готовых примеров и SDK тоже значительно ускорит работу. Без всего этого - "действительно хочет смерти"- объем работ неподемный. И это не курсак, диплом должне быть. Или курсак, плавно перетекающий в диплом, а в качестве курсака- ну например заставить сие устройство работать или в качестве хоста, или в качестве девайса по выбору процессора. Или двунаправленным ретранслятором, используя два приемопередатчика в стандартном включении - один хост, другой-девайс, но протокол известен заранее, что либо простое, типа HID. Это даст умение программировать FPGA (писать свою USB корку, а не пользоваться готовой библиотекой, можно сделать лог "на лету" в процессор итд). Устройство с двумя приемопередатчиками может служить базой для полноценного снифера, если не встретится неожиданных граблей в нестандартных режимах использования приемопередатчиков.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если направление определять врезав последовательно в линию резистор в 1 Ом ну 2шт для симметрии, и снимать напряжение на резисторе компаратором. Проще чем задержки в метре кабеля мерять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, действительно, имелся ввиду анализатор протокола. Спасибо khach за подробную информацию. С загрузом в универе это даже до диплома не дотянуть кажись одному. Ваще туго. А резистор, как мне кажется, не создаст необходимую задержку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

USB от хоста-->[CY7C6800]==[Xilinx FPGA]==[CY7C6800]-->к периферийному USB устр-ву 
                               |
                               |
                   USB-->[CY7C68013]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А резистор, как мне кажется, не создаст необходимую задержку.

Правильно кажется, резистор не создаст задержки :)

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Правильно кажется, резистор не создаст задержки :)

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

 

Уу.у.у. :)

 

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

 

4 Cypress-а?! Это круто! В такой конфигурации надо как-то поумному следить за тем чтобы устройству отдавалось в точности то, что ушло от хоста, и наоборот (в том числе и ID). Если такая схема реально будет работать, тогда все (почти) скатывается к программированию. Чего-то как-то слишком "просто". :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

-->[CY7C6800]

Да, похоже можно успеть пропихать пакет через FPGA от одной CY7C6800 до другой с допустимой задержкой. У CY7C6800 есть приятная фича- две раздельные шины данных приема и передачи. Вот на этом похоже и сыграли- без разбора пакетов гоняют их туда- сюда. Интерсно, как сделан у Ellisys режим трансляции состояний шины в момент сброса, засыпания, выключения питания...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо всем за оказанную помощь и информацию :)

Надеюсь, что скоро появятся еще вопросы...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

По сути он состоит из 4-х микросхем:

USB от хоста-->[CY7C6800]==[Xilinx FPGA]==[CY7C6800]-->

 

У меня тоже подобная задача нарисовалась :) Правда несколько попроще - анализировать ничего не нужно, необходимо просто вклиниться в USB обмен (сделать обычную RX/TX приемопередачу).

Только у меня не диплом, так что придеться точно делать. :)

Вопрос к =AK= -

под "CY7C6800" подразумевались микросхема CY7C68000/CY7C68000А? Они одинаковые с двух сторон? Насколько крутая ПЛИС установлена между ними?

 

Это микросхема преобразователя USB в UTMI интерфейс (применяются для прикручивания USB к разным мобильным устройствам с параллельной шиной), все бы ничего, но цепляется она к хосту и, как я понял, выступает в роли мастера - от нее идет тактирование.

Т.е. прямо прикрутить их друг к другу похоже не выйдет - весь вопрос как реализована связь между ними на ПЛИС.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно приколоться и сделать PHY+Arria GX. Анализ протоколов - > Quartus->SignalTapII. Логику запуска на захват можно организовывать как захочется, объем отображаемой сигнатуры зависит от объема встроенной памяти + внешний чип DDR2 для хранения и т.д... Дешево, сердито и гибко ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...