Лекция №1

Шина PCI.

Для подсоединения периферийных компонентов. Данная шина является синхронной, и фиксация всех сигналов осуществляется по фронту сигнала CLOCK. Активный уровень сигнала на шине - низкий. Номинальной частотой считается 30 МГц. Начиная с версии 2.1, выпускается 66 МГц. С устройствами ввода-вывода процессор может взаимодействовать, обращаясь командами ввода-вывода в порт, адресованными областями, назначенными каждому устройству при конфигурировании (все устройства определяют частоту).

В PCI используется следующая система адресов:

1 ступень - номер шины;

2 ступень - номер устройства;

3 ступень - номер функции внутри устройства.

Иерархия адресации относится только к обращению к регистрам конфигурационного пространства. Обращения к этим регистрам происходят на этапе распределения адресов (на этапе адресации) и распространения номеров прерываний. Далее устройства на шине отзываются на обращение по назначенным им адресам ввода-вывода. Для того, чтобы отличить обычное обращение от обращения к конфигурационным регистрам, существуют специальные выделенные линии IdSel.

Если на IdSel активный сигнал, это значит, что идет изменение конфигурации устройства.

Формат обращения:

шина-устройство-функция.

Устройством в PCI называется отдельная микросхема или карта расширения, подключенная к шине PCI и использующая для идентификации одну из линий IdSel, принадлежащих этой шине.

Лекция №2

Шина, расположенная после системной шины, имеет цифру 0. Через шину PCI транслируются сигналы более медленных шин.

НЕ нашли? Не то? Что вы ищете?

Иерархия: сначала номер шины. Каждое устройство в шине может представлять однофункциональное устройство или многофункциональное устройство. Максимальное число функций - 8.

Функциональный номер 0 должен в устройстве присутствовать всегда, а остальные функции и нумерации - опциональные.

Каждой функции присовокупляется конфигурационное пространство размером 256 байт. Учитывая технологию Plag-and-Plаy, а также то, что адресация в разных слотах материнской платы различна, процесс установления связи и общения многоступенчатый. Это необходимо для того, чтобы устройства получили адреса по месту их фактического нахождения слота.

В ходе работ устройства будут отзываться на адреса, назначенные им на этапе конфигурации. В циклах обращения к конфигурируемым регистрам становится активным IdSel.

В PCI одно устройство является инициатором (Master), а другое - целевым (Slave).

Любое устройство, желающее обменяться информацией (транзакция), сначала выставляет запрос (Rеq). Эта линия приходит к арбитру шины - выделенное устройство (оно разрешает или не разрешает проведение транзакции данного устройства). Этим сигналом - Gnt - арбитр шины разрешает или не разрешает устройству транзакцию. Если сигнал Gnt исчез в ходе транзакции, то это значит, что запрещена следующая транзакция, а текущую транзакцию необходимо завершить.

В случае, если разрешение от арбитра получено, то инициирующее устройство выдает активный сигнал в линию FRAME (активный - низкий уровень). Одновременно с этим, в следующем такте передается адрес того устройства, к которому идет обращение AD [0...31].

Для того, чтобы упростить протокол, выделили еще 4 шины, по которым в фазе адреса идет команда, что надо сделать адресованному устройству С/ВЕ [0...3].

Если такое устройство нашлось с таким адресом, то оно выставляет сигнал DevSel. Если оно не нашлось, то по истечению timeout'а, транзакция заканчивается. Если устройство ответило, то инициатор обмена выставляет активный (низкий) уровень сигнала IRDY. Этим сигналом мастер указывает на готовность к обмену данными. В случае, если готово к обмену Slave-устройство, оно выставляет активный низкий уровень TRDY. После этого сигнал FRAME может быть снят, если это одиночная транзакция. Если транзакция пакетная, то такой сигнал остается.

Если целевое устройство не поддерживает пакетную транзакцию, а мастер хочет провести ее, то целевое устройство должно потребовать прекращение пакетной транзакции во время первой фазы данных, введя сигнал STOP (активный низкий уровень) одновременно с сигналом о своей готовности. Получив этот сигнал, Master-устройство должно завершить данную транзакцию и, если требуется, начать новую транзакцию с новым значением адреса.

