77735

Интерфейс НГМД

Лекция

Информатика, кибернетика и программирование

Интерфейс НГМД Интерфейс накопителей на гибких магнитных дисках НГМД является сугубо специфическим по нему передаются не байты команд и данных а сигналы управления приводом и не декодированные сырые битовые потоки данных чтения-записи. Основные функции по управлению НГМД а также по кодированию-декодированию данных выполняет контроллер расположенный на системной плате1. Все функции необходимые для использования НГМД в качестве устройств хранения данных реализованы сервисами BIOS INT 13h и ОС. Контроллер 2 FDC АТ поддерживает два...

Русский

2015-02-05

2.29 MB

3 чел.

4. Интерфейс НГМД

Интерфейс накопителей на гибких магнитных дисках (НГМД) является сугубо специфическим по нему передаются не байты команд и данных, а сигналы управления приводом и не декодированные («сырые») битовые потоки данных чтения-записи. Основные функции по управлению НГМД, а также по кодированию-декодированию данных выполняет контроллер, расположенный на системной плате1. На плате электроники, установленной на корпусе НГМД, расположены только схемы приводов двигателей, усилители-формирователи сигналов записи и считывания и формирователи сигналов от датчиков.

4.1. Аппаратный интерфейс (принцип действия)

Все сигналы интерфейса НГМД являются логическими с уровнями ТТЛ (транзисторно-транзисторной логики), активный уровень низкий. Логически интерфейс довольно прост. Для того чтобы заставить накопитель работать, его нужно выбрать сигналом Drive Sel и запустить мотор шпинделя сигналом Motor On. Для выборки накопитель имеет четыре сигнала DS0...DS3. но отзывается только на один из них, определенный установкой джамперов. Выбранный накопитель воспринимает управляющие сигналы от контроллера и передает контроллеру свои выходные сигналы. О том, что накопитель выбран, свидетельствует светодиодный индикатор на его лицевой панели.

Для перемещения головок на один шаг контроллер должен подать импульс Step; направление перемещения определяется уровнем сигнала Direction: при низком уровне (сигнал активен) перемещение происходит в сторону центра диска (номер трека увеличивается). Нулевой трек контроллер находит, перемещая головки от центра до появления сигнала Track 00. Выбор номера головки производится сигналом Side 1. Начало трека накопитель отмечает импульсом Index, который вырабатывается при прохождении индексного отверстия вращающейся дискеты мимо датчика. Считываемые данные в закодированном (MFM) виде (но усиленные и сформированные в ТТЛ-сигнал) поступают от накопителя по линии Read Data. Для включения режима записи служит сигнал Write Gate, закодированные данные в цифровом виде поступают от контроллера по линии Write Data. Если установлена дискета, защищенная от записи, накопитель сообщает об этом сигналом Write Protect. Для снижения тока записи, которое требуется при работе накопителей высокой плотности (HD) с дискетами DD и QD предназначен сигнал Reduce Write, его иное название — Low Current, или FDHDIN. Для переключения головок в режим «вертикальной записи» (особый режим, применяемый для дискет 2,88 Мбайт) служит сигнал FDEDIN. Оба эти сигнала вырабатываются контроллером, но для самого дисковода они дублируются сигналами от датчиков типа дискеты (сигнал FDEDIN необязателен, дисковод сам переключается по сигналу от датчика). Однако практически все контроллеры сами управляют линиями интерфейса, соответствующими сигналам от этих датчиков. В этом управлении учитываются тип дисковода, описанный в CMOS Setup, и заказанный формат дискеты. Сигнал Reduce Write (низкий уровень) формируется контроллером при любом обращении к дисководу, описанному в CMOS как HD (High Density — высокая плотность, емкость  1,44 Мбайт), для работы с дискетами DD или QD (360 или 720 Кбайт).

Накопители HD при смене дискеты устанавливают сигнал Disk Changed, который сбрасывается после обращения к этому накопителю.

Заметим, что в интерфейсе нет никаких сигналов, прямо информирующих контроллер о готовности - наличии установленной дискеты. Контроллер может определить готовность, лишь выбрав накопитель и запустив мотор. Тогда отсутствие импульсов Index будет означать неготовность (нет дискеты, дискета не зафиксирована на шпинделе, не подключен дисковод, интерфейс или питание, и т. д.). Наличие дисковода контроллер может определить с помощью команды рекалибровки  при ее выполнении дисковод должен подать сигнал Track00.

