Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Шины.PCI,.USB.и.FireWire

.pdf
Скачиваний:
66
Добавлен:
19.03.2016
Размер:
6 Мб
Скачать
☆

Доступ к регистрам PHY

Обращение к регистрам PHY (см. далее) через запросы от LINK разрешено в лю$ бом состоянии интерфейса, за исключением времени, когда PHY занят обработ$ кой предыдущего запроса чтения. Запросы обращения к регистрам выполняются всегда, их может отменить только сигнал сброса. Запрос передается в последова$ тельном коде по линии LReq. Для запросов обращения к регистрам PHY в теле пе$ редается адрес регистра, а в запросе записи — и сами данные записи. В запросе чтения в битах [4:7] передается адрес запрашиваемого регистра, бит 8=0 — стоп бит. В запросах записи после адреса в битах [8:15] передается записываемый байт. Ответ на запрос чтения регистра передается по линиям D[0:1] в состоянии Status за 8 тактов (передаются 16 бит). За первые 2 такта передается текущее значение со$ стояния (см. табл. 23.3), далее передается 4$битный адрес регистра и 8 бит считан$ ных данных.

Параллельный интерфейс B PHY LINK 1394b

В IEEE 1394b параллельный интерфейс между физическим уровнем и LINK$уров$ нем модифицирован для поддержки высоких скоростей и бета$режима, и этот ва$ риант интерфейса называется B PHY LINK. Схема интерфейса приведена на рис. 23.2, назначение сигналов — в табл. 23.6. Этот интерфейс обеспечивает пере$ дачу данных на скоростях вплоть до S800. Здесь в шине данных всегда использу$ ются все 8 бит, а при передаче на более низких скоростях байты данных растягива$ ются до 2, 4 или 8 тактов. Интерфейс может работать и в традиционном режиме (1394/1394a), при этом он синхронизируется от линии PClk (она будет играть роль SCLK), частота этого сигнала становится 49,152 МГц. Сигналы LClk и PInt при этом не используются.

Таблица 23.6. Сигналы интерфейса LINK PHY 1394b

Сигнал

Назначение

D[0:7]

Двунаправленная шина, по которой передаются данные, код скорости и тип

 

запроса. Данные от PHY синхронизируются по PClk, данные от LINK — по LClk

Pint

PHY Interrupt, линия для последовательной передачи информации о состоянии

 

PHY, содержимого регистров и прерываний по событиям

Ctl[0:1]

Состояние (фаза) интерфейса (табл. 23.7) синхронизируется по PClk, когда

 

интерфейсом управляет PHY, и по LClk, когда интерфейсом управляет LINK

LReq

Link Request, последовательный интерфейс, по которому LINK инициирует

 

запрос к PHY (для передачи пакетов и обращения к регистрам)

 

Синхронизируется по LClk

PClk

Синхронизация (98,304 МГц) для сигналов, передаваемых от PHY. Источник

 

синхронизации — PHY

LClk

Синхронизация для сигналов, передаваемых от LINK. Сигнал вырабатывается

 

LINK’ом из PClk и совпадает с ним по частоте

LPS

Lint Power Status, признак активности (включения) LINK уровня

LinkOn

Сигнал для включения LINK уровня

 

 

Сигнал

Назначение

Beta_Mode_link Признак работы интерфейса в режиме 1394b (при отсутствии сигнала

 

интерфейс работает в режиме 1394a)

Direct1

Признак непосредственного соединения LINK PHY (нет дифференцирования

 

сигналов)

 

 

1 В микросхемах этот вывод может называться Iso (изоляция).

Рис. 23.2. Интерфейс B PHY LINK 1394b

Интерфейсом управляет PHY или LINK, текущее состояние интерфейса (исполь$ зование шины данных) определяется сигналами Ctl[0:1] в соответствии с табл. 23.7. По сравнению с 1394a интерфейс изменен в том, что все обращения к регистрам PHY происходят без использования шины данных: записываемые данные переда$ ются по линии LReq, а считываемые данные и прерывания от PHY приходят по линии PInt.

Таблица 23.7. Состояние интерфейса B PHY LINK (1394b)

Ctl[0:1]

Состояние интерфейса

 

Линиями Ctl[0:1] управляет PHY:

00

Idle — нет активности (дежурное состояние)

01

Status — PHY по шине данных посылает информацию о состоянии шины

10Receive — PHY передает LINK уровню пакет, принимаемый с шины

11Grant — PHY передает LINK’у право использования шины данных Линиями Ctl[0:1] управляет LINK:

00Idle — нет активности: LINK завершил передачу и отдает управление интерфейсом уровню PHY

