Контроллер гибкого магнитного диска КР1810ВГ72А
По команде «Форматирование дорожки» размечается дорожка на ГМД путём записи индексных данных, пробелов и адресных меток для каждого сектора. Перед ней выдаётся команда «Поиск» для размещения головки считывания — записи над соответствующей дорожкой. Кроме того, перед выполнением данной команды должна быть подготовлена таблица индексных данных для каждого сектора (адрес дорожки, номер головки… Читать ещё >
Контроллер гибкого магнитного диска КР1810ВГ72А (реферат, курсовая, диплом, контрольная)
Курсовой проект На тему
«КОНТРОЛЛЕР ГИБКОГО МАГНИТНОГО ДИСКА КР1810ВГ72А»
Харьков 2008 г.
КОНТРОЛЛЕР ГИБКОГО МАГНИТНОГО ДИСКА КР1810ВГ72А Однокристальный контроллер гибких дисков КР1810ВГ72А позволяет работать с четырьмя дисководами. Предназначен для записи, чтения и форматирования дисков с одинарной (режим ЧМ) в формате «IВМ — 3740» и двойной плотностью (режим МЧМ) в формате «IBMSISTEM 34». Контроллер сопрягается с процессором с помощью 8-разрядного параллельного канала данных. Обмен данными между контроллером и памятью ЭВМ осуществляется непосредственно через процессор или с помощью контроллера прямого доступа к памяти.
Достоверность записи информации автоматически проверяется по контрольному коду в конце адресной и информационной частей каждого сектора. При работе необходимы внешние схемы разделения данных и формирования информационного сигнала записи для магнитной головки с учётом выдаваемых сигналов предкомпенсации. Контроллер формирует сигналы, управляющие запуском схемы разделителя данных и выбором его тактовой частоты. Полные форматы дорожки и сектора ГМД при работе контроллера показаны на рис. 1. Число секторов на дорожке зависит от их длины (табл. 1). Переменная длина конечного пробела определяется скоростью вращения диска, длинами секторов и пробелов, заданных программой.
Рис. 1. Форматы сектора и дорожки ГМД Длина сектора равна 128, 256 или 512 байт при работе в режиме ЧМ и 256, 52, 1024 байт — в режиме МЧМ (табл. 2). Назначение выводов микросхемы КР1810ВГ72А приведено в табл. 3, структурная схема показана на рис. 2, электрические параметры — в табл. 4, временные диаграммы работы микросхемы — на рис. 3−9.
Таблица 1 Форматы ГМД
Ёмкость диска | Одинарная плотность | Двойная плотность | |||||||
Байтов в секторе | |||||||||
Секторов на дорожке* | |||||||||
Килобайтов на диске | 256, 256 | 295, 680 | 315, 392 | 315, 392 | 512, 512 | 591, 360 | 630, 784 | 630, 784 | |
* - 77 дорожек на диске | |||||||||
Через последовательный интерфейс выполняются чтение или запись данных, преобразование байтов в последовательность сигналов WRD, выдача сигнала разрешения записи данных WRE и сигналов предкомпенсации PS0, PS1. В процессе считывания информации с ГМД последовательность данных в виде сигналов RDD, сопровождаемых сигналом DM, записывается через ПИ в регистры данных КГМД.
Интерфейс сопряжения обеспечивает выдачу команд управления и приём сигналов, информирующих о состоянии различных устройств НГМД через соответствующие порты входа и выхода.
Таблица 2 Параметры сектора
Режим | Длина сектора, байт | Код длины сектора (N) | Число секторов на дорожке (SC) | Длина пробела 3 (GPL) | ||
Чтение, запись | Форматирование | |||||
ЧМ | IA OF IA | OE IB OE | IB 2A 3A | |||
МЧМ | OF | IB | ||||
* Примечание. Все параметры, кроме длины сектора, даны в шестнадцатеричном коде Посредством логики управления режимами работы контроллера, а соответственно, и всей системой обмена информацией с помощью ГМД принимаются команды и данные от центрального процессора, выделяются сигналы управления и прерывания, устанавливается плотность записи, опрашивается контроллер ПДП (сигнал ТС), обеспечивается выполнение требуемых команд. Фактически ЛУ является центральным процессором самого контроллера. Регистры общего назначения включают интерфейсные регистры состояния, регистр данных, регистры номеров сектора, дорожки и др. Порядок обращения к интерфейсным регистрам приведён в табл. 5, назначение битов регистров состояний — в табл. 6.
Рис. 2. Структурная схема контроллера КР1810ВГ72А БД — буферы данных; Рг — регистры общего назначения; ПИ — последовательный интерфейс; ИД — интерфейс сопряжения с НГМД; ЛУ — логика управления режимами чтения, записи, обмена информацией.
Таблица 3 Назначение выводов микросхемы КР1810ВГ72А
Вывод | Обозначение | Тип | Направление сигнала | Назначение | |
SR | Вход | От ЭВМ | Сброс | ||
« | « | Чтение | |||
« | « | Запись | |||
CS | « | « | Выбор микросхемы | ||
AO | « | « | Адрес | ||
6…13 | DB0…DB7 | Входы — выходы | К ЭВМ | Линии двунаправленного канала данных с тремя возможными состояниями | |
DRQ | Выход | На КПДП | Запрос данных | ||
DACK | Вход | От КПДП | Подтверждение прямого доступа к памяти | ||
TC | « | « | Завершение обмена | ||
IDX | « | От ГМД | Индексный импульс | ||
INT | Выход | На ЭВМ | Запрос прерывания | ||
C | Вход | ; | Тактовые импульсы | ||
GND | ; | Общий | |||
WRC | Вход | ; | Тактовые импульсы записи | ||
DW | « | От разделителя | Сопровождение данных | ||
RDD | « | От ГМД | Чтение данных | ||
VCO | Выход | На разделитель | Разрешение синхронизации схемы разделителя данных | ||
WE | « | На ГМД | Разрешение записи | ||
MFM | « | На разделитель | Режим МЧМ | ||
HDS | Выход | На ГМД | Выбор головки | ||
28, 29 | DS1, DS0 | Выходы | На ГМД | Выбор дисковода 0…3 | |
WRD | Выход | « | Запись | ||
31, 32 | RS1, RS0 | Выходы | « | Сигналы предкомпенсации при записи с МЧМ | |
GLT/TRKO | Вход | « | Ошибка накопителя — нулевая дорожка | ||
WR/TS | « | От ГМД | Защита записи — двусторонний диск | ||
RDY | « | « | Готовность НГМД | ||
HDL | Выход | На ГМД | Загрузка магнитной головки | ||
FR/STR | « | « | Сброс триггера «Ошибка — шаг» | ||
LCT/DIR | « | « | Снижение тока записи, направление шага | ||
/SEEK | « | « | Чтение, запись — поиск (определяет назначение 33, 34, 37, 38) | ||
UCC | « | « | Напряжение источника питания 5В±10% | ||
Таблица 4 Основные электрические параметры контроллера КР1810ВГ72А, Т=-10…+70?С
Параметры, единица измерения | Статистические | Примечание | ||
Не менее | Не более | |||
; | 0,45 | |||
2,4 | ||||
; | ||||
— 10 | ||||
Динамические | ||||
; | ||||
; | ||||
; | ||||
; | ||||
; | ||||
; | 1,2 | |||
Режима эксплуатации | ||||
— 0,5 | 0,8 | |||
2,0 | +0,5 | |||
0,52 0,76 | ||||
; | ||||
; | ||||
2; 4 1; 2 | MFM=0 MFM=13,1 | |||
; | ||||
MFM=0 MFM=13 | ||||
14 14 | ; | |||
* Примечание. 1 — значения даны для =8 МГц (для 4 МГЦ значения удваиваются); 2 — параметр программируется; 3 — указаны номинальные значения. | ||||
Рис. 3. Сигналы записи данных в контроллер Таблица 5 Порядок обращения к интерфейсным регистрам
AO | Выполняемая операция | ||||
Чтение главного регистра состояния | |||||
Запрещённая комбинация | |||||
Запрещённая комбинация | |||||
Запрещённая комбинация | |||||
Чтение регистра данных* | |||||
Запись в регистр данных* | |||||
Х | Х | Х | Шина данных DB7… DB0 в высокоимпендансном состоянии | ||
* При записи — чтении данных в режиме прямого доступа к памяти состояние входов и AO может быть произвольным (Х). | |||||
РЕЖИМЫ РАБОТЫ КГМД Многосекторный и многодорожковый режимы. Обмен данными последовательности секторов заканчивается по сигналу (завершение обмена). Если с приходом последнего байта данных сектора не выдаётся сигнал, то КГМД записывает (считывает) данные в следующий (из следующего) сектор, увеличивающий текущий номер сектора на единицу. Многодорожковый режим определяется битом МТ в коде команды. Чтение — запись дорожек и секторов ГМД выполняется последовательно до прихода сигнала .
ОБМЕН ДАННЫМИ В РЕЖИМЕ ПДП Передача (приём) данных на ГМД (от ГМД) может выполняться в режимах прямого (без участия центрального процессора) и непрямого доступов к памяти (через центральный процессор). В режиме ПДП для каждой посылки данных активизируется сигнал DRQ (запрос данных). Контроллер ПДП отвечает выдаче сигналов и при чтении или при записи.
В режимах непрямого доступа к памяти (НПДП) активизируется выходной сигнал INT и процессор контролирует (опрашивает) главный регистр состояния. Этот сигнал используется для прерывания, а бит RQM регистра состояния — для запроса данных. Системный процессор должен отвечать на запросы сигналами и, которые устанавливают низкий уровень INT и сбрасывают бит RQM. После завершения передачи КГМД активизирует сигнал INT, сообщая о начале фазы контроля результата. В обоих режимах выполнение команды прекращается при появлении сигнала, «Не готов» или последнего сектора на дорожке.
По сигналу ошибки от НГМД прекращает запись данных на ГМД, устанавливается единица в бите ЕС регистра РС0 и заканчивается команда (после установки кода прерывания 01 в битах 1С регистра РС0).
однокристальный гибкий контроллер диск Рис. 4. Сигналы чтения данных из контроллера.
ФАЗЫ ВЫПОЛНЕНИЯ КОМАНД Каждая из 15 команд контролера имеет фазы задания, исполнения и контроля результата (табл. 7, 8). Фаза задания описывает порядок ввода команды от ЭВМ. Первые два байта, как правило, определяют непосредственно коды команды, остальные — необходимые параметры. Исключение составляют команды, описываемые одним байтом: «опрос состояния прерывания» и «определение параметров». Приведённый в табл. 7 порядок ввода исходной информации является обязательным. После ввода последнего байта задания контроллер автоматически переходит в фазу исполнения команд обмена данными или управления устройствами НГМД. Процессы обмена данными зависят от режимов ПДП и НПДП.
В фазе контроля результата процессор последовательно считывает все указанные в структуре команды байты и только после чтения последнего байта контроллер готов к выполнению следующей команды. Готовность подтверждают биты D10 и RQM главного РС, которые должны быть в состоянии 1 (РС0… РС3 опрашиваются только в фазе контроля результатов выполнения команд).
Команда «Определение параметров» используется перед выполнением любой дисковой операции (включая форматирование нового диска) для определения рабочих характеристик накопителя; задаёт режимы ПДП и НПДП. Состояние 0 младшего разряда третьего байта (В4) определяет режим ПДП. В процессе её выполнения устанавливаются значения трёх внутренних таймеров:
· время загрузки головки HLT — 7-разрядная величина, определяющая временной интервал между загрузкой головки и началом процесса считывания или записи; программируется на интервал 2…254 мс с приращением 2мс.
· время разгрузки головки HUT — 4-разрядная величина, задающая временной интервал между окончанием исполнительской фазы (команды чтения или записи) и разгрузкой головки, программируется в диапазоне 16…240 мс с приращениями 16 мс; если процессор выдаёт команду перед разгрузкой головки, то она остаётся загруженной;
· период шаговых импульсов SRT — 4-разрядная величина, устанавливающая временной интервал между шаговыми импульсами, посылаемыми КГМД (время перехода от дорожке к дорожке); программируется в диапазоне 1…16 мс с приращениями 1 мс.
Эти временные интервалы являются прямой функцией периода тактового импульса С (вывод 19). Интервалы даны для тактовой частоты, равной 8 МГц.
Команда «Опрос состояния накопителей» выдаётся процессором по требованию на получение информации о состоянии накопителей (данные о состоянии накопителя содержатся в РС3).
Сигнал прерывания формируется КГМД при появлении как мин6имум одного из следующих событий:
· КГМД выполняет заключительную фазу для команд чтения данных, дорожки, индексных и удаленных данных, записи данных; форматирования дорожки; записи удаленных данных; сканирования;
· сигнал «Готовность» одного из накопителей изменяет состояние;
· команда поиска или повторной поверки завершает операцию;
· КГМД запрашивает обмен данными в фазе исполнения команд записи чтения в режиме НПДП.
Прерывания, вызываемые первой и четвёртой причинами, происходят при нормальных командных операциях и легко различаются процессором. Прерывания, вызываемые второй и третьей причинами, определяются только с помощью команды «Опрос состояния прерывания». При вводе данной команды сигнал прерывания переходит в низкий уровень, а причина прерывания определяется с помощью разрядов 5, 6, 7 РС0 в фазе контроля результата (табл. 9).
Команды «Поиск» и «Восстановление» не имеют итоговой фазы выполнения. Для эффективного их завершения и контроля за положением головки на диске необходимо использовать команду «Опрос состояния прерывания».
Для выявления причины прерывания процессора могут быть использованы признаки занятости КГМД (разряд D4) и режима работы НПДП (разряд D5) главного РС.
Разряд D5 Разряд D4
0 0 Асинхронное событие (2), (3)
0 1 Фаза итоговой информации (1)
1 1 Требуется обмен данными (4)
Один запрос прерывания, посылаемый процессору, может быть вызван более чем одним событием. Поэтому процессору необходимо провести анализ с помощью команды «Опрос состояния прерывания» и чтения главного РС для определения причины прерывания. Таким образом, обслуживаются все «упрятанные» прерывания.
Рис. 5. Сигналы прямого доступа к памяти Рис. 6. Сигналы записи на ГМД Рис. 7. Сигналы чтения с ГМД Таблица 6 Назначение битов регистров состояний
Бит | Обозначение | Значение | |
Главный регистр | |||
RQM | Запрос данных | ||
DIO | Ввод — вывод данных (направление передачи) | ||
NDM | Режим непрямого доступа к памяти (только при выполнении команды) | ||
CB | КГМД занят (для команд чтения или записи) | ||
3…0 | D3B…D0B | НГМД под номерами 3…0 заняты. Выполняется команда «Поиск» | |
РС0 | |||
7, 6 | IC | Код прерывания 00 — нормальное завершение команды, 10 — некорректная команда, 01 — ненормальное завершение команды, 11 — состояние неготовности дисковода | |
SE | Конец поиска | ||
EC | Ошибка аппаратных средств НГМД (для команд чтения или записи) | ||
NR | Принят сигнал неготовности (запрос второй стороны одностороннего диска) | ||
H | Номер головки | ||
1, 0 | DS1, DS0 | Выбор накопителя | |
РС1 | |||
EN | Ошибка конца дорожки (несуществующий сектор) | ||
DE | Ошибка данных (по контрольному коду) | ||
OR | Признак переполнения | ||
3, 6 | ; | Не используется (состояние 0) | |
ND | Не найден сектор | ||
NW | Признак защиты записи | ||
MA | Признак недостающей адресной метки | ||
РС2 | |||
; | Не используется (состояние 0) | ||
CM | Контрольная метка не соответствует заданной | ||
DD | Ошибка в поле данных | ||
WC | Ошибка адреса дорожки | ||
SH | Признак совпадения сканирования | ||
SN | Сканирование не удовлетворяется | ||
BC | Признак нечитаемой дорожки | ||
МД | Признак отсутствия адресной метки данных | ||
РС3 | |||
FT | Ошибка накопителя | ||
WP | Защита записи на иске | ||
RDY | Готовность | ||
TO | Дорожка 0 | ||
TS | Двухсторонний диск | ||
H | Номер головки | ||
1, 0 | DS1, DS0 | Выбранный накопитель | |
Рис. 8. Сигналы FR, IDX, TC, SR
По команде «Поиск» головка считывания записи накопителя размещается над заданной дорожкой, КГМД определяет разницу между текущим и требуемым адресами дорожки и выдает соответствующее число шаговых импульсов.
Если требуемый адрес дорожки больше текущего адреса, то сигнал направления (LCT/DIR, вывод 38) будет высокого уровня, если меньше — низкого уровня. Если заданная дорожка совпадает с текущим адресом, то головка не перемещается.
Период выдачи шаговых импульсов управляется таймером шагового импульса и задается (SRT) в команде «Определение параметров». После каждого шагового импульса требуемый адрес дорожки сравнивается с текущим. При равенстве адресов устанавливается признак «Конец поиска» (сигнал высокого уровня в разряде D5 ЗС0) и завершается выполнение команды. Если накопитель во время операции поиска находится в состоянии «Неготовность», то устанавливается признак «Неготовность» (сигнал высокого уровня в разряде D3 РС0) и команда завершается.
Во время выдачи шаговых импульсов КГМД находится в состоянии «Занят», в остальное время — в состоянии «Свободен». Все четыре накопителя могут одновременно находиться в режиме поиска. По завершении операции поиска КГМД посылает запрос прерывания, в ответ на который выдаётся команда «Опрос состояния прерывания». В итоговой фазе выполнения команды данные РС0, содержащие номер накопителя в разрядах D0 и D1, считываются процессором.
По команде «Восстановление» головка считывания записи накопителя устанавливается на нулевую дорожку. КГМД сбрасывает содержимое внутреннего счётчика дорожки и проверяет состояние сигнала TRKO, поступающего из накопителя. Если сигнал TRKO имеет низкий уровень, то вырабатываются сигнал направления DIR и шаговые импульсы; если высокий уровень, то в РС0 устанавливается признак «Конец поиска» и выполнение команды завершается. Если после поступления 77 шаговых импульсов сигнал TRKO остаётся на низком уровне, то поиск заканчивается, в РС0 устанавливается признак ошибки аппаратных средств НГМД и команда завершается. Команды восстановления для нескольких накопителей могут перекрываться таким же образом, как команды поиска.
Таблица 7 Структура системы команд контроллера КР1810ВГ72А
Команда | Коды команды (байты В1, В2) | Фазы выполнения команды | |||||||||||||||||||||||
Задание*(последовательность байтов) | Контроль результата* | ||||||||||||||||||||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | B1, B2 | B3 | B4 | B5 | B6 | B7 | B8 | B9 | Исполь; зование | B1 | B2 | B3 | B4 | B5 | B6 | B7 | ||
Чтение данных | МТ | МЧМ | SK | HDS | DS1 | DS0 | B1 B2 | Данные ГМД >ЭВМ | ST0 | ST1 | ST2 | C | H | R | N | ||||||||||
Чтение удаленных данных | МТ | МЧМ | SK | HDS | DS1 | DS0 | B1 B2 | C | H | R | N | EOT | GPL | DTL | |||||||||||
Запись данных | МТ | МЧМ | HDS | DS1 | DS0 | B1 B2 | Данные ЭВМ >ГМД | ||||||||||||||||||
Запись удаленных данных | МТ | МЧМ | HDS | DS1 | DS0 | B1 B2 | |||||||||||||||||||
Чтение дорожки | МЧМ | SK | HDS | DS1 | DS0 | B1 B2 | Данные ГМД >ЭВМ | ||||||||||||||||||
Чтение индексных данных | МЧМ | HDS | DS1 | DS0 | B1 B2 | Индексные данные ГМД >ЭВМ | |||||||||||||||||||
Форматирование дорожки | МЧМ | HDS | DS1 | DS0 | B1 B2 | N | SC | GAL | D | ; | ; | ; | Индексные данные ЭВМ >ГМД | ||||||||||||
Сканирование на равенство | МТ | МЧМ | SK | HDS | DS1 | DS0 | B1 B2 | Сравнение данных ГМД и ЭВМ | |||||||||||||||||
Сканирование на меньше или равно | МТ | МЧМ | SK | HDS | DS1 | DS0 | B1 B2 | C | H | R | N | ||||||||||||||
Сканирование на больше или равно | МТ | МЧМ | SK | HDS | DS1 | DS0 | B1 B2 | ||||||||||||||||||
Восстановление | DS1 | DS0 | B1 | ; | ; | Установка МГ на TRO | ; | ; | |||||||||||||||||
Опрос состояния прерывания | B1 | ; | ; | ; | ; | ; | ; | ; | ST0 | C | ; | ; | ; | ; | ; | ||||||||||
Определение параметров | B1 | SRT HVT | NLT ND | ; | |||||||||||||||||||||
Опрос состояния накопителей | HDS | DS1 | DS0 | B1 B2 | ; | ; | ; | ; | ; | ; | ; | ; | ST1 | ; | ; | ; | ; | ; | ; | ||||||
Поиск | HDS | DS1 | DS0 | B1 B2 | C | ; | ; | ; | ; | ; | ; | Установка МГ на дорожку | ; | ; | ; | ; | ; | ; | ; | ||||||
Примечания: 1. Коды команды D7… D0 указывают состояние битов DB7… DB0 канала данных контроллера, т. е. байты информации при записи команды. 2. Запись байтов B1… B9 в фазе контроля (в таблице указываются номера и содержание байтов) составляют обязательную последовательность. 3. Команда «Опрос состояния прерывания «обязательно должна следовать за командами «Поиск» и «Восстановление». | |||||||||||||||||||||||||
По команде «Форматирование дорожки» размечается дорожка на ГМД путём записи индексных данных, пробелов и адресных меток для каждого сектора. Перед ней выдаётся команда «Поиск» для размещения головки считывания — записи над соответствующей дорожкой. Кроме того, перед выполнением данной команды должна быть подготовлена таблица индексных данных для каждого сектора (адрес дорожки, номер головки, адрес сектора, а также код длину сектора). В процессе выполнения команды КГМД обращается к процессору и, используя данные таблицы, делает запись индексных данных на каждом секторе дорожки. Метка адреса поля индексных данных выдаётся самим контроллером и автоматически записывается, как первый байт IDAM каждого сектора. Контрольный код (КК) поля ID (посчитанный для данных, записанных в первых пяти байтах) автоматически записывается, как последние два байта поля. Пробелы задаются автоматически, причём длина регулируемого пробела 3 определяется одним из параметров команды форматирования.
Таблица 8 Сокращения, используемые в описании команд
Обозначение | Описание | |
C | Номер дорожки (0…76) | |
D | Байт данных, который будет автоматически повторён во всех байтах области данных каждого сектора форматируемой дорожки | |
DS1, DS0 | Выбор диска: DS1 DS0 Дисковод 0 0 0 0 1 1 1 0 2 1 1 3 | |
DTL | Эффективный размер сектора (1…256 байт) | |
EOT | Число секторов на текущей дорожке | |
GPL | Размер пробела 3 (см. табл.2) | |
H | Номер стороны диска (0 или 1) | |
HLT | Время загрузки головки (биты D1… D7 третьего байта В4 команды «Определение параметров») | |
HUT | Время загрузки головки (биты D0… D3 второго байта команды «Определение параметров») | |
МЧМ | Выбор режима ЧМ или МЧМ | |
МТ | Вариант многодорожечного режима | |
N | Код длины сектора (см. табл. 2) | |
ND | Признак работы с непрямым доступом к памяти | |
SK | Признак пропуска | |
SRT | Период следования импульсов пошагового перемещения блока магнитной головки (1…16 мс с шагом 1 мс) | |
R | Номер сектора | |
ST0…ST3 | РС0…СР3 | |
STR | Шаг адреса сканирования | |
SC | Число секторов на дорожке (задаётся для команды «Форматирование») | |
Метка адреса поля данных DAM формируется и автоматически записывается, как первый байт поля данных. Байт данных, указанный в командной фазе задания, заносится в поле данных (все байты) каждого сектора. Значение КК формируется из адресной метки данных и данных, записанных в секторе. За последним байтом данных размещается два байта КК.
Рис. 9. Сигналы поиска
Таблица 9 Коды прерывания
Конец поиска разряда D5 | Код прерывания, разряд | Причина | ||
D6 | D7 | |||
Сигнал готовности меняет состояние | ||||
Нормальное завершение выполнения команды «Поиск» или «Восстановление» | ||||
Ненормальное завершение выполнения команды «Поиск» или «Восстановление» | ||||
Форматирование дорожки начинается с физической индексной метки. Порядок распределения секторов непосредственно соответствует таблице форматирования (предоставляемой процессором). В таблице каждый сектор определяется четырьмя признаками: адресом дорожки, номером головки, адресом сектора и кодом длины сектора. Адрес дорожки в поле ID должен быть равен адресу форматируемой дорожки. Адрес сектора должен быть уникальным (нет двух равных адресов). Порядок расположения секторов в таблице — это последовательность, в которой номера сектора появляются на дорожке при её форматировании. Число входных установок (адреса дорожки, головки и сектора, код длины сектора) должно быть равно числу секторов, размещаемых на дорожке (указывается также в командной фазе).
В зависимости от расположения секторов дорожки могут форматироваться последовательно, тогда первый сектор, идущий за индексной меткой, имеет адрес сектора 1, соседний сектор — адрес сектора 2 и т. д.; или же номера секторов могут располагаться со сдвигом, например: 1, 4, 7, 10, 13 и т. д. — со сдвигом на три сектора. Такой сдвиг может быть полезен для увеличения времени, отведённого на обработку данных сектора.
Чтение данных. Для завершения спецификации фазы задания по команде «Чтение данных» требуется 9 байт. КГМД загружает головку и считывает метки адресов IDAM и поля ID. Когда адрес запрашиваемого сектора сравнивается с адресом сектора, считанным с диска, КГМД выдаёт побайтовые данные (с поля данных сектора) в ЭВМ. Команда «Чтение данных» автоматически выполняется в многосекторном режиме. Многодорожковый режим может задаваться с помощью признака МТ (см. табл. 8). Число данных, передаваемых по одной команде на КГМД, зависит от признака многодорожечного режима, признака плотности записи и числа байтов на сектор.
В процессе выполнения команд чтения и записи для временного изменения эффективного размера дискового сектора используется специальный параметр размера сектора DTL., задающий длину 1…256 байт. Если фактический сектор больше сектора, указанного параметром DTL, в ЭВМ считывается только число байтов, указанных этим параметром, остальная часть фактического дискового сектора не считывается (данные проверяются по КК). Аналогично происходит процесс записи на диск.
Многосекторный режим чтения обеспечивается таким же образом, как и при нулевом коде размера сектора. Параметры N и DTL всегда присутствуют при задании команд чтения — записи данных. Параметр DTL должен быть установлен на шестнадцатеричное число FF при нулевом значении N.
Если физическая индексная метка фиксируется дважды без нахождения запрашиваемого сектора, то КГМД устанавливает признак «Необнаруженный сектор» (разряд D2 в РС1) и завершает команду считывания данных. Код прерывания устанавливается на 01 (разряды D7 и D6 РС0).
Ошибка «Необнаруженный сектор» может появиться в многосекторном режиме после чтения части секторов и в случаях, когда номер конкретного сектора упущен при форматировании дорожки или систематическая ошибка на диске делает секторное поле ID нечитаемым.
Таблица 10 Значение индексных байтов в фазе контроля результата при завершении команды
МТ | EOT | Сектор | Сторона | Байт информации | ||||
C; H; R; N | ||||||||
IA OF | 1…25 1…14 1…7 | NC | NC | R+1 | NC | |||
IA OF | C+1 | NC | R=01 | NC | ||||
IA OF | 1…25 1…14 1…7 | NC | NC | R+1 | NC | |||
IA OF | C+1 | NC | R=01 | NC | ||||
IA OF | 1…25 1…14 1…7 | NC | NC | R+1 | NC | |||
IA OF | C+1 | R=01 | NC | |||||
IA OF | 1…25 1…14 1…7 | NC | NC | R+1 | NC | |||
IA OF | C+1 | R=01 | NC | |||||
После считывания поля ID и поля данных на каждом секторе КГМД проверяет байты КК. При обнаружении ошибки считывания (некорректный КК в поле ID или в поле данных) КГМД устанавливает признак «Ошибка данных» в РС1. Если ошибка КК появляется только в поле данных, то признак устанавливается в РС2. В любом случае КГМД завершает команду считывания данных. Код прерывания (разряды D7 и D6 в РС0) устанавливаются в состояние 01.
Если метка адреса удаленных данных считывается с диска, а признак пропуска (указанный в командной фазе) не установлен, то КГМД выдает признак «Контрольная метка» (разряд D6 РС2) и завершает команду чтения данных (после считывания всех данных в секторе).
По признаку пропуска КГМД пропускает сектор с адресной меткой удаленных данных и считывает следующий, т. е. признак пропуска может быть использован для игнорирования контроллером секторов с удаленными данными в процессе считывания в мультисекторном режиме.
Во время обмена данными между ГМД и ЭВМ контроллер должен обслуживаться системой (процессором или контроллером ПДП) каждые 27 мкс в режиме МЧМ. В противном случае устанавливается признак переполнения (разряд D4 в РС1) и команда чтения данных завершается.
В фазе контроля результата команды данные зависят от состояния признака многодорожечного режима и адреса последнего обработанного сектора (табл. 10).
Запись данных. Для завершения спецификации фазы задания по команде «Запись данных» требуется девять байтов. КГМД загружает головку и считывает секторные поля ID. Когда запрашиваемый секторный адрес сравнивается с секторным адресом, считываемым с диска, КГМД принимает данные от процессора через информационную шину (канал данных) и записывает данные в поле данных требуемого сектора. Два байта КК записываются в конце этого поля.
КГМД считывает поле ID каждого сектора и проверяет байты КК. Если фиксируется ошибка считывания (некорректный КК) в одном из полей ID, он устанавливает признак «Ошибка данных» (разряд D5 В РС1) и завершает выполнение команды «Запись данных». Код прерывания (разряды D7 и D6 РС0) устанавливается в состояние 01.
Режимы и признаки команд записи и чтения данных подобны. В исполнительной фазе команды «Запись данных» обмен данными между процессором и КГМД должен происходить каждые 31 мкс в режиме ЧМ и каждые 15 мкс в режиме МЧМ. Если временной интервал больше, КГМД устанавливает признак переполнения (разряд D4 РС1) и завершает команду.
Считывание удалённых данных выполняется подобно команде «Считывание данных». Единственная разница заключается в обработке адресной метки данных и признака пропуска. Когда КГМД фиксирует адресную метку данных в начале поля данных (признак пропуска не был установлен), считываются все данные, записанные в секторе, устанавливается признак «Контрольная метка» (разряд D6 РС2) и завершается выполнение команды. Если признак пропуска установлен, от КГМД пропускает этот сектор и продолжает считывание следующего сектора. Признак пропуска может быть использован для считывания только секторов с удалёнными данными в многосекторном режиме считывания.
Запись удалённых данных выполняется в том же порядке, что и команда записи данных, за исключением того, что адресная метка удаленных данных вводится в начале поля данных вместо адресной метки обычных данных. Данной командой можно поместить «плохой» сектор, содержащий систематическую ошибку.
Команда «Чтение дорожки» аналогична команде «Чтение данных», только вся информация (метки, адреса и данные) считываются непрерывно. Сразу же после обнаружения физической индексной метки КГМД начинает считывание индексной информации и данных с дорожки, как одного непрерывного блока данных. Даже в случае ошибки в байтах КК поля данных или поля ID КГМД продолжает считывать данные с дорожки. Он сравнивает информацию ID, считанную из каждого сектора, со значениями, указанными в командной фазе. Если информация поля ID не обнаруживается на дорожке, то в РС1 устанавливается признак «Необнаруженный сектор». Данная команда не допускает многодорожечного режима и операции пропуска данных. Она завершается после считывания последнего сектора дорожки (число секторов на дорожке указано в байте параметра дорожки в командной фазе). Если КГМД не обнаруживает адресной метки IDAM на диске после второго прохождения физической индексной метки (т.е. за два оборота диска), он устанавливает признак «Недостающая адресная метка» (разряд D0 в РС1) и завершает команду. Код прерывания (разряды D7 и D6 РС0) устанавливается на 01.
По команде «Чтение индексных данных» данные с первого корректного поля ID текущей дорожки передаются на процессор. Если на дорожке отсутствует адресная метка IDAM, устанавливается признак «Недостающая адресная метка» (разряд D0 РС1); если метка данных — признак «Необнаруженный сектор» (разряд D2 РС1). В обоих случаях происходит завершение команды.
По командам сканирования данные, считанные с диска, сравниваются с данными, поступающими с ЭВМ (из процессора в режиме НПДП или из контроллера в режиме ПДП). КГМД сравнивает данные на побайтовой основе и находит сектор диска с данными, удовлетворяющие следующим условиям: равны, меньше или равны, больше или равны системным данным.
Для сравнения используется простая бинарная (дополнение до единицы) арифметика (FF — наибольшее число, 00 — наименьшее).
Если после сравнения полного сектора данных условия не удовлетворяются, номер сектора увеличивается за счёт шага адреса сканирования (указанного в командной фазе). Сканирование продолжается до тех пор, пока не появится одно из следующих событий: условия для сканирования удовлетворяются (равные, меньше или больше), достигнут последний сектр на дорожке или получен сигнал ТС.
При удовлетворении условий сканирования КГМД устанавливает признак «Совпадение сканирования» (разряд D3 РС2) и завершает команду сканирования. Если условия сканирования не удовлетворяются между стартовым и последним сектором на дорожке (сканируемые секторы определяются в командной фазе), КГМД устанавливает признак «Сканирование не удовлетворено» (разряд D2 РС2) и завершает команду сканирования.
Как только во время сканирования сигнал ТС от процессора или контроллера ПДП поступит на КГМД, он прекратит операцию сравнения конкретного текущего байта. При этом команда завершается. Коды состояния признаков «Совпадение сканирования» и «Сканирование не удовлетворено» для различных условий завершения сканирования приведены в табл. 11.
Таблица 11 Коды состояния сканирования
Команда | РС2 | Соотношение данных ГМД и ЭВМ | ||
Разряд D2 | Разряд D3 | |||
Сканирование равно | Равны Не равны | |||
Сканирование меньше или равно | Равны Меньше Меньше, равны | |||
Сканирование больше или равно | Равны Больше Больше, равны | |||
Если КГМД обнаруживает адресную метку удалённых данных в одном из секторов и признак пропуска имеет низкий уровень, то сектор рассматривается как последний на дорожке, Устанавливается признак «Контрольная метка» (разряд D6 РС2) и завершается команда. Если признак пропуска имеет высокий уровень, КГМД пропускает сектор с адресной меткой удалённых данных и считывает следующий сектор. В этом случае также устанавливается признак «Контрольная метка» (разряд D6 РС2), показывающий, что обнаружен стертый сектор.*
Во время сканирования данные передаются из процессора или контроллера ПДП для сравнения с данными, считанными с диска. Для исключения установки признака переполнения (разряд D4 РС0) необходимо, чтобы данные выбирались не более, чем через 27 мкс (режим ЧМ) или 13 мкс (режим МЧМ). Если ошибка из-за переполнения является, КГМД завершает эту команду.
Недопустимые команды. Если на КГМД подаётся недопустимая (неопределенная) команда, он прекращает выполнение другой команды и не выдает сигнала прерывания. В основном РС устанавливаются разряды D6 и D7, указывая процессору, что контроллер требует заключительной фазы выполнения команды. В качестве завершения должно быть считано содержимое РС0, в том числе шестнадцатеричный код 80, указывающий на прием недопустимой команды.
Необходимо отметить, что команда «Опрос состояния прерывания» должна посылаться после команды «Поиск» или «Восстановление», в противном случае КГМД будет принимать следующую команду, как недопустимую. Кроме того, после обслуживания последнего «утаенного» прерывания повторные команды «Опрос состояния прерывания» также воспринимаются как недопустимые.
В некоторых случаях полезно использовать недопустимую команду, как команду No — Op для переключения КГМД в резервное или нерабочее состояние.
* Во время выполнения команд сканирования последний сектор на дорожке должен быть считан для соответствующего завершения команды. Например, шаг адреса сканирования устанавливается равным 2, конец дорожки (последний сектор) — 26. Сканирование начинается с сектора 21, тогда будут сканированы секторы 21, 23, 25. следующий сектор 27 на дорожке обнаружен не будет и произойдёт непредусмотренное завершение команды. Для нормального завершения необходимо, чтобы в данном примере сканирование начиналось с сектора 20 или конец дорожки был установлен равным 25.