После последней фазы данных ведущее устройство должно снять сигнал IRDY, и тогда оба сигнала (и TRDY, и FRAME) окажутся в пассиве. Это будет признаком окончания транзакции.

Подобный протокол квантирования обеспечивает достаточную надежность.

Дополнительно линии AD и C/BE защищены битом паритета.

В случае, если целевое устройство обнаружит ошибку паритета, целевое устройство выдает в линию PERR активный сигнал.

Завершение транзакции может быть выбрано по инициативе любого участника обмена.

Лекция № 3

Диаграмма:

Рис. 1

В PCI нет сигнала, который говорит, что на шине имеется адрес (это отличие!).

Номинальная разрядность - 32 бита.

Каждая транзакция трактуется как пакетная. По окончании транзакции ведущее устройство снимает с себя сигнал FRAME. При этом снятом сигнале может передаваться еще одна порция данных (считается действительной). В ответ на это, по истечению фазы данных, снимаются все сигналы.

Жесткие timeout'ы:

- интервал между DevSel и IRDY не может превышать 8 тактов;

- циклы ожидания не могут превышать 16 тактов;

- 10 мкс отводится на всю транзакцию.

Максимальная пропускная способность - 132 Мбайт/сек при 30 ГГц (если передается каждый такт).

Варианты завершения транзакции:

1 вариант - нормальное завершение;

2 вариант - по таймеру;

3 вариант - если не обнаружен сигнал DevSel;

4 вариант - по инициативе Slave-устройства. Для этого в шине имеется сигнал STOP.

1 комбинация: STOP возникает при пассивном состоянии TRDY до первой фазы данных. Такая ситуация возможна, когда целевое устройство чем-то занято и не успевает принять/передать запрошенные данные за 16 тактов. В этом случае устанавливается сигнал STOP, являющийся указателем мастеру повторить транзакцию. Режим Retry.

2 комбинация: Disconnect. Сигнал STOP вводится во время и сразу после первой фазы данных. Сигнал STOP возникает при активном уровне сигнала TRDY, то данные передаются; транзакция на этом завершается. Это нормальная ситуация. Если же сигнал вводится при пассивном уровне сигнала TRDY, то транзакция завершается без передачи данных.

3 комбинация: Отказ (Abort). Сигнал STOP образуется одновременно с DevSel - это является указанием на ошибку.

Команды шины, адресация памяти и устройств ввода/вывода.

В каждой команде шины указывается адрес данных. Информационные байты в линии С/ВЕ могут меняться произвольно.

В циклах адресации памяти адрес передается в линиях AD [31...2], младшие биты AD [1:0] задают порядок адресации пакетов.

01 - линейное инкрементирование;

10 - выравнивание по длине строки КЭШ(а).

00 и 11 не используются.

КЭШ - 16 байт.

При адресации устройств ввода/вывода адреса передаются в AD [31...2], а младшие линии должны соответствовать байтам, которые будут размещены С/ВЕ.

IdSel AD 31...11

IdFunc 10...8

IdCf 7...2

1...0

Команда подтверждения прерываний используется для широковещательных сообщений:

- команда чтения/записи команды;

- команда чтения/записи конфигурации;

- команда чтения/записи из КЭШ(а);

- множественное чтение памяти.

Лекция № 4

В PCI имеются 4 прерывания: INT A; INT B; INT C; INT D.

Активный уровень (0) и устройства должны быть готовы разделить прерывания с другими.

Одно из решений (схемотехническое) - открытый коллектор.

Рис. 2

Увидев на этой линии 0, контроллер прерывания начинает раздавать запросы устройствам - не они ли являются источником прерывания?! Адресованное контроллером устройство должно ответить, сняв активный 0. Но, до тех пор, пока обращения не было, оно должно поддерживать неактивный уровень и ждать своей очереди.

Интерфейс I²C (IIC) (Phillips).