01

Transmit — LINK передает данные PHY

10Не используется

11Hold/More_Info — LINK удерживает шину, готовясь к передаче пакета. В конце передачи пакета указывает на передачу следующего запроса

Данные, принимаемые и передаваемые по параллельной шине, растягиваются на n$тактов, в зависимости от скорости передачи: для S100 n = 8, для S200 n = 4, для S400 n = 2, для S800 каждый байт передается только в одном такте (n = 1). Более высокие скорости данным интерфейсом не поддерживаются.

Запросы LINK к PHY в 1394b

Запрос от LINK к PHY посылается в последовательном виде по линии LReq. Обоб$ щенный формат запроса приведен на рис. 23.3, по сравнению с запросами тради$ ционного интерфейса он усложнен. Запрос начинается с единичного старт$бита (LReq0 = 1) и завершается нулевым стоп$битом. За старт$битом следует код типа запроса (биты RT[0:3], табл. 23.8 ), за которым следуют поля, необходимые для данного типа запроса:

бит RFMT (Request Format) определяет формат запроса: 0 — явно не задан, 1 — B$формат;

поле RS[0:3] (Request Speed) определяет скорость: 0000 — S100, 0010 — S200, 0100 — S400, 0110 — S800 (остальные значения зарезервированы);

поле RA[0:3] содержит адрес регистра PHY;

поле RD[0:7] (Request Data) содержит записываемые данные.

Рис. 23.3. Формат запроса к PHY

В ответ на запросы передачи PHY, выиграв арбитраж, предоставляет LINK’у пра$ во на передачу пакета. По запросу записи в регистр PHY выполняется соответ$ ствующая операция, никакого ответа не предусматривается. В ответ на запрос чте$ ния регистра PHY данные (и адрес) будут переданы по линии Pint.

Таблица 23.8. Запросы LINK к PHY

Код запроса

Назначение

Требуемые

RT[0:3]

 

поля

 

 

 

0000

Резерв

 

0001

PH_IMMED_REQ, немедленный запрос передачи (для

RF, RS

 

посылки пакета квитирования)

 

0010

PH_NEXT_EVEN, запрос очередной передачи

RF, RS

 

асинхронного пакета в четной фазе интервала справедливости

 

0011

PH_NEXT_ODD, запрос очередной передачи

RF, RS

 

асинхронного пакета в нечетной фазе интервала справедливости

 

0100

PH_CURRENT, запрос очередной передачи асинхронного

RF, RS

 

пакета в текущей фазе интервала справедливости

 

 

 

 

Код запроса

Назначение

Требуемые

RT[0:3]

 

поля

 

 

 

0101

Резерв

 

0110

PH_ISOCH_REQ_EVEN, запрос передачи изохронного

RF, RS

 

пакета в четном периоде

 

0111

PH_ISOCH_REQ_ODD, запрос передачи изохронного

RF, RS

 

пакета в нечетном периоде

 

1000

PH_CYC_START_REQ, запрос передачи пакета начала цикла

RF, RS

1001

Резерв

 

1010

PH_REG_READ, запрос чтения регистра PHY

RA

1011

PH_REG_WRITE, запрос записи в регистр PHY

RA, RD

1100

PH_ISOCH_PHASE_EVEN, сообщение от LINK’а (не мастера

 

 

циклов) о приеме пакета начала цикла с четной фазой,

 

 

обеспечивает синхронизацию LINK’а и PHY, если последний

 

 

из за ошибки не принял маркер Cycle Start

 

1101

PH_ISOCH_PHASE_ODD, то же для нечетной фазы

 

1110

PH_CYCLE_START_DUE, сообщение от LINK’а (не мастера

 

 

циклов) о приеме уведомления о начале цикла

 

1111

Резерв

 

 

 

 

Прием пакета

Прием пакета иллюстрирует рис. 23.4. После индикации начала приема (Data_On) принимается байт скорости SPD, определяющий также и формат (табл. 23.9). Да$ лее принимаются байты данных — пакет, передаваемый по шине.

Рис. 23.4. Прием пакета по интерфейсу B PHY LINK

Во время индикации начала приема по шине данных передается байт ST, сообщаю$ щий состояние шины:

ST[0] — Bus Reset, сброс шины;

ST[1] — Arbitration Reset Gap Odd, признак зазора сброса арбитража и начала нового нечетного интервала справедливости;

ST[2] — Arbitration Reset Gap Even, признак зазора сброса арбитража и начала нового четного интервала справедливости;

ST[3] — Cycle Start Odd, признак начала нечетного цикла;

ST[4] — Cycle Start Even, признак начала четного цикла;

