В.А. Авдеев, В.Ф. Гузик
Компьютеры: шины, контроллеры, периферийные устройства
Учебное пособие. Таганрог: ТРТУ, 2001. - 536 с.
11. Внешние ЗУ на Магнитных и оптических носителях
11.7. Контроллер НГМД
Контроллер
НГМД (КНГМД) является сложным устройством, для реализации которого была
разработана БИС i8272. КНГМД предназначен для выполнения многосекторных,
многодорожечных и многоканальных передач данных между НГМД и ОП. КНГМД
выполняет преобразование параллельного кода в последовательный при передаче
данных в НГМД и обратное преобразование последовательного кода в параллельный
при чтении данных из НГМД. Кроме того, КНГМД обеспечивает выполнение следующих
команд: запись и чтение данных, поиск, форматирование и т.д., управляющих
работой НГМД.
Через
КНГМД осуществляется передача данных между НГМД и ОП под управлением КПДП или
между НГМД и быстродействующим П (рис. 11.10).
Рис.
11.10. Схема связи КНГМД с НГМД и ОП под управлением КПДП (П)
Структурная схема КНГМД изображена на рис. 11.11.
Рис.
11.11. Структурная схема КНГМД
КНГМД содержит 3 основных блока: буфер шины данных (БШД) и
логику интерфейса (ЛИ), блок управления накопителем (БУН) и блок управления
контроллером (БУК). В состав БУК входят 2 порта: регистр входных/выходных
данных (RI/O) и регистр основного состояния (RS). Если младший разряд адреса
А0=1, то выполняется доступ к RI/O, а если А0=0, то - выбор RS. Регистр RI/O доступен
по записи и чтению со стороны П и его адрес - 3F5h, а регистр RS доступен
только по чтению и имеет адрес , равный 3F4h. Передача данных в НГМД
осуществляется по следующей схеме:
DB0-DB7->БШД->ВШД->RI/O->R0->WRDATA, где ВШД - внутренняя шина
данных, R0- выходной регистр сдвига и WRDATA - линия выходных данных. Регистр
R0 выполняет преобразование параллельного кода в последовательный с дальнейшей
выдачей его по линии WRDATA в НГМД. Обратная передача данных из НГМД по линии
RDDATA осуществляется с помощью входного регистра сдвига RI по схеме
RDDATA->RI->RI/O->ВШД->БШД->DB0-DB7. Кроме того, регистр RI/O
используется для вывода из П байтов команды (параметров) в блок регистров (БР)
таких, как байт команды, байт модификатор, байты с номерами дорожки,
поверхности, сектора и т.д. После окончания передачи данных через RI/O
выполняется передача байтов состояния КНГМД и НГМД из регистров состояния
ST0-ST2. Регистр ST3 хранит состояние НГМД и может быть прочитан по команде
“Считать состояние накопителя” с помощью регистра RI/O и регистра RS. В
регистре RS бит D7=1 указывает на готовность RI/O к приему или передаче данных
(для вывода RI/O пуст, а для ввода RI/O полон). Бит D6 RS определяет
направление передачи данных: 1- в П, а 0 - из П. Остальные биты RS отмечают
состояние КНГМД при выполнении операций поиска, чтения-записи и прерывания. В
состав БУК входят также дешифратор адресных меток (ДшАМ), считываемых с
дорожки, и сепаратор данных (СД), осуществляющий выделение битов данных по
сигналам «Окно данных» DW, формируемых внешней схемой ФАЧ.
БУК вырабатывает синхросигналы VCO, необходимые для работы ФАЧ, и устанавливает сигнал
«Разрешение записи» WE, поступающий в НЖМД. Для координации работы БУК вводятся
синхросигналы записи WRCLK. В связи с тем, что на внутренние дорожки информация
записывается более плотно, то для реализации этого режима используется внешняя
схема предкомпенсации (СПК), на которую поступают сигналы PS0 и PS1,
компенсирующие фазовый сдвиг информации. На рис. 11.12 показана схема
сопряжения КПДП, КНГМД и НГМД.
Рис.
11.12. Схема сопряжения КПДП, КНГМД и НГМД
Сигналы PS0
и PS1 задают раннюю, нормальную и позднюю синхронизацию при записи данных на
дорожку. БУН с помощью сигналов DS0 и DS1 выполняет выбор НГМД и в режиме
поиска осуществляет формирование сигналов: SEEK(поиск), DIR(направление) и STEP
(шаг). Кроме того, БУН принимает сигналы от датчиков: WRPROT (защита записи),
INDEX (сигнал от датчика индексного отверстия), TRACK (дорожка 0). Входной
сигнал READY устанавливается, когда включено питание, диск вставлен в
накопитель и двигатель набрал заданное число оборотов. Сигнал HDL используется
для прижима (загрузки) МГ к поверхности диска. Назначение известных сигналов
WR, RD, #CS и т.д. БШД и ЛИ было описано ранее. Эти сигналы в основном
используются для доступа к регистрам КНГМД. Вывод байтов команды из памяти в БР
выполняется строго в определенном порядке, задаваемым кодом команды (первым
байтом), а БУК автоматически распределяет поступающие байты в соответствующие
регистры БР. Эта фаза работы КНГМД называется фазой приказа, затем наступает
фаза выполнения команды, например, передача данных, которая заканчивается формированием
сигнала прерывания IRQ6. После этого выполняется ввод в П байтов состояния
ST0-ST2 (фаза результата), в которых отмечается состояние НГМД: неверная
команда, не подключен НГМД, ошибка НГМД, ошибка в передачи данных, отсутствует
адресная метка, плохая дорожка и т.д.
КНГМД
реализует 15 команд. Формат команды «Чтение данных» (INT13) состоит из 9
байтов, выводимых процессором в фазе приказа. Первый байт формата содержит код
операции, второй - номер МГ и накопителя, третий - номер цилиндра (С),
четвертый - номер головки (Н), пятый - номер сектора (R), шестой - длина
сектора (N), седьмой - номер последнего сектора на дорожке (EOT), восьмой -
размер зазора между секторами (CPL), девятый - число записываемых (считываемых)
байтов (DTL). Девятый байт учитывается, если N=0.
При
выполнении команды «Чтение данных», номер сектора, находящийся в
соответствующем регистре БР, сравнивается с номером сектора, читаемого с
дорожки. При совпадении этих номеров осуществляется считывание заданного
сектора. Затем номер сектора, хранящийся в регистре БР, увеличивается на 1 и
выполняется считывание следующего сектора при многосекторной операции. Если
дважды поступал сигнал от датчика индексного отверстия, то в регистре ST1
устанавливается бит «Отсутствие данных». При обнаружении ошибки в поле
идентификации или в поле данных устанавливаются соответствующие биты в
регистрах ST1 и ST2. Команда «Чтение данных» прекращается по сигналу T/C
(окончание счета).
Команда
«Поиск» содержит 3 байта. В первом и во втором байтах этой команды также указывается
соответственно код операции и номер МГ и накопителя, а в третьем байте - номер
требуемого цилиндра. После завершения операции поиска требуемого цилиндра КНГМД
формирует сигнал прерывания IRQ6.
Рассмотрим
более подробно выполнение команды «Считать состояние накопителя». П выводит 2
байта: байт команды (04h), содержащий код операции, и байт модификатор (00h),
выбирающий накопитель. В первой фазе приказа содержимое битов D7 и D6 регистра
RS должно быть соответственно 10, т.е. регистр RI/O - КНГМД готов принять
данные (пуст) и направление передачи данных из П в КНГМД. Перед выводом каждого
байта П проверяет бит D7 RS на равенство его 1. Затем КНГМД выполняет вторую
фазу: автоматически читает содержимое ST3 и переводит его в RI/O. В этот момент
времени бит D7=0. В третьей фазе D7=D6=1, т.е. RI/O полон и направление
передачи данных из КНГМД в П. П по этой информации определяет момент ввода
содержимого RI/O в свой внутренний регистр.
Похожие материалы:
Контроллер PCI 9060
Контроллер ISA/ИРПР - Авдеев В.А. и др., 2001
Контролируемые сделки
Контроллер комбинированного типа
Контроллер программного обмена - Авдеев В.А. и др., 2001
Контроль за выполнением коллективного договора,
соглашения
|