Интерфейсы бывают внутренние и межприборные. Очень редко сигналы таких интерфейсов пропускают через разъем.

I²C - внутриприборный интерфейс.

Рис. 3

Минусы:

- 3 контакта;

- должно быть только одно устройство, генерирующее сигнал CLOCK.

Ее отличие: шина должна работать в мультимастерном режиме (мастером становится то устройство, которое в силах им стать).

На шине скоростного обмена - до 100 кГц. Fast I²C - 400 кГц; High Speed - более 1 Мбит.

Идея мультиплексорного режима предусматривает более сложную транзакцию. Перед тем, как "говорить" что-либо, мастер должен пройти процедуру START.

У I²C двунаправленный обмен.

Рис. 4

Данные считаются действительными по фронту сигнала CLK. Любому обмену присущи 2 состояния: START и STOP обмена. Это исполняет один мастер. У любой транзакции может быть новый мастер. Данные действительны, когда на линии CLK 1.

Если устройству удалось выставить сигнал и выдержать правильное время между сигналами, то шина была свободна или конкуренты отступили. И эта ситуация уникальна.

Рис. 5

Лекция № 5

Мастером может стать любое устройство. В середине транзакции может происходить повторный старт.

Рис. 6

На шине может быть много устройств, каждому из которых может быть предназначен набор регистров и ячеек памяти. Линия SDA двунаправленная. На ней служебные команды исполняет мастер. В фазе чтения все сигналы на этой линии должны использовать Slave-устройства. В случае записи оба устройства должны каким-то образом узнать, какой цикл происходит (чтения или записи).

Задачи перед разработчиками: адресация устройства, ячейка устройства, указание вида цикла.

Рис. 7

Предлагается, 1 байт после START несет адрес и признак направления передачи данных.

Рис. 8

Чтение заканчивается мастером. Последнее чтение также заканчивается STOP'ом.

Случай записи:

Рис. 9

Мастер владеет обеими шинами и может завершить операцию в любой момент. Бывает, что быстродействие мастера отличается от Slave'а.

Новый CLK появляется при поднятии линии. Мастер должен ждать, пока не опустится линия SDA.

Лекция №6

В случае чтения, если Ack не появился, это значит, что мастер хочет завершить транзакцию.

Изначально обмен был 7-битовый.

Рис. 10

Варианты подключения нескольких одинаковых устройств:

Рис. 11

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

Рис. 12

Работа устройств в режиме ведущего.

MSSP - модуль синхронизации сериал-порта.

Ведущий управляет линией SCL и формирует сигналы START, STOP и повторный START. Обмен завершается после формирования бита STOP или "повторный START". Передатчик ведущего устройства выдает адрес Slave'а и бит записи/чтения. После этого появляется сигнал Ack. Биты START и STOP выдаются для указания начала и конца транзакции. Для формирования необходимой частоты используется генератор (семибитный).

SSPSTAT
SSPCON

Чтобы начать и закончить транзакцию, нужно установить биты в регистре SSPCON, SEN, RSEN, PEN.

Для того, чтобы был старт, SEN устанавливается в 1.

Если в линиях SCL и SDL 1, начинается обмен. Если где-нибудь не 1, то возникает флаг прерывания, который означает, что имеет место ошибка. Происходит "вылет" из процедуры.

Рис. 13

В линии SCL устанавливается низкий уровень сигнала.

SEN=0;

RSEN=0;
SSPPIF=1;

BCLIF


Лекция № 7

При установке бита RSEN линия SCL перейдет в состояние, соответствующее логическому 0. В этот момент во встроенный генератор загружается новое значение, и при единичном состоянии линии SDA начинается отсчет времени.

Рис. 14

Если по окончанию timeout'а перечисленные условия сохраняются, то это хорошо. Генератор перегружается новым значением timeout'а.

Отличие старта от повторного старта - наличие фазы SCL=0; SDA=1.

Успешное окончание каждой фазы происходит с прерыванием.

Рис. 15