ST[5] — Subaction Gap, признак зазора арбитража. После сброса означает за$ вершение сброса и инициализации шины.

Таблица 23.9. Кодирование скорости и формата принимаемого пакета

SPD[0:7]

Скорость, формат

0000 0000

S100 Legacy

0000 0001

S100 Beta

0000 0100

S200 Legacy

0000 0101

S200 Beta

0000 1000

S400 Legacy

0000 1001

S400 Beta

0000 1101

S800 Beta

1111 1111

DATA_ON, признак начала приема

Остальные значения

Резерв

 

 

Передача пакета

В ответ на запрос передачи пакета PHY, сигнализируя состояние Grant (Ctl[0:1] = = 11), посылает LINK$уровню байт GT, в котором сообщает формат, скорость и тип разрешенной передачи. После этого он отдает управление интерфейсом LINK$уров$ ню, указав состояние Grant (Ctl[0:1] = 11), а затем и прекращая управлять линиями Ctl[0:1] и D[0:7]. Теперь LINK устанавливает состояние Hold (Ctl[0:1] = 11), обозна$ чая занятость интерфейса и шины, и начинает передавать пакет данных (состоя$ ние Transmit, Ctl[0:1] = 01). После передачи пакета LINK сигнализирует состояние MORE_INFO (Ctl[0:1] = 11), в котором по шине данных передается байт дополни$ тельной информации AI[0:7]. В этом байте может присутствовать встроенный последующий запрос шины с указанием его формата, типа и скорости. После этого LINK указывает состояние Idle (Ctl[0:1] = 00), затем перестает управлять линиями Ctl[0:1] и D[0:7] и отдает управление PHY.

Получив право передачи пакета, LINK может послать только пакет, полностью удовлетворяющий свойствам, описанным байтом GT. Этот байт декодируется сле$ дующим образом:

бит GT[0] задает тип формата: 0 — произвольный, 1 — B$формат;

биты GT[1:3] задают тип гранта (пакета, разрешенного к передаче): 010 — изо$ хронный, 101 — асинхронный, 110 — пакет начала цикла, 111 — немедленный (пакет квитирования), остальные значения зарезервированы;

биты GT[5:6] задают скорость: 00 — S100, 01 — S200, 10 — S400, 11 — S800. Байт дополнительной информации AI[0:7]содержит следующие поля:

AI[0] — признак формата последующего запроса: 0 — произвольный, 1 — B$формат;

AI[1:3] — тип встроенного запроса: 000 — нет запроса, 001 — PH_ISOCH_REQ_ ODD, 010 — PH_ISOCH_REQ_EVEN, 011 — PH_CURRENT, 100 — PH_NEXT_ EVEN, 101 — PH_NEXT_ODD, 110 — PH_CYC_START_REQ, 111 — резерв;

AI[4] — признак последнего пакета в субакции;

AI[5:6] — скорость для встроенного запроса: 00 — S100, 01 — S200, 10 — S400, 11 — S800;

AI[7] — резерв.

Прием состояния PHY, прерываний и результатов чтения регистров

Состояние PHY, результаты чтения регистров и прерывания передаются последо$ вательно по линии Pint (рис. 23.5). Значения кодов индикации состояния раскры$ ты в табл. 23.10. Поля адреса считываемого регистра (RA) и считанных данных (RD) используются только при индикации результатов чтения. Индикация результатов чтения может быть как запрошенной LINK’ом, так и неожиданной для него (чте$ ние по инициативе PHY).

 

Рис. 23.5. Формат посылки состояния PHY

 

Таблица 23.10. Посылки состояния PHY

 

 

 

 

Код инди

Назначение

Требуемые

кации со

 

поля

стояния

 

 

ST[0:2]

 

 

 

 

 

000

NOP, нет индикации состояния

–

001

PHY_INTERRUPT, прерывание от PHY (тайм аут конфигурирования

–

 

из за петли, пропадание кабельного питания, событие порта

 

 

или тайм аут арбитража)

 

010

PHY_REGISTER_SOL, результат чтения регистра по запросу LINK’а

RA, RD

011

PHY_REGISTER_UNSOL, результат неожидаемого чтения

RA, RD

 

регистра

 

100

PH_RESTORE_NO_RESET, инициализация интерфейса

–

 

с сообщением об отсутствии сбросов шины, о которых не

 

 

было сообщено LINK’у (или PHY начал процесс восстановления

 

 

интерфейса)

 

продолжение

Таблица 23.10 (продолжение)

Код инди

Назначение

Требуемые

кации со

 

поля

стояния

 

 

ST[0:2]

 

 

 

 

 