Все НГМД, применяемые в PC, независимо от типа и размера имеют одинаковый интерфейс и унифицированные 34-контактные разъемы двух типов: с двухрядными штырьковыми контактами у устройств 3,5" и печатными двусторонними ламелями у устройств 5". Используемый в PC кабель-шлейф имеет перевернутый фрагмент из семи проводов с номерами 10-16 (рис.3). Этот поворот позволяет подключать к контроллеру одним шлейфом до двух НГМД, причем адрес накопителя определяется его положением на шлейфе: для привода А фрагмент перевернут, для В — нет. Универсальный шлейф с пятью разъемами, изображенный на рисунке, позволяет подключать пару любых дисководов (3х или 5-и дюймовых), которые должны располагаться в разных зонах шлейфа. Некоторые разъемы могут и отсутствовать, что сковывает свободу конфигурирования дисководов. В табл.3 описан интерфейсный кабель с сигналами, приходящими на разные накопители. Направление сигналов (I/O ввод-вымол) указано относительно контроллера. Формирователи выходных сигналов накопителя имеют выход типа «открытый коллектор». Интерфейс подразумевает наличие терминаторов (нагрузочных резисторов) для каждой сигнальной линии устройства. Теоретически их предполагалось включать только на последнем дисководе в шлейфе, практически же их никогда и не отключают. В современных трехдюймовых накопителях используется «распределенный терминатор» резисторы с относительно высоким сопротивлением (1-1,5 кОм), постоянно соединяющие входные линии интерфейса с шиной +5 В. Низкие частоты интерфейсных сигналов позволяют не задумываться о точности согласования импеданса шлейфа и сопротивления терминатора. Однако если на шлейфе стоят только старые 5-дюймовые накопители со снятыми терминаторами, они могут отказаться надежно работать (выходные линии с открытым коллектором останутся без нагрузки).

Контроллер НГМД и интерфейсный кабель, принятый в PC, позволяют адресоваться к одному из двух накопителей и включать двигатель сигналами Drive_Sel_0 и Motor_On_А для накопителя А и Drive_Sel_1 и Motor_On_В  для накопителя В. При этом на обоих накопителях джамперы устанавливаются так, что они отзываются на сигнал DS1 (12 контакт разъема).

Обычно джамперы на дисководе обозначаются DS0/DS1/DS2/DS3 и следует установить джампер DS1. Принятая система выборки позволяет все дисководы конфигурировать однотипно, а адрес задавать положением на шлейфе.

Таблица 4.1. Кабель интерфейса НГМД

Контроллер

Дисковод В

Дисковод А

Контакт1

Сигнал

I/O

Контакт1

Сигнал

Контакт1

Сигнал

2

FDHDIN

(Reduce Write)

O

2

Low Current

2

Low Current

4

Резерв

4

Резерв

4

Резерв

6

FDEDEIN

6

FDEDIN (DS3)

6

FDEDIN (DS3)

8

Index

I

8

Index

8

Index

10

Motor On A

O

10

DS0

16

Motor2

12

Drive Sel 1

O

12

DS12

14

DS2

14

Drive Sel 0

O

14

DS2

12

DS12

16

Motor On В

O

16

Motor2

10

DS0

18

Direction

O

18

Direction

18

Direction

20

Step

O

20

Step

20

Step

22

Write Data

O

22

WData

22

Wdata

24

Write Gate

O

24

WGate

24

Wgate

26

Track 00

I

26

TR 00

26

TROO

28

Write Protect

I

28

WProt

28

WProt

30

Read Data

I

30

RData

30

Rdata

32

Side 1

O

32

Side 1

32

Side 1

34

Disk Changed

I

34

DC

34

DC

1 Нечетные контакты 1-33 являются землей.