SDA переходит в низкий уровень на протяжении действия SCL.

Альтернативной шиной I²C является SPI. Все логические состояния 0 и 1 в интерфейсе SPI формируются с помощью активных сигналов. Следовательно, нет никакого подтягивающего резистора.

Рис. 16

"+" более высокая скорость (5Мбит).

"-" дополнительный контакт, полное отсутствие программной стандартизации, тактовая частота мастера.

Выход:

1 вариант - сигналом CS;

2 вариант - адресация устройств производится методами как в I²C.

Рис. 17

Рис. 18

При подключении устройства к контактам мастер начинает импульс сброса. Если устройство подключено, то тоже дает импульс.

Рис. 19

От подтягивающего резистора большие токи, а также происходит "заваливание" фронтов.

Рис. 20

Рис. 21

Если команда правильно понята приемником, то изделие хранит в себе код семейства.

Рис. 22

Лекция № 8

Считать контрольную сумму надо!



Рис. 23

По "исключающему или" складываем со старшим битом (влево через перенос).

Интерфейс CAN.

CAN относится к последним интерфейсам. Он лидер в распределенном управлении. Цель: передача информации от различных узлов автомобиля. Количество проводников, обеспечивающих интерфейс, стараются свести к минимуму. Скорость - примерно 1 Мбит/сек; высокая помехозащищенность. Это позволяет принять этот интерфейс для индустриальных областей.

CAN представляет собой асинхронную последовательную структуру с одним сегментом сети.

Линии:

Рис.24

У каждой Node свой ID.

Recessive - логическая 1;

Dominant - логический 0.

Состояние 0 перетекает в состояние 1.

При передаче используется обычный энергокод, но, в отличие от кода, присутствует технология накопления.

Если следует 5 бит одной полярности, то следующий бит будет противоположной полярности. 6-ой бит одной полярности свидетельствует об ошибке.

Устройство должно поддерживать следующие биты сообщений:

1. Стандартный;

2. Расширенный;

3. Удаленный запрос данных;

4. Ошибка;

5. Перезагрузка;

6. Простой.

Стандартное сообщение.

Рис. 25

Если меньше 7 бит, ошибка.

Recessive - состояние покоя, если в шину никто не посылает сигнала.

Лекция № 9

Рис. 26

Если несколько устройств захотят захватить шину, арбитраж выиграет устройство с 0.

После конца сообщения еще 11 бит (минимум 7).

Расширенное сообщение.

Рис. 27

"-" соотношение передачи служебной информации и собственной =>время передачи, время занятости канала повышается, пропускная способность понижается.

Лекция № 10

Удаленный запрос нужен для того, чтобы получить нужный "кусок" информации.

ID 10...0|1(RTR)|0(IDE)|0(RB0)|DLC3...DLC0|CRC|CRCDef|Ack|AckDef

Отличается удаленный запрос одним битом RTR.

Сообщение об ошибке.

Узлы могут находиться в 2-х состояниях:

1. Активной ошибки (когда ошибку обнаруживает передающий узел);

2. Пассивной ошибки(наступает в остальных случаях у всех устройств, которые не активны).

Обнаружив ошибку, активное устройство должно прекратить ошибку и передать 6 нулей подряд, создавая дополнительную ошибку, которая должна быть принята всеми остальными устройствами, которые, в свою очередь, по окончанию приема 6 нулей тоже выдают свои сигналы об ошибке.

Рис. 28

Остальные узлы тоже могут выдавать 6 нулей. Если это происходит, то проигрывают арбитраж.

Пассивное состояние полностью аналогично активному, только возникает при простое шины. Устройства должны перегрузиться. При этом не важно, какое устройство заметит эту ошибку.

Шина USB.

Является стандартом архитектуры ПК (РС), ориентирована на интеграцию с устройствами бытовой электроники.

Первоначально заявлялось 2 скорости: полная Full Speed (12 Мбит/сек) - не для передачи данных и низкая Low Speed (1,5 Мбит/сек).

Начиная с редакции 2.0, предельная скорость 480 Мбит/сек.