101

PH_RESTORE_RESET, инициализация интерфейса

–

 

с сообщением о сбросе шины, происшедшем за время

 

 

пребывания интерфейса в состоянии Standby

 

110

Не используется (игнорируется LINK’ом)

–

111

Резерв

–

 

 

 

Последовательный интерфейс PIL FOP

Последовательный интерфейс подключает к однопортовому узлу с интегрирован$ ным портом, называемому PIL (Port Integrated Link), физический разветвитель FOP (Fan$Out PHY). Схема подключения с использованием этого интерфейса при$ ведена на рис. 23.6. Узел PIL содержит один бета$порт, соединяемый с разветвите$ лем FOP двумя дифференциальными однонаправленными сигнальными парами. В этих сигнальных парах может присутствовать и гальваническая развязка (кон$ денсаторная или трансформаторная). Дополнительно от FOP должен передавать$ ся сигнал LinkON, управляющий включением LINK$уровня по приему соответ$ ствующего пакета. Узел PIL и разветвитель FOP могут находиться в разных доменах питания. Внешние порты разветвителя FOP могут быть как бета$порта$ ми, так и универсальными, поддерживающими DS$сигнализацию.

Рис. 23.6. Интерфейс PIL FOP 1394b

Логически уровень PHY комбинации PIL$FOP выглядит как один многопорто$ вый PHY, число его портов равно числу портов разветвителя с учетом дополни$ тельного порта, обращенного к PIL. Этому порту назначается самый большой но$ мер; он никогда не представляется как активный порт и его нельзя перевести в режим Standby. В пакетах самоидентификации этот порт отмечается как отсут$ ствующий, удаленное обращение к его регистрам дает тот же результат, как обра$ щение к отсутствующему порту.

PHY, предназначенный для роли FOP, может и не подключаться к PIL, а играть роль автономного повторителя$разветвителя (с отсутствующим LINK’ом). При этом порт, предназначенный для подключения PIL, может работать в традицион$ ном, бета$ или «двуязычном» режиме.

PIL и FOP обнаруживают присутствие (включение) друг друга, согласуют скоро$ сти и устанавливают синхронизацию так же, как и пара обычных бета$портов (см. главу 22). В посылках согласования скоростей FOP будет передавать бит FOP_ Capable, а порт интегрированного узла — бит PIL_Capable. Протокол согласова$ ния позволяет установить им друг с другом правильные взаимоотношения.

Для того чтобы порты FOP и PIL логически связались в единый набор портов многопортового узла, в интерфейсе PIL$FOP определен специальный двухточеч$ ный протокол обмена со своими специальными P2P$пакетами (point$to$point). Пакеты P2P передаются только по интерфейсу между PIL и FOP, на общую шину они не выходят. Пакеты P2P передаются между пакетами основного трафика шины. Если во время передачи пакета P2P требуется передача основного трафика, то па$ кеты P2P прерываются, а пакеты основного трафика передаются беспрепятствен$ но. Формат пакетов P2P приведен на рис. 23.7, назначение полей приведено ниже:

PP1 и PP2 — байты$префиксы пакетов (00011xx1 и 00111xx1 соответственно);

D1 — байт, определяющий операцию:

0000xxxx — нет операции;

0001aaaa — запись в регистр FOP, aaaa — адрес, D2 содержит данные;

0010aaaa — чтение регистра aaaa;

0011aaaa — неожидаемое (для PIL) чтение регистра aaaa, D2 содержит счи$ танные данные;

0100aaaa — ожидаемые (для PIL) результаты чтение регистра aaaa, D2 содер$ жит считанные данные;

0101iiii — уведомление о прерывании от FOP, iiii — код прерывания (0001 — прерывание от физического уровня, остальные коды пока не определены);

0110xxxx — Cycle Start Due, если в FOP установлен бит enab_accel, PIL посылает это уведомление после начала каждого изохронного периода (по своим часам);

0111xxxx — Restore_Notify, уведомление восстановления, посылает FOP, начинающий восстановление как «племянник»;

10000000 – 11111111 — резерв;

D2 — данные записи или чтения (присутствуют не во всех пакетах);

DE1, DE2 — маркеры конца данных DATA_END.

Рис. 23.7. Пакеты P2P интерфейса PIL FOP

Каждый байт пакета на рисунке представлен в виде одного символа, который пос$ ле кодирования 8B/10B представляется десятью битами сигнала на шине. Пакеты P2P могут быть прерваны в любом месте управляющими символами префикса данных или кода скорости, что означает начало пакета основного трафика, переда$ ваемого по шине. Если пакет прерывается до DE1, то он повторяется передатчиком и игнорируется приемником. Пакет, прерванный после DE1, используется по на$ значению, поскольку все его содержательные поля и разделитель уже переданы.

