Регистры устройств

Каждое устройство 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 — запись)
12CS0#CS1#DA2DA1DA0 
  11xxxНет обращения (шина данных в третьем состоянии)
  00xxxНедопустимый адрес (шина данных в третьем состоянии)
3FX37ХControl Block Registers — блок управляющих регистров
  100XxНе используется (шина данных в третьем состоянии)
  1010xНе используется (шина данных в третьем состоянии)
3F637610110R: Alternate Status (AS) — альтернативный регистр состояния
3F637610110W: Device Control (DC) — регистр управления устройством
3F737710111R: Drive Address (DA) — регистр адреса (не используется)¹
1FX17ХCommand Block Registers — блок командных регистров
1F017001000R/W: Data (DR) — регистр данных
1F117101001R: Error (ER) — регистр ошибок
1F117101001W: Features (FR) — регистр свойств
1F217201010R/W: Sector Count (SC) — регистр счетчика секторов
1F317301011R/W: Sector Number (SN) — регистр номера сектора/LBA[7:0]²
1F417401100R/W: Cylinder Low (CL) — регистр младшего байта номера цилиндра LBA[15:8]²
1F517501101R/W: Cylinder High (CH) — регистр старшего байта номера цилиндра/LBA[23:16]²
1F617601110R/W: Device/Head (D/H) — регистр номера устройства и головки/LBA[27:24]²
1F717701111R: Status (SR) — регистр состояния
1F717701111W: 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.

Перейти на страницу:

Все книги серии Наиболее полное и подробное руководство

Похожие книги