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

## Принцип работы

Контроллер дисководов также называется контроллером накопителя на гибких магнитных дисках (НГМД).

Схема приведена на листе 14 и обеспечивает подключение к микроЭВМ до четырех накопителей диаметром 3.5; 5.25 или 8 дюймов. Возможно осуществление режимов односторонней и двусторонней записи с одинарной или двойной плотностью. Контроллер реализован на базе БИС КР1818ВГ93 (D4 (14.2)) и порта B адаптера параллельного интерфейса D17 (13.35), запрограммированного на вывод.

Интерфейс D17 (13.35) нам уже знаком, только теперь используется его другой порт. Адресация D4 (14.2) идет по линиям CSCOM, А0 и А1. Сигналы 1WR (запись) и RDEV (чтение) осуществляют связь процессора с контроллером по буферированной шине данных.

Давайте сначала разберемся с сигналами, которыми управляет регистр D17 (13.35). Сигналы DS0, DS1, DS2 и DS3 отвечают за выбор накопителя. Установка единицы в соответствующем разряде регистра сформирует соответствующий сигнал низкого уровня на выходе контроллера.

Здесь уместно добавить, что НГМД требует, чтобы активные уровни всех сигналов были низкие. Поэтому выходные сигналы как правило инвертируются.

Сигнал SIDE адресует сторону выбранного дисковода. Установка нуля выбирает сторону "0", установка единицы - сторону "1".
Сигнал MON используется для включения двигателя НГМД. Установка единицы в разряде 5 регистра D17 запускает ждущий одновибратор D5 (14.31), выход которого формирует сигнал MON. Времязадающая цепочка C5, R2 подобрана так, что через три секунды одновибратор возвращается в исходное состояние, формируя сигнал MON высокого уровня длительностью три секунды. Одновибратор D5 имеет одно полезное свойство, он перезапускаемый, т.е., если до окончания выходного импульса одновибратора на его входе опять создать положительный перепад потенциала, то выходной импульс с этого момента опять будет продолжаться три секунды. Таким образом сигнал MON можно сделать активным сколь угодно долго, перезапуская одновибратор с периодом перезапуска меньше трех секунд.

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

Оставшиеся два старших разряда в регистре управления D17 определяют режим работы НГМД. Из-за большого разнообразия различных типов применяемых НГМД необходимо уметь настраивать контроллер на различные режимы работы. Как видно из схемы (лист 14) сигналы DDEN (бит 6) и 5" (бит 7) управляют работой мультиплексора D13 (14.1) и выбирают нужную тактовую частоту как для БИС D4, так и для счетчика D6 (14.3). В таблице 10 дается описание различных режимов работы НГМД и зависимость их от сигналов DDEN и 5".

Таким образом с помощью регистра D17 можно программно выбрать накопитель, сторону диска, режим работы и включить мотор. Все остальные манипуляции производятся с БИС D4 и это уже обсуждалось в предыдущей главе. Здесь мы обсудим метод записи на диск. Как видно из таблицы 10 в колонке "Метод записи" стоят сочетания букв FM и MFM. Это аббревиатура от английских слов Frequency Modulation (частотная модуляция) и Modify Frequency Modulation (модифицированная частотная модуляция).

В зависимости от уровня напряжения на линии DDEN контроллер кодирует загруженный байт данных по методу частотной модуляции FМ (при высоком уровне) или по методу модифицированной частотной модуляции МFМ (при низком уровне) и в последовательном коде выводит его на выход WRD микросхемы контроллера. Временные диаграммы кодирования данных приведены на рисунке 11. При обоих способах кодирования в последовательном потоке информации содержатся данные ("D") и синхросигналы ("С"). При способе кодирования FМ каждый битовый элемент содержит бит данных и синхросигнал. При способе кодирования МFМ синхросигнал помещается в битовом элементе только в том случае, если данные предыдущего и текущего битового элемента равны нулю.