Регистры PHY

Регистры PHY предназначены для управления функциями физического уровня, определения возможностей и состояния узла и состояния его портов. Регистры PHY имеют разрядность 8 бит. Они не отображаются на адресное пространство шины IEEE 1394. Доступ к регистрам PHY осуществляется по запросам его ло$ кального приложения (запросами по интерфейсу LINK$PHY). Некоторые поля регистров могут быть удаленно модифицированы пакетами физического уровня от узлов$диспетчеров. В 1394a появилась возможность удаленного доступа к реги$ страм с помощью асинхронных транзакций.

В 1394 все регистры PHY отображаются на плоскую карту (рис. 23.8), в которой 4$битный адрес позволяет выбрать любой из 16 регистров. Реальное число исполь$ зуемых регистров зависит от числа портов, которые имеются в данном PHY. На$ значение полей регистров приведено ниже:

Physical_ID — 6$битный идентификатор узла на шине;

R (Root) — признак того, что данный узел является корневым;

PS (Power State) — состояние питания: 1 — питание от шины в норме (>7,5 В);

RHB (Root Hold Off Bit) — бит, принуждающий узел задерживать свое участие в идентификации дерева, чтобы стать корнем (управляется PHY$пакетом физи$ ческого конфигурирования от диспетчера);

IBR (Initiate Bus Reset) — инициирование сброса шины; установка бита вызы$ вает немедленную подачу сигнала сброса на 166 мкс, после чего бит автомати$ чески обнуляется;

Gap_cnt — значение счетчика, используемого для определения зазоров арбит$ ража (Subaction_gap) и сброса арбитража (Arb_reset_gap); по сбросу, связан$ ному с изменением топологии, устанавливается Gap_cnt = 63. Управляется PHY$ пакетом физического конфигурирования от диспетчера;

SPD (Speed) — поддерживаемая скорость: 00 — S100, 01 — S200, 10 — S400, 11 — резерв;

E (Enhanced) — признак использования регистров в расширенном пространстве (расположенных после адреса #ports + 0100);

#ports (5 бит) — число портов PHY;

AStat[i], BStat[i] — состояние линий TPA, TPB i$го порта: 11 — Z, 01 — «1», 10 — «0», 00 — недопустимо;

Ch[i] — признак дочернего i$го порта: 0 — p$порт, 1 — c$порт;

Con[i] — состояние i$го порта: 0 — не подключен, 1 — подключен;

ENV (Environment) — тип оборудования (используется только с регистрами в расширенном пространстве): 00 — кросс$шина (backplane), 01 — кабельная шина, 10 и 11 — резерв;

Reg_count — число регистров в расширенном пространстве.

Рис. 23.8. Карта регистров PHY 1394

Вварианте кросс$шины карта регистров имеет специфику. Здесь всегда имеется только один порт (#ports = 1), биты R, PS и RHB отсутствуют. В расширенном пространстве имеется один регистр (Reg_count = 1), в котором старший бит TD (Transceiver disable) запрещает работу приемопередатчика узла, младшие 4 бита Priority задают значение приоритета, вводимое узлом при арбитраже.

В1394a набор регистров PHY был расширен, и для того чтобы сохранить совме$ стимость с 4$битной адресацией, часть регистров адресуется косвенно. В этой кар$ те в 1394b определены дополнительные поля. Карта регистров PHY 1394a/b при$ ведена на рис. 23.9. Здесь адреса 1000–1111 отведены под восемь страничных регистров; какие именно регистры на них отображаются в данный момент, опреде$ ляется полем Page_select, а для портов — еще и полем Port_Select. Первые два регистра полностью совпадают с регистрами 1394; третий регистр несколько отли$ чается, и по нему можно определить, что остальные регистры являются регистра$ ми 1394a/b. Новые поля регистров приведены ниже:

Extended (3 бита) — признак формата 1394a/b (111);

Total_Ports (4 бита) — число портов;

Max_Speed (3 бита) — максимальная поддерживаемая скорость;

E_SB (Enable_Standby) — разрешение узлу$«племяннику» перейти в режим Standby;

Repeater_delay (4 бита) — максимальная задержка, вносимая повторите$ лем (T = 144 + Repeater_delay×20 нс);

Link_Act — активность LINK$уровня (соответствует биту L пакета самоиден$ тификации), в 1394b называется LCtrl;

Contend — признак кандидата на роль диспетчера (соответствует биту C пакета самоидентификации);