По своей структуре USB - хост-центрическая организация. Общается только с хостом. USB не общаются друг с другом.

Устройства могут являться либо Hub'ами, либо функциями, либо их комбинациями. Задача Hub'а - образование дополнительных точек подключения и обеспечение этих точек энергопитанием. Hub'ы обязаны обеспечить максимальную пропускную способность шины.

Работой всех устройств машины управляет хост. Шина предусматривает наличие горячих клавиш (включение/выключение).

Физическая реализация - многоярусная звезда, вершина которой является объединенным с хостом 8-портовым Hub'ом. К каждому порту может подключиться внутреннее устройство. Всего устройств может быть подключено не более 127.

Предусматривается до 5 уровней Hub'ов, не считая корневого.

Рис. 29

Волновое сопротивление витой пары для передачи данных - 90 Ом, максимальная длина кабеля - 5 м.

Для различных скоростей - разные источники:

Источники напряжения для Full Speed, Low Speed;

Источники тока для High Speed.

С появлением спецификации 2.0 появилась следующая проблема: на этой шине должны "уживаться" медленные и скоростные устройства.

Если ведется диалог с Full Speed, то может не хватить пропускной способности шины для еще более скоростного устройства.

Лекция № 11

3 режима энергопотребления: потребление устройства на момент подключения меньше 100 мА, потребление во время активной работы, в спящем режиме 0,5 мА.

Каждое устройство на шине USB получает свой уникальный адрес. Нулевой адрес заложен в качестве резерва. Процедуре получения адреса предшествует сброс устройства.

Перед тем, как получить адрес, устройство должно передать информацию частоты доступа к шине и допустимой задержки во время обслуживания.

Требуемая пропускная ширина канала, требования к обработке ошибок.

Максимальный размер передаваемых и требуемых пакетов.

Тип передачи.

Направление передачи.

Представляется набором конечных точек (до 16).

В зависимости от направления передачи данных, количество точек в каждую сторону 16. Итого: 32.

Каждая точка отвечает за какую-то часть информации.

Любое устройство должно иметь конечную точку № 0 на ввод и вывод. Устройство передает хосту все необходимые для выполнения параметры о себе.

Все остальные конечные точки необходимы для выполнения функциональных назначений устройства.

Канал pipe - модель передачи данных между хостом и конечной точкой устройства.

2 типа канала:

- поток (представляет данные от одного абонента другому);

- сообщение.

Поток отличается тем, что передается в реальном времени с контролем ошибок. Поток может передаваться 3 форматами:

- передача массивов;

- по прерыванию;

- с помощью изохронных передач (без проверки правильности данных).

Статус - информация об устройстве.

Рис. 30

Все транзакции на этой шине планируются и начинаются по инициативе хоста, который посылает маркер-пакет. Транзакция состоит из 2-х пакетов. В каждой транзакции возможен обмен между адресованным устройством и хостом.

Источник данных передает пакет данных и, после приема данных, высылает пакет подтверждения.

Рис. 31

В транзакции планирует все хост и циклически с интервалом в одну миллисекунду формирует сигнал FRAME, который вкладывается в кадры, заполняемые хостом. Каждый кадр начинается с посылки специального маркера SOF (Start of Frame).

Рис. 32

Существует 4 базовых типа передачи данных:

1. Управляющие посылки;

2. Массивы Bulka;

3. Прерывания Irq: короткие сообщения, которые должны обрабатываться не реже, чем этого требует устройство для Low и Full Speed (10-250мсек); для High Speed - 125 мсек.

Изохронные передачи - это непрерывные передачи, занимающие предварительно согласованное с гарантированным временем доставки сообщения; при этом, не гарантируется целостность.

Лекция № 12

Драйвер контроллера хоста - это драйвер, обслуживающий аппаратуру; работает с каналом передачи данных.

Уровень системы драйвера формирует транзакции.

Уровень клиентского программного обеспечения передает системному драйверу информацию и заполняет буфер команд.