2 Пара сигналов, обеспечивающая выборку FDD (Motor On А и Drive Sel 0 для дисковода А: и Motor On В и Drive Sel 1 для дисковода В:.

Рис. 3.1. Кабель интерфейса НГМД

Рис. 3.2. Подключение кабеля интерфейса НГМД к системной плате

4.2. Контроллер НГМД

Программное взаимодействие с НГМД производится через контроллер накопиmелей на гибких дисках ( Floppy Drive Controller, FDC), как правило, при участии контроллера DMA и прерываний. Программирование контроллера НГМД для выполнения операций с дискетами довольно хлопотное занятие. Все функции, необходимые для использования НГМД в качестве устройств хранения данных, реализованы сервисами BIOS INT 13h и ОС. Игнорирование сервисов BIOS и даже ОС оправданно в основном лишь для нетривиальных задач наподобие работы с ключевыми дискетами и т. п.

Контроллер2 FDC АТ поддерживает два накопителя; он позволяет работать со скоростью передачи данных 500 Кбит/с для плотности HD (1,2 и 1,44 Мбайт). Такой режим называют 2М. Современные контроллеры, поддерживающие накопители ED (2.88 Мбайт), должны обеспечивать и скорость 1000 Кбит/с (4М). В режиме 2М при частоте вращения 300 об/мин (у дисководов HD 3.5") на одном треке умещается 18 секторов. Режим 4М, похоже, так и останется невостребованным. Выбор скорости задает частоту синхронизации при записи и форматировании, а также настраивает цепи фазовой автоподстройки частоты (ФАПЧ) сепаратора данных контроллера. Сепаратор данных способен устойчиво выделять данные и синхросигнал из сигнала, принятого с головки, лишь при небольших (порядка ±10 %) отклонениях скорости от номинала, поэтому скорость должна быть правильно выбрана для всех операций обмена данными с диском.

В карте ресурсов AT имеется место под два контроллера НГМД:

♦   FDC   АТ#1   (стандартный   или   основной)   занимает   порты   с   адресами 3F0h-3F7h (как и FDC XT);

♦   FDC АТ#2 (дополнительный) занимает порты с адресами 370Ь  377h.

Контроллеры вырабатывают запрос аппаратного прерывания IRQ6 (BIOS INT 0Eh) по окончании выполнения внутренних операций. Для обмена данными может использоваться канал DMA2. Назначение регистров контроллера приведено в табл.2.2. Адрес регистра состояния FDC 3F7 (377) совпадает с адресом регистра HDC (давно не используемого), в связи с чем раздельная работа регистров FDC и HDC расположенных на разных платах, проблематична. В нормальном (не диагностическом) режиме из битов регистра состояния FDC интерес представляют только бит 7 — признак смены носителя.

Контроллер НГМД может быть использован и для работы со стримерами; специально для этого в контроллере имеется регистр TDR (Tape Drive Register), пара младших битов которою задает номер устройства, которому соответствует стример (для него иначе настраиваются цени ФАПЧ сепаратора данных).

Таблица 2.2. Регистры контроллера НГМД

Адрес

Назначение (R — чтение, W — запись)

3F2

(372)

RW: DOR (Digital Output Register) — регистр управления: биты [4:7] — включение моторов А. В. С. D: 1 — включен; бит 3: 1 — разрешение использования DMA2 и IRQ6: бит 2: 0 — сброс. 1 — разрешение контроллера; биты [1:0] — номер выбранного привода 0-3. В AT биты 6. 7 и 1 не используются

3F3

(373)

RW. TDR (Tape Drive Register) — регистр стримера: биты [1:0] — номер устройства, которому соответствует стример. По сбросу устанавливается 00, но это означает отсутствие стримера (вместо дисковода А стимер не поставить)

3F4

(374)

R: MSR (Main State Register) — главный регистр состояния: бит 7 (DQM) — запрос: 1 — готов к приему-передаче байта; бит 6 (DIO) — направление данных: 1 — от FDC к CPU; бит 5 (NON DMA) — использование DMA: 1 — DMA не используется; бит 4 (CMD BSY): 1 — контроллер занят выполнением команды; биты [0:3] — привод А. В, С, D занят (в AT используются только биты 0,1)

3F4 (374)3

W: DSR (Datarate Select Register) — регистр выбора скорости: бит 7:1 — сброс контроллера (обнуляется автоматически); бит 6:1 — отключение питания контроллера; бит 5:1 — разрешение внешней ФАПЧ (должен быть 0); биты [4:2] — выбор времени предкомпенсации записи (000 — предкомпенсация по умолчанию); биты [1:0] — скорость обмена (00 - 500 Кбит/с, 01 — 300 Кбит/с, 10 - 250 Кбит/с, 11 — 1 Мбит/с)

3F5 (375)

RW: DR (Data Register) — регистр команд/данных

3F7 (377)

W. CCR (Configuration Control Register) — регистр параметров контроллера (AT): биты [7:2] — не используются, биты [1:0] — скорость обмена (00 — 500 Кбит/с. 01 - 300 Кбит/с, 10 - 250 Кбит/с, 11-1 Мбит/с)

3F7 (377)

R: DIR (Digital Input Register) — регистр состояния (только в AT): бит 7:1 — смена носителя (чтение инвертированной линии DC); биты [6:0] — не используются, при чтении не выводятся на шину данных

4.3. Программное взаимодействие с дисководами

Все операции с дискетами выполняются по командам, посылаемым хостом (ядром компьютера) в регистр DR (3F5) согласно состоянию битов регистра MSR (3F4). Запись байта команды или данных в регистр DR разрешается лишь при текущем значении MSR=10xxxxxxb, чтение — при MSR=1 lxxxxxxb. Для записи-чтения этого регистра приходится использовать отдельные подпрограммы, не только дожидающиеся разрешающих значений MSR. но и имеющие аварийный выход по тайм-ауту. Кроме того, хост выполняет запись в регистр DOR (3F2) для запуска-останова дисковода, а также в CCR (3F7) или DSR (3F4) — для выбора скорости передачи данных.

В операциях обмена данными с дискетами обычно участвует контроллер DMA, и он должен быть своевременно проинициализирован. Сигнал ТС (завершение цикла DMA) используется как признак завершения фазы данных. В общем виде процедура обмена данными состоит из следующих шагов.

1.   Запуск мотора и выбор дисковода (записью в регистр DOR).

2.   Установка скорости (записью в регистр CCR).

3.   Выполнение команды рекалибровки.

4.   Ожидание раскрутки двигателя (если мотор работает еще менее 0,5 с).

5.   Позиционирование головки на требуемый цилиндр.

6.   Инициализация контроллера DMA.

7.   Посылка команды чтения-записи.

8.  Ожидание прерывания от контроллера. Прерывание произойдет, когда завершится фаза исполнения, во время которой контроллер обычно обменивается данными с хостом. Если за определенное время прерывание не получено, фиксируется неудачная попытка обращения с ошибкой тайм-аута.

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

Помимо описанного механизма имеется механизм автоматического выключения мотора НГМД, если к нему долго нет обращений. Для этого в фиксированном месте ОЗУ (BIOS Data Area, ячейка 0:0440) имеется счетчик времени работы мотора НГМД и адрес дисковода (в позиционном коде), мотор которого включен (0:043F). При каждом обращении к дискете (когда в регистре DOR устанавливается бит включения мотора) в счетчик времени заносится константа, соответствующая выдержке на отключение (по умолчанию 2 с). Обработчик аппаратного прерывания от таймера IRQO (BIOS INT 08h) с интервалом около 55 мс декрементирует счетчик времени и по его обнулению отключает мотор (записью в регистр DOR). Таким образом, если в течение заданного интервала нет обращений, мотор автоматически выключается. Конечно, этот механизм работает, лишь когда BIOS отрабатывает аппаратные прерывания от таймера, так что не отключающийся мотор дисковода может быть косвенным признаком «зависания» компьютера.

Исполнение каждой команды имеет три фазы:

1. Фаза команды. Контроллер устанавливает биты DQM=1 и DIО=0, что является приглашением к вводу команды. В регистр DR посылается байт команды, после которого посылаются байты параметров в строго предписанном порядке. На прием каждого байта контроллер отзывается обнулением DQM на время обработки. После получения последнего требуемого байта DQM остается обнуленным, и контроллер переходит в фазу исполнения. В качестве параметров фигурируют номер цилиндра С, номер головки Н, номер сектора R, код размера N или длина поля данных сектора DTL, номер последнего сектора на треке EOT, число секторов SC, длительность зазоров GPL и некоторые другие данные.

2.   Фаза исполнения требует передачи данных от хоста к контроллеру или обратно, передача может происходить как в режиме DMA, так и чисто программно (PIO). В режиме DMA обмен выполняется по сигналам DRQ и DACK# используемого капала. Если DMA не используется, то запросом на передачу являются бит DQM и сигнал прерывания. По окончании фазы вырабатывается сигнал прерывания (и его признак в регистре ST0), и контроллер переходит в фазу результата.

3.   В фазе результата DQM=l и DIO=1 хост должен считать байты результата из DR. после чего биты установятся в значение DQM=1 и DI0=0, что соответствует переходу в фазу приема команды.

С момента получения команды и до окончания фазы результата в регистре MSR бит CMD BSY=1. Контроллер всегда можно принудительно сбросить (перевести в начало фазы команды) записью в регистр DOR или DSR. Если контроллер получает не поддерживаемую команду, он сразу выставляет DQM=1 и DIO=1, что является указанием на необходимость чтения DR. Хост должен прочитать из DR код состояния, в котором будет значение 80h (недопустимая команда).

В современных контроллерах НГМД имеется буфер FIFO глубиной 16 байт, работающий при передаче данных (но не команд и параметров) через регистр DR; в «историческом» контроллере i8272 буфера FIFO не было. Логика общения с регистром DR остается той же. Буфер должен быть своевременно обслужен, чтобы не происходило его переполнения или опустошения. Логика буфера устанавливает запрос данных так, чтобы не отвлекать хост «по пустякам». При чтении из DR запрос устанавливается, когда в буфере имеется 16-<порог> байтов или же считан последний байт сектора. При записи в DR запрос первоначально устанавливается и удерживается до заполнения буфера, впоследствии он устанавливается снова, когда в буфере остается <порог> байтов. Переход в фазу результата происходит, когда завершается обмен хоста с DR и буфер опустошается. Общение с регистром DR при записи команд и параметров должно выполняться согласно значениям старших битов регистра MSR (буфер FIFO при этом не используется).

Позиционирование головок на требуемый цилиндр традиционно выполняется командой SEEK. Современные контроллеры имеют возможность неявного поиска (implied seek), которой не было в i8272. Если неявный поиск разрешен, то команда SEEK в большинстве случаев не нужна контроллер выполняет требуемое позиционирование при исполнении команд чтения, записи и верификации. В команде форматирования неявный поиск не предусмотрен. Если неявный поиск запрещен, то командам чтения-записи должна предшествовать следующая последовательность команд:

1.   SEEK     позиционирование.

2.   SENSE INTERRUPT STATUSзавершение команды позиционирования.

3.   READ ID     проверка установки головок на требуемый трек.

Во время выполнения команд поиска (но не относительного) и рекалибровки контроллер находится в состоянии не занято, так что допускается перекрытие команд: во время выполнения команды одним приводом контроллер может поучать команды, адресованные другим приводам.

Контроллер работает с механикой привода, обеспечивая требуемые задержки времени между действиями. Параметры быстродействия механики задаются тремя таймерами, программируемыми командой SPECIFY. Таймер SRT определяет скорость позиционирования (частоту подачи импульсов STEP#). Таймеры HUT и HLT управляют задержкой, требуемой для успокоения головок. Для логики контроллера головки могут находиться в одном из двух состояний. Когда головка загружена (loaded), контроллер может считывать и записывать данные без задержки. Если на момент прихода команды головка выгружена (unloaded), то до начала считывания-записи данных требуется время успокоения, заданное таймером HLT. После этой задержки в течение всего времени выполнения операции головка считается загруженной, а в состояние выгруженной она перейдет после окончания операции обмена с диском через интервал, заданный таймером HUT. В таблице параметров дискет DPT имеется параметр «время успокоения головок после позиционирования». Если позиционирование выполняется командой SEEK, этот параметр используется при программной задержке, организуемой хостом после поиска требуемого цилиндра. При неявном позиционировании задержка определяется таймером HLT.

После включения мотора диск должен успеть набрать заданную скорость вращения, для чего приводу 3,5" требуется около 300 мс. При большом отклонении скорости от номинальной чтение данных происходит с ошибками. Задержка, учитывающая разгон двигателя, реализуется программно. При чтении первое обращение можно ускорить, если начинать попытки чтения сразу после включения мотора. Как только скорость достигнет значения, достаточного для захвата цепей ФЛПЧ в сепараторе данных, ошибки исчезнут и результаты чтения можно будет использовать. За целостность данных опасаться не следует, поскольку CRC-контроль достаточно надежен. При записи и тем более форматировании задержку на разгон двигателя нужно соблюдать обязательно.

Поскольку для операций чтения-записи требуется установить частоту передачи, возникает задача ее автоматического определения. Для этого, выждав время на разгон двигателя, делаю! попытки чтения идентификаторов с разными значениями скорости передачи. Та скорость, на которой команда READ ID завершается без ошибок, принимается за истинную. Далее остается прочитать на этой скорости загрузочный сектор дискеты, по которому можно уже уточнить ее формат.

4.4. Команды контроллера НГМД

Каждая команда кодируется байтом, записываемым хостом в регистр DR. В кодах команд чтения, записи, верификации и форматирования бит 7 (МТ) является признаком мультитрековых операций, а бит 6 (MFM) - признаком кодирования по методу MFM. В IBM PC всегда MFM=1 (кодирование FM не используется) и МТ=1, что означает автоматический переход на головку 1 после обработки последнего сектора головки 0 на том же цилиндре, если операция еще не закончена. В кодах команд чтения данных и верификации бит 5 (SK) указывает на необходимость пропуска секторов с удаленными данными. Если SK=0, то на чтении удаленного сектора выполнение остановится, если SK=1, то удаленный сектор пропускается контроллер переходит к следующему. На установку бита СМ в байте состояния ST2 бит SK не влияет. В команде чтения удаленных данных при SK=1 пропускаются нормальные данные, а при SK=0 читаются все секторы, и нормальные, и удаленные.

Команда чтения данных READ DATA (код С6 при SK=0 или Е6 при SK=1) после получения 8 байт параметров переводит контроллер в режим чтения данных. Контроллер загружает головку и ждет окончания заданного времени успокоения (если она была разгружена), после чего считывает идентификаторы секторов. Найдя требуемый, он считывает его поле данных и передает данные хосту (обычно по каналу DMA). Далее контроллер инкрементирует номер сектора и считывает сектор с соответствующим логическим номером. После чтения последнего сектора головки 0 контроллер переходит к головке 1 на том же цилиндре, таким образом, мультисекторные передачи возможны в пределах целого цилиндра. После завершения операции байты С. Н и R соответствуют сектору, следующему за последним успешно считанным, с учетом EOT. При этом, если достигнут конец трека, то устанавливается номер сектора R=01 и от номера головки инвертируется, а если достигнут конец цилиндра, то инкрементируется номер цилиндра. По сигналу ТС или по переполнению регистра DR передача данных хосту завершается, но если сектор считан не до конца, контроллер продолжает считывание сектора для проверки CRC. Если сектор имеет большую длину, чем заказано контроллеру битами N или DTL, передается только требуемое количество байтов от начала сектора, а остальные пропускаются. Если в процессе чтения обнаруживаются ошибки CRC, не находятся требуемые идентификаторы или обнаруживаются идентификаторы удаленных секторов, то чтение завершается аварийно и устанавливаются соответствующие биты в байтах состояния.

Команда чтения удаленных данных READ DELETED DATA (код СС при SK=() или ЕС при SK=1) работает аналогично, но она читает данные из секторов, имеющих маркеры удаленных данных. Маркерами удаленных данных обычно помечаются сбойные секторы, но их можно использовать и для других нестандартных целей.

Команда чтения трека READ TRACK (код 42) работает аналогично обычному чтению, но передает хосту поля данных всех секторов подряд, следующих после индексного импульса. Число передаваемых секторов определяется байтом EOT. Многосекторный режим и пропуск секторов не предусмотрены, так что МТ=0 и SK=O.

Команда записи данных WRITE DATA (код С5) работает подобно команде чтения данных, но в фазе исполнения контроллер принимает данные от хоста и записывает их в поля данных требуемых секторов. Контроллер считывает идентификаторы секторов и, когда появляется требуемый сектор, переключается в режим записи и запрашивает очередные данные от хоста. Заполнив поле данных сектора, он дополнительно записывает в сектор подсчитанное значение CRC. Если контроллер обнаруживает ошибку CRC в прочитанных идентификаторах, он устанавливает бит DE в регистре состояния ST1 и прекращает операцию. Операция завершается по сигналу ТС или по опустошению буфера. Если хост передает данных меньше, чем заказано байтами N или DTL, то остаток ноля данных сектора заполняется нулями.

Команда записи удаленных данных WRITE DELETED DATA (код С9) работает подобно обычной записи, но перед полем данных записывает вместо нормального маркера признак удаленных данных.

Команда верификации VERIFY (код D6) работает аналогично команде чтения данных, но передача полей данных к хосту не производится, а лишь проверяются CRC-коды идентификаторов и полей данных. Байты параметров и результатов те же, что приведены ранее, но в адресном байте бит 7 ЕС (Enable Count) управляет трактовкой последнего байта параметров: при ЕС=1 этот байт становится счетчиком проверяемых секторов SC. При ЕС=О последний байт параметров (DTL) должен быть установлен в FF; операция завершается на проверке сектора с номером EOT. Сигнал ТС в качестве указания на окончание операции использоваться не может (передач нет). При некорректно заданных параметрах верификация может завершиться безуспешно, и фаза результата будет недействительной.

Команда форматирования трека FORMAT TRACK (код 4D) записывает на всем треке структуру идентификаторов, а поле данных расписывает заполнителем. За командой должны следовать 5 байтов параметров:

♦ адресный байт; ♦ код размера сектора N (N=2 - 512 байт); ♦ число секторов на треке;

♦ длина межсекторного зазора 6АРЗ: ♦ байт заполни имя полей данных.

Далее начинается фсит исполнения, во время которой хост передает байты полей идентификаторов, по А байта для каждого сектора:

♦ номер цилиндра С; ♦ номер головки Н; ♦ номер сектора R; ♦ код размера сектора N.

В фазе результата контроллер передает 7 байт:

♦  состояние ST0; ♦  состояние ST1; ♦  состояние ST2; ♦  4 байта с неопределенным содержанием.

Команда рекалибровки RECALIBRATE(код 07) позиционирует головки на нулевой трек. По срабатыванию датчика нулевого цилиндра устанавливается бит SE. Если за 80 шагов срабатывания датчика добиться не удается, устанавливается бит ошибки ЕС. Команда требует только один адресный байi с нулевым номером головки. По окончании выполнения вырабатывается запрос прерывания. Фазы результата нет: чтобы считать состояние, требуется команда SENSE INTERRUPT STATUS.

Команда поиска SEEK (код OF) устанавливает головки на требуемый номер цилиндра NCN (New Cylinder Number). При неравенстве NCN и текущего номера цилиндра PCN (Present Cylinder Number), связанного с выбранным приводом, контроллер вырабатывает требуемое число импульсов позиционирования с нужным направлением. Команда требует два байта параметров:

♦  адресный бант;

♦  требуемый номер цилиндра NCN.

По окончании позиционирования вырабатывается запрос прерывания. Фазы результата нет; чтобы считать состояние, требуется команда SENSE INTERRUPT STATUS.

Команда относительного поиска RELATIVE SEEK (код 81 или CF) позволяет переместить головки на требуемое число цилиндров внутрь (код CF) или наружу диска (код 8F). Команда аналогична обычному поиску, но вместо NCN задается RCN (Relative Cylinder Number) - число цилиндров, на которое требуется переместить головки.

Команда чтения прерывания SENSE INTERRUPT STATUS (код 08) используется как завершающая после команд рекалибровки и позиционирования Контроллер сбрасывает запрос прерывания и позволяет установить его причину. Команда не требует параметров. В фазе результата передает два байта:

♦   состояние STO;

♦  текущий номер цилиндра PCN после поиска или рекалибровки.

Если команда выдана, когда запроса прерывания нет, контроллер возвращает STO=80 (недопустимая команда).

Команда чтения состояния привода SENSE DRIVE STATUS позволяет прочитать значение сигналов интерфейса. Требует один адресный байт. В фазе результата передает один байт состояния ST3:

♦  бит 7=0  не используется;

♦  бит 6 WP (Write Protect)     сигнал защиты записи;

♦  бит 5=0 не используется;

♦  бит 4 ТО (Track 0) сигнал датчика нулевого цилиндра;

♦  бит 3=0 — не используется;

♦  бит 2 HD (Head Address)  бит выбора головки;

♦  биты [1:0]     биты выбора привода.

Команда чтения идентификатора READ ID (код 4А) считывает координаты и код размера (С, Н, R, N) из первого успешно считанного идентификатора адреса сектора. Команда требует только один адресный плит. В фазе результата сообщаются те же 7 байт, что и команды чтения-записи. Если эту команду подавать многократно, можно определим, последовательность номеров секторов на дорожке.

Команда спецификации SPECIFY (код 03) задает параметры привода двумя байтами спецификации (их значение хранится в первых двух байтах таблицы параметров дискет):

♦ Байт 1, HUT и SRT:

• биты [3:0] - HUT (Head Unload Time) - время разгрузки головок: 1=32 мс, 2=64 мс... F=480, 0=512 мс для скорости 250 Кбит/с. Для скоростей 300, 500 и 1000 Кбит/с значения меньше в 1,2,  2 и 4 раза соответственно;

•  биты [7:4] - SRT (Step Rate Time) - время перемещения головок на один шаг: 0=32 мс, 1=30 мс… F=2 мс для скорости 250 Кбит/с. Для скоростей 300, 500 и 1000 Кбит/с значения меньше в 1,2,  2 и 4 раза соответственно.

♦   Байт 2, HLT и ND:

• биты [7:1] - HLT(Head Load Time) - время успокоения после загрузки головок: 01=4 мс, 02=8 мс, 7F=508 мс, 00=512 мс:

• бит 0 - ND (No DMA): 1 = DMA не используется.

Фазы результата нет, прерывание не вырабатывается.

Команда PERPENDICULAR MODE (код 12) служит для перестройки контроллера на формат секторов дисков 2,88 Мбайт с перпендикулярной (вертикальной) записью. Требует один байт параметров, Контроллер i8272 эту команду и формат не поддерживает.

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

Команда определения версии контроллера VERSION (код 10) позволяет идентифицировать контроллер. Параметров не требует, возвращает один байт результата (90 расширенный контроллер i82077AA, пo спецификации которого построено данное описание).

Команда конфигурирования CONFIGURE (код 13) задает параметры контроллера. Требует три байта параметров:

♦ Байт нулей.

♦ Байт конфигурации:

• бит 7=0;

• бит 6 - EIS (Enable Implied Seek) - разрешение неявного поиска;

• бит 5 - EFIFO - разрешение работы буфера FIFO (при EFIFO=O);

• бит 4 - POLL разрешение полинга (опроса состояния устройств, в PC не используется);

• биты [3:0] - FIFOTHR - порог заполнения буфера FIFO, при котором генерируется запрос данных.

♦   Номер трека, начиная с которого выполняется предкомпенсация (PRETRK).

Команда блокировки LOCK (код 94 для LOCK=1 и 14 для LOCK=O) позволяет предотвратить сброс параметров FIFO при выполнении программного сброса. Команда специфична для контроллера и предназначена только для использования системным ПО (BIOS). Параметров не требует, в фазе результата возвращает 1 байт, в котором бит 4 несет признак LOCK.

Команда чтения регистров DUMPREG (код 0Е) служит для отладочных целей. Параметров не требует, в фазе результата пылает 10 байтов:

♦  текущий номер цилиндра PCN для привода 0;

♦  текущий номер цилиндра PCN для привода 1;

♦  текущий номер цилиндра PCN для привода 2;

♦  текущий номер цилиндра PCN для привода 3;

♦  байт с HUT и SRT (см. команду SPECIFY);

♦  байт с HLT и ND (см. команду SPECIFY):

♦  байт SC/E0T;

♦  байт признаков, устанавливаемых командами LOCK (бит 7) и PERPENDICULAR MODE (биты [6:0]);

♦  два байта параметров, устанавливаемых командой CONFIGURE.

1 Раньше контроллер часто выносили на специальную карту расширения (мультикарту) вместе с интерфейсом НЖМД.

2 Все контроллеры, применяемые в IBM PC, обеспечивают совместимость с «исторической» микросхемой контроллера NEC PD765, которая является аналогом i8272.

3 Регистр DSR обеспечивает совместимость с контроллером i8272; в современных контроллерах НГМД на АТ-совместимых компьютерах вместо него используют CCR, поскольку требуется только задание скорости.

PAGE  4


 

А также другие работы, которые могут Вас заинтересовать

71981. Переставна властивість дії множення. Розв’язування нерівностей. Складені задачі 41.5 KB
  Мета: ознайомити учнів з переставною властивістю дії множення та розв’язанням нерівностей із зміною способом добору, закріпити вміння розв’язувати складені задачі, розвивати уважність, вміння абстрагувати від конкретного змісту задачі, виховувати інтерес до астрономії.
71982. Нумерація чисел 21-100. Запис чисел під диктовку. Порівняння чисел і знаходження значень виразів 56.5 KB
  Мета: вчити учнів записувати під диктовку числа першої сотні; вправляти в порівнюванні чисел і знаходженні значень виразів; розвивати обчислювальні навички; виховувати інтерес до вивчення математики. Обладнання: геометрічний роздатковий матеріал, таблиця першої сотні чисел...
71983. Нумерация многозначных чисел. Сложение и вычитание многозначных чисел. Повторение 150.5 KB
  Повторить и закрепить знания учащихся по темам «Нумерация многозначных чисел», «Сложение и вычитание многозначных чисел», развивать умение читать, записывать числа в пределах млн., устный счет, логическое мышление, память; совершенствовать умение решать составные задачи, вычислять периметр многоугольника...
71984. Розв’язування прикладів і задач на додавання і віднімання круглих десятків. Задачі на знаходження третього доданка 49.5 KB
  Мета: вправляти учнів у розв’язуванні прикладів і задач на додавання і віднімання круглих десятків; формувати вміння розв’язувати задачі на знаходження третього доданка; виховувати любов до природи. Розвиток математичних умінь. Він пропонує нам розв’язати приклади № 315 самостійно.
71985. Одиниці вимірювання маси. Перетворення одиниць вимірювання маси. Задачі,що розв’язуються за допомогою відношення 44.5 KB
  Мета: систематизувати знання учнів про одиниці вимірювання маси, формувати уміння замінювати одиниці вимірювання маси іншими, вправляти у розв’язуванні задач способом відношення, повторити одиниці вимірювання довжини, дроби.
71986. Додавання двоцифрових чисел без переходу через десяток. Задачі, що містять відношення «на… більше» («на… менше») 43 KB
  Мета: учити учнів додавати двоцифрові числа без переходу через десяток творчо працювати із задачами що містять відношення на більше на менше; розвивати логічне мислення уміння працювати в парах; виховувати любов до природи інтерес до математики.
71989. Число й цифра 7. Утворення числа способом прилічення 1. Порівняння чисел у межах 7. Попереднє і наступне число. Написання цифри 7 88.5 KB
  Тож гаразд часу не гаєм І урок вже починаєм А урок сьогоднішній нехай всім принесе задоволення від дуже потрібної роботи. Сьогодні ми вивчимо цифру 7 яка позначає число сім. Цифра сім як кочерга це її стирчить нога. Сім яскравих кожен знає Кольорів веселка має.