Регистры устройств
Каждое устройство ATA имеет стандартный набор регистров, адресуемых сигналами от хост-адаптера ( CS0#
, CS1#
, DA2
, DA1
, DA0
, DIOR#
и DIOW#
). Набор регистров (табл. 9.6) состоит из двух блоков, выбираемых сигналами CS0#
и CS1#
, из которых активным (низкий уровень, «0») может быть только один. В таблице приведены адреса регистров в пространстве ввода-вывода IBM PC-совместимого ПК для первого и второго каналов ATA. При обращении к регистрам сигнал DMACK#
должен быть неактивным. Блок командных регистров служит для посылки команд устройству и чтения информации о его состоянии. Блок управляющих регистров используется для управления устройством и получения более подробной информации о его состоянии. На действительность содержимого регистров командного блока и альтернативного регистра состояния указывает нулевое значение бита BSY
регистра состояния. Запись в регистры должна производиться лишь при BSY
=0 и DRQ
=0, кроме особо оговоренных случаев. Если устройство поддерживает управление энергопотреблением, в «спящем» режиме содержимое этих регистров недействительно и запись игнорируется, кроме особо оговоренных случаев.
Таблица 9.6. Регистры контроллеров устройств ATA
Адрес |
Сигналы адресации канала № (0 — низкий уровень, 1 — высокий) |
Назначение (R — чтение, W — запись) |
1 |
2 |
CS0# |
CS1# |
DA2 |
DA1 |
DA0 |
|
|
1 |
1 |
x |
x |
x |
Нет обращения (шина данных в третьем состоянии) |
|
|
0 |
0 |
x |
x |
x |
Недопустимый адрес (шина данных в третьем состоянии) |
3FX |
37Х |
Control Block Registers — блок управляющих регистров |
|
|
1 |
0 |
0 |
X |
x |
Не используется (шина данных в третьем состоянии) |
|
|
1 |
0 |
1 |
0 |
x |
Не используется (шина данных в третьем состоянии) |
3F6 |
376 |
1 |
0 |
1 |
1 |
0 |
R: Alternate Status (AS) — альтернативный регистр состояния |
3F6 |
376 |
1 |
0 |
1 |
1 |
0 |
W: Device Control (DC) — регистр управления устройством |
3F7 |
377 |
1 |
0 |
1 |
1 |
1 |
R: Drive Address (DA) — регистр адреса (не используется)¹ |
1FX |
17Х |
Command Block Registers — блок командных регистров |
1F0 |
170 |
0 |
1 |
0 |
0 |
0 |
R/W: Data (DR) — регистр данных |
1F1 |
171 |
0 |
1 |
0 |
0 |
1 |
R: Error (ER) — регистр ошибок |
1F1 |
171 |
0 |
1 |
0 |
0 |
1 |
W: Features (FR) — регистр свойств |
1F2 |
172 |
0 |
1 |
0 |
1 |
0 |
R/W: Sector Count (SC) — регистр счетчика секторов |
1F3 |
173 |
0 |
1 |
0 |
1 |
1 |
R/W: Sector Number (SN) — регистр номера сектора/LBA[7:0]² |
1F4 |
174 |
0 |
1 |
1 |
0 |
0 |
R/W: Cylinder Low (CL) — регистр младшего байта номера цилиндра LBA[15:8]² |
1F5 |
175 |
0 |
1 |
1 |
0 |
1 |
R/W: Cylinder High (CH) — регистр старшего байта номера цилиндра/LBA[23:16]² |
1F6 |
176 |
0 |
1 |
1 |
1 |
0 |
R/W: Device/Head (D/H) — регистр номера устройства и головки/LBA[27:24]² |
1F7 |
177 |
0 |
1 |
1 |
1 |
1 |
R: Status (SR) — регистр состояния |
1F7 |
177 |
0 |
1 |
1 |
1 |
1 |
W: Command (CR) — регистр команд |
¹ Рекомендуется, чтобы на сигнал чтения по этому адресу устройство не отвечало.
² Регистры сектора, цилиндра и головки в режиме LBA содержат указанные биты логического адреса.
Альтернативный регистр состояния AS
(для первого канала адрес 3F6h, для второго — 376h) имеет те же биты, что и основной (см. ниже), но его чтение не приводит ни к каким изменениям состояния устройства.
Регистр управления устройством DC
(3F6h, 376h) служит для программного сброса обоих устройств одновременно и управления разрешением прерывания выбранного устройства. Запись в этот регистр возможна в любой момент. Программный сброс через регистр DC
должен отрабатываться ив состоянии Sleep .
Назначение битов регистра DC
:
♦ биты [7:3] зарезервированы;
♦ бит 2 — SRST
(Software Reset) — программный сброс, действует все время, пока бит не будет снят (оба устройства на шине воспринимают программный сброс одновременно);
♦ бит 1 — nIEN
(Interrupt Enable) — инверсный бит разрешения прерывания (при нулевом значении бита выбранное устройство может вырабатывать сигнал INTRQ
через тристабильный выход);
♦ бит 0–0.
Регистр адреса устройства DA
(3F7h, 377h) использовался только в первой версии ATA для совместимости со старыми контроллерами, чтением этого регистра можно было определить адресованный привод и головку. Регистр выпадает из блока (он совпадает с диагностическим регистром состояния контроллера НГМД) и рекомендуется, чтобы устройство ATA не отвечало на чтение этого регистра. Если устройство отвечает на чтение, то оно не должно управлять битом DD7 во избежание конфликта с контроллером НГМД, у которого по этой линии передается бит смены носителя. Из-за несоблюдения этого требования могут возникать проблемы, когда контроллер (адаптер) ATA и контроллер НГМД находятся на разных платах.
Читать дальше