Рассмотрим теперь, как выполняются команды контролллера. Управление перемещением головкой осуществляется контроллером по линиям STEP и DIR. Высокий уровень сигнала на линии DIR (или низкий после инвертора D3(14.5) задает направление перемещения головки к центру диска, низкий уровень - наоборот, от центра. Перемещение головки осуществляется низким уровнем сигнала (после инвертора D3(14.4)) на один шаг. Чтобы сместить головку на несколько шагов, контроллер должен менять уровень сигнала STEP через интервалы времени, определяемые командой процессора.

Физическое начало каждой дорожки отмечается на линии IP низким уровнем напряжения длительностью не менее 10 мкс при каждом обороте диска. Сигнал IP используется для синхронизации контроллера. Низкий уровень напряжения на линии ТР00 (нулевая дорожка) сигнализирует контроллеру, что головка записи-воспроизведения находится над нулевой дорожкой.

Как осуществляется запись данных на диск? В начале операции записи микропроцессор анализирует состояние входных линий готовности READYD и защиты записи WPRT и приступает к записи только при низком уровне напряжения на входе READYD и высоком уровне напряжения на входе WPRT. Запись данных контроллер выполняет, используя выходные линии микросхемы КР1818ВГ93 WR, C и D, EARL, LATE.

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

Данные записи WRD поступают в НГМД через схему цифровой компенсации данных, выполненную на микросхемах D0(14.32) и D7(14.8). Микросхема D7 это четырехразрядный сдвиговый регистр. Сигналом высокого уровня на входе EZ его выходы все время подключены. Если на входе EWR сигнал высокого уровня, то по отрицательнову фронту импульса на входе C происходит параллельная загрузка. При EWR = "0" происходит тактируемый сдвиг содержимого регистра в сторону старших разрядов, а в младший разряд загружаются данные с входа 0-> (в нашем случае ноль). Сигнал на вход управления работой регистра EWR поступает с инверсного выхода триггера D0. Попытаемся теперь разобраться в работе схемы.

Сигнал разрешения записи WG сбрасывает своим низким уровнем триггер D0 и все время держит его в состоянии сброса. При этом на инверсном выходе триггера сформирован сигнал высокого уровня, который "держит" регистр D7 в режиме параллельной загрузки. Если производится запись на диск, то сигнал WG становится сигналом высокого уровня, разрешая триггеру работать. Поскольку в старший разряд регистра D7 все время загружается ноль (соответствующий вход заземлен), то на К входе триггера будет сигнал низкого уровня. При передаче данных первый же импульс на выходе WRD контроллера, поступивший на J вход триггера, запишет в него ноль на инверсном входе и переведет регистр в режим сдвига.

В режиме сдвига при условии, что на вход J данные больше не поступают, первая же единица на выходе сдвигового регистра опрокинет триггер в исходное состояние, который в свою очередь переведет регистр в режим загрузки. Таким образом триггер D0 синхронизует работу сдвигового регистра с тактовой частотой, опрокидываясь импульсом данных. С выхода регистра D7 задержанные данные через инвертор D3(14.7) поступают по линии данных в НГМД.

Чтобы разобраться с задержкой данных в регистре D7, займемся тем, что загружается в регистр. Сначала предположим, что на выходах LATE и EARL сигналов нет, т.е. присутствуют напряжения низкого уровня, тогда в регистр с помощью инверторов D28(14.9) и D29(14.10) будет записано число 0010B и данные на выходе WD задержатся на два такта. Сигнал данных может сопровождаться или сигналом EARL(раньше) или сигналом LATE(позже). Очевидно, при сигнале EARL сигнал WD задержится на один такт (в регистр будет загружено число 0100B), а при сигнале LATE на три такта (в регистр будет загружено число 0001B).
Таким образом схема компенсации изменяет задержку выдачи данных в НГМД в зависимости от напряжений на выходах контроллера EARL и LATE.

Зачем нужна компенсация данных? Прежде всего отметим, что она используется только при методе записи MFM. В этом случае для надежной записи необходима коррекция данных, причем дисководы разных фирм требуют разной величины временной коррекции. В нашем случае схема рассчитана на дисководы фирмы TEАC и величина коррекции равна 250 нсек. Поэтому при использовании дисководов других фирм могут возникнуть затруднения. Мы надеемся, что наши читатели смогут победить эту проблему. Для этого нужно знать рекомедуемую величину коррекции для конкретного дисковода.

Нам осталось разобраться с чтением данных. Этот процесс осуществляется из адресуемого НГМД при низком уровне напряжения на входе READYD.

Данные чтения в формате FМ или МFМ поступают по линии RAWRD через микросхему D1(14.12) на вход одновибратора D5 (14.30). С выхода одновибратора отрицательный импульс длительностью 150 нс поступает на вход данных RD D микросхемы контроллера.
Для разделения потока информации на данные и синхроимпульсы используется счетчик D6(14.3), который формирует стробирующие сигналы, поступающие на вход RD C микросхемы контроллера.

При отсутствии сигналов RAWRD счетчик, тактируемый частотой 4 МГЦ или 2 МГц в зависимости от входов управления мультиплексора D13(14.1), формирует "окна" номинальной длительности 2 мкс при частоте 4 МГц.

При поступлении сигнала RAWRD отрицательный импульс с выхода одновибратора D5 загружает в младшие разряды счетчика код 011 сохраняя состояние старшего разряда без изменения. Поскольку счетчик считает на уменьшение, то через четыре такта уровень сигнала на выходе счетчика обязательно изменится. В результате с приходом импульса данных или синхроимпульса счетчик с задержкой в четыре такта начинает "отсчет времени". Разделение потоков данных и синхроимпульсов (стробирование данных) происходит из-за разного временного интервала между импульсами.

На этом обсуждение контроллера НГМД мы закончим. Для тех, кто ничего не понял в том, как осуществляется запись на диск и чтение с него, в качестве утешения рекомендуем обратиться к рисунку 12. На нем приведены временные диаграммы работы контроллера.

## Регистры

```
; УЗЕЛ СОПРЯЖЕНИЯ С НГМД

; В состав этого узла входят БИС контроллера НГМД КР1818ВГ93,
; регистр выбора и управления НГМД и одновибратор включения
; двигателя НГМД.

        ; Регистр выбора и управления НГМД

DRVREG  EQU     39H ; (порт B КР580ВВ55 #1)

; Этот регистр работает на вывод, но доступен программно и
; для чтения, поэтому состояние его разрядов можно изменять
; с помощью логических операций И, ИЛИ, ИСКЛЮЧАЮЩЕЕ ИЛИ.

; Разряды регистра выбора и управления

DS0     EQU     00000001B ; выбор НГМД #0
DS1     EQU     00000010B ; выбор НГМД #1
DS2     EQU     00000100B ; выбор НГМД #2
DS3     EQU     00001000B ; выбор НГМД #3

SIDE1   EQU     00010000B ; выбор стороны диска #1

MOTOR   EQU     00100000B ; запуск одновибратора
                          ; включения двигателя
SDEN    EQU     01000000B ; режим работы с одинарной
                          ; плотностью записи
D200    EQU     10000000B ; работа с диском 203 мм

; Одновибратор включения двигателя запускается на время 3 с
; при переходе сигнала (бита) MOTOR из 0 в 1. Для разгона
; двигателя требуется время около 0,5 с, после этого можно
; инициировать операции контроллера НГМД. Если двигатель
; уже был включен, время на разгон не требуется. Опрос
; состояния одновибратора включения двигателя производится
; через регистр запросов контроллера прерываний.

MOTINT  EQU     7  ; Прерывание от одновибратора
                   ; управления двигателем

        ; Контроллер НГМД

; Регистры контроллера

CMDREG  EQU     18H ; Регистр команд
STSREG  EQU     18H ; Регистр состояния
TRKREG  EQU     19H ; Регистр текущей дорожки
SECREG  EQU     1AH ; Регистр сектора
DATREG  EQU     1BH ; Регистр данных

; Команды контроллера НГМД
; (команды записываются в регистр команд при наличии
; разрешения, т.е. при отсутствии признака BUSY
; в регистре состояния). Опрос регистра состояния можно
; производить не ранее, чем через 30 мкс после записи
; команды в регистр команд.

; Команды позиционирования (команды I типа). Основные коды

RESTORE SET     00000000B ; позиционирование на 0 дорожку

SEEK    SET     00010000B ; позиционирование на дорожку,
                          ; заданную в регистре данных
STEP    SET     00100000B ; позиционирование на одну
                          ; дорожку в направлении, задан-
                          ; ном предыдущей командой
STEPIN  SET     01000000B ; позиционирование к центру
                          ; на одну дорожку
STEPOUT SET     01100000B ; позиционирование от центра
                          ; на одну дорожку

; Модификаторы команд позиционирования

UPDATE  EQU     00010000B ; отслеживание перемещения
                          ; головки в регистре дорожки
HLD     EQU     00001000B ; прижим головки при движении

VERIFY  EQU     00000100B ; проверка установки головки
                          ; после перемещения
RATE    SET     00000011B ; коэффициент скорости позици-
                          ; онирования (для мини-дисков
                          ; время перехода с дорожки на
                          ; дорожку при 00 будет 6 мс,
                          ; 01 - 12 мс, 10 - 20 мс,
                          ; 11 - 30 мс )
; Модификаторы HLD, UPDATE и VERIFY могут использоваться
; по усмотрению системного программиста.
; Использование модификатора RATE является обязательным,
; причем для дисководов типа FD55FV его значение может
; быть установлено равным 00.

; Команды чтения/записи (команды II типа)
; Основные коды

RDSEC   SET     10000000B ; чтение сектора

WRSEC   SET     10100000B ; запись сектора

; Модификаторы

MULTI   EQU     00010000B ; операция с несколькими
                          ; секторами
DELAY   EQU     00000100B ; включение задержки опе-
                          ; рации на время подвода
                          ; головки

; использование модификатора  DELAY для используемых
; в КУВТ НГМД является обязательным.

; Команды форматирования (команды III типа)
; Основные коды

RDADR   EQU     11000000B ; чтение идентификатора

RDTRK   EQU     11100000B ; чтение дорожки

WRTRK   EQU     11110000B ; запись дорожки

; Модификатор - DELAY (см. выше)

; Команды прерывания (команды IV типа)
; Основные коды

FORCE   EQU     11010000B ; прекращение операции
                          ; и/или генерация зап-
                          ; роса прерывания на ЦП

; Модификаторы (используются по усмотрению программиста)

ONRDY   EQU     00000001B ; прерывание по готов-
                          ; ности НГМД
ONNRDY  EQU     00000010B ; прерывание по неготов-
                          ; ности НГМД
ONINDX  EQU     00000100B ; прерывание по индекс-
                          ; ному импульсу
IMMID   EQU     00001000B ; немедленное прерывание

        ; Признаки состояния контроллера НГМД

; Эти признаки могут быть получены путем чтения регистра
; состояния контроллера НГМД с последующим выделением их
; путем логического умножения на соответствующую маску.

; Маски признаков (флагов ) состояния контроллера НГМД

BUSY    EQU     00000001B ; признак неготовности конт-
                          ; роллера к приему команд
DRQ     EQU     00000010B ; запрос на передачу очеред-
                          ; ного байта данных (кроме
                          ; команд I типа)
INDX    EQU     00000010B ; индексный маркер, т.е.
                          ; начальная позиция диска
                          ; (только для команд I типа)
LOST    EQU     00000100B ; признак потери данных
                          ; (кроме команд I типа)
TRK00   EQU     00000100B ; признак 0 дорожки
                          ; (для команд I типа)
CRCERR  EQU     00001000B ; признак ошибки по
                          ; циклическому конт-
                          ; рольному коду
RECNF   EQU     00010000B ; признак ненахождения
                          ; заданного сектора
                          ; (кроме команд I типа)
SEEKER  EQU     00010000B ; ошибка позиционирования
                          ; (для команд I типа)
FAULT   EQU     00100000B ; ошибка при записи
                          ; (для команд II и III типа)
HLDD    EQU     00100000B ; признак прижима головки
                          ; (для команд I типа)
WPRTD   EQU     01000000B ; признак диска, защищенного
                          ; от записи и стирания
NOTRDY  EQU     10000000B ; признак отсутствия
                          ; готовности НГМД

```