Любое устройство для USB представляет собой набор конечных точек. Под контрольной точкой понимается та часть устройства, которая способна осуществлять обмен данными между собой и хостом. Подобно тому, как каждое устройство имеет свой адрес, так и каждая контрольная точка имеет свой уникальный идентификатор.

В полноскоростных устройствах 16 идентификаторов (0...15); в низкоскоростных - до 3-х идентификаторов.

Каждая контрольная точка характеризуется направлением передачи данных (от хоста). Существуют контрольные точки, рассчитанные на прием данных (хостом).

Рис. 33

Нумерация одинакова.

Каждую контрольную точку необходимо характеризовать:

- частотой доступа к шине;

- требуемой шириной канала;

- номерами;

- максимальным размером сообщения;

- направлением передачи данных.

Все контрольные точки с номерами, отличными от 0, могут находиться в любом состоянии до окончания конфигурирования устройства и в любом состоянии не могут быть доступны, а контрольная точка с номером 0 должна быть доступна на ввод-вывод всегда. Она вместе с хостом образует Default Control Pipe.

Процесс установления скорости (автоматически и аппаратно).

Когда присутствует 1 на даной линии - USB-устройство встроено в разъем.

Рис. 34

2 типа канала Pipe:

1. Потоки - способ передачи неструктурированных данных (не определяет правильности данных);

2. Каналы сообщений - данные имеют структуру (контроль правильности данных осуществляется на уровне USB).

Каналы характеризуются требованиями к пропусканию: канал характеризуется максимальным размером пакетов данных, характеризует тип передачи данных.

Типы передачи данных.

1. Контрольное сообщение (непериодичные, инициируемые хостом, запросы и ответы на них типом команды - статус);

2. Изохронные передачи (периодичные, обмен между хостом и устройством выполняется в реальном времени);

3. Прерывания (непериодичные, ограниченные во времени сообщения);

4. Передача массивов (передачи, значительные по объему, способные использовать любую предоставляемую полосу и готовы мириться с задержками в ожидании освобождения канала (полосы)).

1, 3, 4: параметр - доставка, но не гарантируется время;

2: параметр - время, но не гарантируется отсутствие ошибок.

Планирование транзакции со всеми устройствами осуществляется хостом в соответствии с правилами:

1. Наивысший приоритет - у изохронных передач;

2. Прерывания после всех изохронных сообщений;

3. Запросы на обработку передачи массивов выполняются в последнюю очередь;

4. Под контрольные сообщения отводится не более 10% длительности FRAME'а.

Максимальное ограничение: за 1мс можно передать 12000бит.

Лекция №13

В общем виде любая транзакция начинается с 3-х пакетов. Каждая транзакция начинается с маркер-пакета, который посылает хост. Следом идут данные от/к устройству.

Рис. 35

И последний пакет - пакет подтверждения.

Любой пакет выглядит следующим образом:

Рис. 36

Среди маркер-пакетов особое место занимает Start of Frame.

Рис. 37

Частичный пакет данных отличается от маркер-пакета только длиной:

Рис. 38

Транзакции могут быть:

1. Передача команды:

- хост посылает маркер, который имеет уникальный идентификатор (один из маркеров - Setup);

- хост посылает в выбранные точки пакет данных (данные адресом не снабжаются);

- адресованная хостом функция, в случае успеха, отсылает хосту пакет подтверждения;

2. Изохронная передача:

- хост посылает маркер Out, говорящий о том, что следом идут данные, выдаваемые хостом;

- следом он выдает устройству данные:

Рис. 39

3. Передача данных с подтверждением:

- передача маркера Out;

- передача пакета данных;

- получение от конечной точки пакета подтверждения.

Аналогично существуют изохронный прием данных и прием данных с подтверждением.

Маркер In показывает, что следом за ним маркер ждет.

Одноярусная звезда.

Рис. 40

Наличие многоярусных конструкций на физическом уровне. Правила перенаправления потока.

SOF
Setup - показывает, что следом от хоста идет команда устройству;

Out - показывает, что следом от хоста идут данные к устройству;

In - устройство должно быть готово передать хосту информацию.

Пакеты данных.

Data 0, Data 1 - с их помощью осуществляется синхронизация; четные пакеты следуют за нечетными.

Data 2, MData - под них места зарезервированы, но их использование не определено.

Пакеты подтверждения (4 шт, различаются идентификаторами):

- ACK - подтверждения;

- NAK - сигнал о том, что данные готовы;

- NVET - устройство смогло принять/выдать порцию данных, но для следующей порции ресурсов нет, устройство просит паузу;

- STALL - требуется вмешательство хоста.

Специальные пакеты:

PING - получение от устройства сообщения о том, что устройство готово;

SPLIT - указание на то, что транзакция будет расщеплена;

ERR - ошибка в расщепленной транзакции;

PRE - следующий пакет будет проходить на LS-скорости.

Классы устройств USB:

-HID;
-CDC;

-MSD.

Лекция №14

Управляющие посылки.

I группа (посылка записи данных):

- передача команды;

- передача с подтверждением;

- прием пустого пакета данных в качестве подтверждения.

II группа (посылка чтения данных):

- передача команды;

- прием данных хостом;

- передача пустого пакета в качестве подтверждения.

III группа (посылка без данных):

Передача команды и прием подтверждения пустого пакета данных.

Рис. 41

В остальных посылках одни данные заменяются другими.

Максимальный размер при передаче массива - 64 байта (8 байт для низкоскоростных).

При изохронной передаче максимальный размер - 1024 байта (за раз).

Виды контрольных сообщений.

Передаются только через основной канал передачи сообщений, т. е. Контрольную точку 0.

Пакет Setup Размер (байт)

Request Type 1

Request 1

wValue 2

wIndex 2

wLength 2

host->slave (0)

slave->host (1)

Бит 7 DIR - бит направления;

Бит 6-5 - идентифицирует тип запроса:

00 - стандартный запрос;

01 - специфический запрос по классу устройства;

10 - специфика производителя;

11 - резерв.

Бит 4-0 - указывает на то, кто является получателем запроса

0 - Device;

1 - Interface.

К стандартным относятся следующие запросы:

GetStatus

ClearFeature

SetFeature

SetAdress

GetDescriptor

SetDescriptor

GetConfig

SetConfig

GetInterface

SetInterface

Если пришла команда GetDescriptor, то в младшем байте - индекс дескриптора, а в старшем - 0,1; 0,2...

Любое устройство должно иметь следующие дескрипторы:

Стандартный DSC 01

Конструкции Config 02

Строки String 03

Интерфейса Interface 04

Конечной точки ЕР 05

Устройство подтягивает либо в +, либо в - линию данных.

Стандартный дескриптор:

Std Device DSC Длина

bLength 1

bDescriptorType 1

bcdUSB 2

bDeviceClass 1

bDeviceProtocol 1

bMaxPocketSize 1

tdVendor 2

idProduct 2

bcdDevice 2

Imanufacture 1

Iproduct 1

ISerialNumber 1

bnumconfig 1

bdeviceSubclass 1

bDeviceClass - если 0, то в устройстве несколько интерфейсов, не зависящих друг от друга.

Определяется класс устройства - 1 - FE интерпретируется много, и они зависимы.

Далее посылается контрольное сообщение типа SetAdress, и в этом случае поле Value создает адрес этого устройства.

SetAdr

bmRequestType 0

bRequest 5

wValue адрес

wIndex 0

wLength 0

После окончания транзакции по нулевому адресу устройство еще раз получает запрос, но уже по новому адресу.

Лекция №15

ATAHachment for Diskdriver.

НМД: НГМД + НЖМД

Адресация в IDE имеет диск. формы. Для накопителей изначально указывают номера цилиндра, головки и сектора. Сначала эти данные соответствовали физической геометрии диска, теперь же эти диски АТА стали описывать внешние геометрии. Любой диск может иметь несколько внешних геометрий.

На одной шине допускается нахождение 3-х устройств: хоста, мастера и слэйва. Если из устройств присутствует только одно, то оно - мастер. Аппаратно интерфейс АТА базируется на ТТЛ-шине. Для связи используется 40-контактный разъем, который должен обеспечить емкость не ниже 35 пика фарад. По мере развития интерфейсов росла тактовая частота (сигнальные линии чередуются с земельными).

На частоте свыше 33 МГц применение 80 жильного кабеля обязательно.

Контакт 1 - Reset - может браться с системной шины.

DA [2:0]
DD [15:0]

Сигнал чтения портов.

DIOR (Device I/O Rd)

DIOW (Device I/O Wr)

IORDY - готовность устройства завершить цикл обмена;

JNTRQ - запрос на прерывание, вырабатывается устройством;

CS0 - выбраны командные регистры (по адресу 1F0-1F7);

CS1 - выбраны управляющие регистры (по адресу 3F6 - 3F7).

PDIAG/CBLID - участие в диагностике, чтобы мастер узнал о slave-устройстве (CBLID показывает, какой тип кабеля подключен к хосту).

DASP - индикатор активности устройства, индикатор slave-устройства.

SPSYNC/CSEL
PIO
UltraDMA - в этом режиме переопределяется значение контактов.

STOP - остановка передачи пакетов.

IORDY/DDM ARDY/DSTRODE - при приеме пакетов UltraDMA говорит о готовности приема устройством/при передаче данных от устройства к хосту стробирует данные (по обоим фронтам).

DIOR/HDHARDY/HSTROBE
Каждое устройство АТА должно иметь стандартный набор регистров, адресуемых хостом. 2 блока:

1. Блок командных регистров (для передачи команд и статусов);

2. Блок управляемых регистров (для передачи/получения информации о режиме работы устройства.

По стандарту, по адресу 3F6:

- W регистр управления (Device Control Request);

- R альтернативный регистр состояния (Alternative Status Request).

1F0 - регистр данных;
1F1 - ERR, запись свойств;
1F2 - регистр счетчиков секторов;
1F3 - регистр номера сектора;
1F4 - регистр младшего байта цилиндра;
1F5 - регистр старшего байта цилиндра;
1F6 - регистр номера устройства и головки;
1F7 - в случае записи - регистр команд; чтение - статус-регистр.
DEV 0 - все дальнейшие обращения будут производиться к мастеру;

1 - все дальнейшие обращения будут производиться к slave-устройству.

Если не закончена транзакция с одним устройством, обращение к другому не возможно.

Лекция №16

Прием и передача данных.

Состоит из следующей последовательности шагов:

Хост читает регистр статуса, дожидаясь нулевого бита BSY. Отличительная особенность: никакой фазы адресации нет. BSY свидетельствует о том, занято ли устройство («1»), или свободно («0»). Дождавшись BSY=0, хост записывает в регистр DH байт, у которого бит Dev указывает на то, к какому устройству идет обращение. Хост читает регистр статуса, дожидаясь момента, когда бит готовности к приему (DRDY) будет установлен в «1». Хост заносит соответствующую команду в блок командных регистров и в регистр команды поступает команда, которая однозначно указывает на то, что будет конкретно происходить. Устройство устанавливает BSY=1 и переходит к выполнению команды. Если данная команда не предполагала вывод данных, на этом все заканчивается.

Если переходит чтение/запись:

Для команд чтения хостом из устройства в режиме программного управления обмена (PIO), процедура: когда устройство готово к выдаче очередного бита, сбрасывает BSY (в 0), устанавливает DRQ (в 1); устройство выставляет сигнал InterQ на соответствующий контакт.

Увидев этот сигнал, хост читает регистр статуса, тем самым сбрасывая InterQ. Если в регистре статуса обнаружена BSY=0; DRDY=1, то происходит чтение данных.

Передача данных данных начинается также с шага 6.

Устройство сбрасывает BSY=0, DRQ =1. Хост читает регистр статуса. Если обнаруживает совпадения этих 2-х бит, начинается запись первого блока данных. Далее происходит обработка этого блока.