Контроллер дисковода 1818ВГ93
Данный материал защищён авторскими правами!
Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей. Автор: D.NESTERENKO & A.DOLGIH |
Контроллер дисковода. █ ██ █ ██ ██ ██ ██ █ █ ██ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ███ ████ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ ██ █ █ ██ █ ██ █ █ █ ██ █ ██ █ █ █ █ █ █ ████ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █████ █ █ █ █ С О Д Е Р Ж А Н И Е 1. Введенние ........................................... 2. Функциональное обозначение ........................... 3. Технические данные и характеристики ................... 4. Назначение выводов микросхемы ......................... 5. Устройство микросхемы ................................. 6. Устройство и работа функциональных узлов микросхемы ... 7. Описание команд и алгоритма работы микросхемы. ........ 1. Введенние Нижеследующее техническое описание и инструкция по эксплуата- ции предназначены для изучения микросхемы КР1818ВГ93 и содержат сведе- ния, необходимые для правильной ее эксплуатации. 2. Функциональное обозначение 2.1 Микросхема КР1818ВГ93 представляет собой однокристальное программируемое устройство, предназначенное для упрвления выводом информации из ЭВМ на гибкие магнитные диски и вводом инфор- мации из накопителя на гибких магнитных дисках (НГМД) в ЭВМ. 2.2 Микросхема обеспечивает программирование номера дорожки номера сектора, номера стороны, длины сектора, режима поиска дорожки, установки магнитной головки в среднее или исходное положение, режимов чтения или записи информации, скорости перемещения МГ. 2.3 Микросхема обеспечивает автоматический контроль считываемой и записываемой информации по контрольному коду (КК), записанному в конце индексного или информационного массива. Индексный массив определяет адресную метку, номер сектора, длину сектора, номер дорожки. Информационный массив содержит непосредственно данные. 2.4 Микросхема обеспечивает выдачу сигналов предкомпенсации в зависимости от кодов, представляющих информацию. 2.5 Вывод информации из ЭВМ выполняется по сигналу "ЗАПРОС ДАННЫХ" / DRQ / формируемому микросхемой, а считывание опреде- ляется сигналами "ГОТОВНОСТЬ" и "ИНДЕКСНЫЙ ИМПУЛЬС", выдаваемыми аппаратурной логикой НГМД. 3. Технические данные и характеристики 3.1 Электрические параметры микросхемы в диапазоне температур от -10 до +70 градусов при напряжении питания 5,0 В + 5% и 12 В + 5 % следующие: 1. входное напряжение высокого уровня не менее 2,6 В 2. входное напряжение низкого уровня не более 0,8 В 3. минимальное входное напряжение низкого уровня - 0,5 В 4. выходное напряжение высокого уровня не менее 2,8 В 5. выходное напряжение низкого уровня не более 0,45 В 6. выходной ток высокого уровня не более - 015 мА 7. выходной ток низкого уровня не более 1,9 мА 8. емкость нагрузки по выходам не более 100 пф 9. максимальная потребляемая мощность не более 500 мВт 10. амплитудное значение напряжений пульсации питания не более + 50 мВ 3.2 Микросхема по входам и выходам совместима с ТТЛ-схемами серии 155. 3.3 Обмен информацией с ЭВМ осуществляется по 8-ми разрядному дву- направленному каналу DB0 - DB7 3.4 Режимы работы микросхемы: - поиск дорожки на НГМД; - установка исходного состояния МГ; - запись информации на ГМД; -считывание информации с ГМД; 3.5 Запись информации на ГМД осуществляется с одинарной или двойной плотностью по ОСТ II305.919-84. 3.6 Микросхема обеспечивает работу с ГМД размером 133 или 203 мм /по длине стороны конверта/. 3.7 Допустимое число рабочих поверхностей ГМД - две. 3.8 Максимальное программируемое количество дорожек на ГМД - 256. 3.9 Максимальная скорость обмена информацией для одинарной плотности записи - 250 Кбит/с; при удвоенной плотности записи 500 Кбит/с. 3.10 Тактовая частота внешнего генератора 1МГц; 2МГц. 3.11 Тип корпуса 2.123.40-2 ГОСТ 17467-79 3.12 Микросхема содержит 7330 транзисторов. 3.13 Масса не более 6 г. 4. Назначение выводов микросхемы Табл.1 ╔═══════╤═════════════╤═══════════════════════════════════════════════════╗ ║ Номер │ Обозначение │ Выполняемая функция ║ ║ вывода│ │ ║ ║───────┼─────────────┼───────────────────────────────────────────────────║ ║ 1 │ BS │ Вывод микросхемы не подключается. Предназначен ║ ║ │ │ для контроля уровня напряжения смещения подложки ║ ║ │ _ │ ║ ║ 2 │ W │ Разрешение записи.Сигнал низкого уровня разрешает ║ ║ │ │ запись с шины данных в выбранный регистр при нали-║ ║ │ │ чии сигнала CS. ║ ║ │ __ │ ║ ║ 3 │ CS │ Выбор микросхемы. Сигнал низкого уровня на входе ║ ║ │ │ разрешает связь ЭВМ с выбранной микросхемой. ║ ║ │ _ │ ║ ║ 4 │ R │ Разрешение чтения. Сигнал низкого уровня на входе ║ ║ │ │ обеспечивает вывод информации из выбранного реги- ║ ║ │ │ стра на шину данных DB0 - DB7 при наличии сигнала ║ ║ │ │ CS. ║ ║ │ │ ║ ║ 5,6 │ А0,А1 │ Адресные шины. Код на этих шинах определяет выбор ║ ║ │ │ соответствующего регистра для приема/передачи ║ ║ │ │ информации с/на шину данных при наличии сигнала ║ ║ │ │ CS, как показано ниже: ║ ║ │ │ ┌────┬────┬─────────┬─────────┐ ║ ║ │ │ │ A1 │ A0 │ R │ W │ ║ ║ │ │ ├────┼────┼─────────┼─────────┤ ║ ║ │ │ │ 0 │ 0 │ Рг.Сост │ Рг.Ком │ ║ ║ │ │ │ 0 │ 1 │ Рг.Дор │ Рг.Дор │ ║ ║ │ │ │ 1 │ 0 │ Рг.Сект │ Рг.Сект │ ║ ║ │ │ │ 1 │ 1 │ Рг.D │ Рг.D │ ║ ║ │ │ └────┴────┴─────────┴─────────┘ ║ ║ │ │ ║ ║ 7-14 │ DB0-DB7 │ 8-разрядная двунаправленная шина данных. Прием ║ ║ │ │ данных от шины в микросхему осуществляется по ║ ║ │ │ сигналам W и CS. Передача данных от микросхемы ║ ║ │ │ на шину данных в ЭВМ выполняется по сигналам ║ ║ │ │ R и CS. ║ ║ │ │ ║ ║ 15 │ STEP │ Выходной импульс для перемещения МГ на один шаг ║ ║ │ │ ║ ║ 16 │ DIRC │ Сигнал, указывающий направление перемещения МГ: ║ ║ │ │ высокий - к центру ГМД ║ ║ │ │ низкий - от центра ГМД ║ ║ │ │ ║ ║ 17 │ SL │ Выходной сигнал, указывающий,что импульс данных ║ ║ │ │ WD должен быть сдвинут влево для предкомпенсации. ║ ║ │ │ ║ ║ 18 │ SR │ Выходной сигнал, указывающий, что импульс данных ║ ║ │ │ WD должен быть сдвинут вправо для предкомпенсации.║ ║ │ ___ │ ║ ║ 19 │ CLR │ Сброс. Сигнал низкого уровня на этом входе обеспе-║ ║ │ │ чивает установку всех устройств микросхемы в ║ ║ │ │ исходное состояние и запись кода 0000.0011 в ре- ║ ║ │ │ гистр команд. На шине "ГОТОВ" ( бит 7 регистра ║ ║ │ │ состояния ) устанавливается низкий уровень напря- ║ ║ │ │ жения в течение действия сигнала CLR. По окончании║ ║ │ │ действия сигнала CLR выполняется команда "ВОССТА- ║ ║ │ │ НОВЛЕНИЕ" независимо от готовности НГМД. Кроме ║ ║ │ │ того,записывается код 0000.0001 в регистр сектора.║ ║ │ │ ║ ║ 20 │ GND │ Корпус ║ ║ │ │ ║ ║ 21 │ Ucc1 │ Источник питания 5В + 5% ║ ║ │ ____ │ ║ ║ 22 │ TEST │ При подаче на этот вход сигнала высокого уровня ║ ║ │ │ микросхема вырабатывает импульсы управления пере- ║ ║ │ │ мещением МГ (STEP) с повышенной частотой. Исполь- ║ ║ │ │ зуется только при проверках работы микросхемы. ║ ║ │ │ ║ ║ 23 │ HRDY │ МГ занята. Входной сигнал, указывающий, что МГ го-║ ║ │ │ това к считыванию записи после установки сигнала ║ ║ │ │ HLD. ║ ║ │ │ ║ ║ 24 │ CLC │ Сигналы тактовой частоты. Вход, на который пода- ║ ║ │ │ ются тактовые прямоугольные импульсы частотой: ║ ║ │ │ 2 МГц + 1% для ГМД диаметром 203 мм. ║ ║ │ │ 1 МГц + 1% для ГМД диаметром 133 мм. ║ ║ │ │ ║ ║ 25 │ RSTB │ Строб чтения. Этот выход используется для под- ║ ║ │ │ тверждения приема данных от НГМД. На выходе уста- ║ ║ │ │ навливается напряжение высокого уровня после при- ║ ║ │ │ ема двух байтов нулей при одинарной плотности ║ ║ │ │ и после приема четырех байтов нулей или единиц ║ ║ │ │ при удвоенной плотности записи. ║ ║ │ │ ║ ║ 26 │ S │ Синхронизирующий тактовый сигнал, вырабатываемый ║ ║ │ │ НГМД присчитывании информации. ║ ║ │ ____ │ ║ ║ 27 │ RAWR │ Импульсный сигнал входных данных, считываемых ║ ║ │ │ НГМД. Положение по фазе четко определено относи- ║ ║ │ │ тельно сигналов тактовой частоты. ║ ║ │ │ ║ ║ 28 │ HLD │ Выходной сигнал,указывающий на загрузку МГ при ║ ║ │ │ считывании - записи. ║ ║ │ │ ║ ║ 29 │ TR43 │ Выходной сигнал, указывающий, что МГ находится ║ ║ │ │ между дорожками 44-76. Генерация сигнала происхо- ║ ║ │ │ дит только в процессе выполнения команд "СЧИТЫВА- ║ ║ │ │ НИЕ", "ЗАПИСЬ". ║ ║ │ │ ║ ║ 30 │ WSTB │ Строб записи. Сигнал подтверждает процесс записи ║ ║ │ │ информации на ГМД. ║ ║ │ │ ║ ║ 31 │ WD │ Сигнал записи данных на ГМД. Длительность импуль- ║ ║ │ │ сов 500 нс при одинарной плотности записи и 300 нс║ ║ │ │ при удвоенной плотности записи ( fclc=2 МГц ). ║ ║ │ │ ║ ║ 32 │ CPRDY │ Входной сигнал, указывающий на готовность НГМД ║ ║ │ │ выполнять команды "СЧИТЫВАНИЕ" или "ЗАПИСЬ". ║ ║ │ │ Если сигнал CPRDY низкого уровня, команды "СЧИТЫ- ║ ║ │ │ ВАНИЕ", "ЗАПИСЬ" не выполняются и вырабатывается ║ ║ │ │ сигнал "ПРЕРЫВАНИЕ". Вспомогательные команды, обе-║ ║ │ │ спечивающие подготовку НГМД к работе, выполняются ║ ║ │ │ независимо от состояния сигнала CPRDY ( "ГОТОВ" .)║ ║ │ │ Этот сигнал в инверсном виде поступает на вход 7 ║ ║ │ │ бита регистра состояния. ║ ║ │ │ ║ ║ 33 │ WF/DE │ Двунаправленная шина, используемая для обозначения║ ║ │ │ ошибки записи и разрешения выбора данных, поступа-║ ║ │ │ ющих от ЭВМ. Если сигнал WSTB = 1, вывод WF/DE ║ ║ │ │ функционирует как WF - вход. Если сигнал WF = 0, ║ ║ │ │ запись какой-либо команды будет немедленно прекра-║ ║ │ │ щена. Если сигнал WSTB = 0, вывод 33 функционирует║ ║ │ │ как DE - выход. На выходе DE в прцессе чтения по- ║ ║ │ │ сле загрузки МГ и установки высокого уровня сигна-║ ║ │ │ ла будет напряжение низкого уровня. К этому выходу║ ║ │ │ подается напряжение Ucc1 через резистор 10 кОм. ║ ║ │ ____ │ ║ ║ 34 │ TR00 │ Входной сигнал, указывающий микросхеме, что МГ ║ ║ │ │ установлена в исходное положение. ║ ║ │ __ │ ║ ║ 35 │ IP │ Входной сигнал с НГМД, информирующий микросхему о ║ ║ │ │ том, что индексный импульс считан и ГМД начал оче-║ ║ │ │ редной оборот. ║ ║ │ ____ │ ║ ║ 36 │ WPRT │ Входной сигнал запрещения записи на ГМД. Низкий ║ ║ │ │ уровень сигнала прекращает запись и устанавливает ║ ║ │ │ бит регистра состояния. ║ ║ │ ____ │ ║ ║ 37 │ DDEN │ Входной сигнал, указывающий микросхеме, с какой ║ ║ │ │ плотностью должны выполняться операции. ║ ║ │ │ ║ ║ 38 │ DRQ │ Выходной сигнал в режиме чтения указывает, что ║ ║ │ │ регистр данных содержит данные для передачи. В ║ ║ │ │ режиме записи сигнал DRQ указывает на готовность ║ ║ │ │ приема информации с шины данных. ║ ║ │ │ Этот сигнал устанавливается в состояние низкого ║ ║ │ │ уровня, если данные считаны в ЭВМ или если данные ║ ║ │ │ записаны из ЭВМ в регистр данных. Резистор 10 кОм ║ ║ │ │ необходимо подключить к выводу 38 и источнику пи- ║ ║ │ │ тания +5В. ║ ║ │ │ ║ ║ 39 │ INTRQ │ На этом выходе устанавливается напряжение высокого║ ║ │ │ уровня, если выполнена какая-либо команда, и на- ║ ║ │ │ пряжение низкого уровня, если считывается с реги- ║ ║ │ │ стра состояния информация или записывается в ре- ║ ║ │ │ гистр команд. Резистор 10 кОм необходимо подклю- ║ ║ │ │ чить к выводу 39 и источнику питания +5В. ║ ║ │ │ ║ ║ 40 │ Ucc2 │ Источник питания 12 В + 5% ║ ║ │ │ ║ ╚═══════╧═════════════╧═══════════════════════════════════════════════════╝ 5. Устройство микросхемы 5.1. Микросхема, структурная схема которой изображена на рис.1, состоит из следующих основных узлов: 1. буферная схема шины данных БD (1); 2. устройство ввода-вывода УВВ (2); 3. регистр данных Рг.D (3); 4. регистр сдвиговый Рг.Сдв (4); 5. регистр сектора Рг.Сект (5); 6. регистр дорожки Рг.Дор (6); 7. регистр состояния Рг.Сост (7); 8. регистр команд Рг.Ком (8); 9. дешифратор адресного массива DC AM (9); 10. арифметико-логическое устройство АЛУ (10); 11. логика управления генерацией контр.кода(11); 12. счетчик команд (12); 13. дешифратор управления (13); 14. ПЗУ (14). 5.2. Буферная схема шины данных БD (1) обеспечивает двунаправленную ра- боту шины как входа-выхода. Буферная схема включает элементы nИ-mИЛИ (где n,m=1,2,3,4...) для вы- вода данных из внутренних регистров микросхемы. 5.3. Устройство ввода-вывода УВВ (2) включает сборки логических элементов для формирования разрешаюших сигналов для ввода информации от ЭВМ, сигналов вывода информации о данных, состоянии различных узлов микросхемы, содержи- мого адресных регистров. Порядок обращения к требуемым регистрам приведен в табл.1 при описании выводов A1,A0. 5.4. Регистр данных Рг.D (3) и регистр сдвиговый Рг.Сдв (4) предназна- чены для приема, хранения и преобразования в последоветельный код данных принятых с шины DB0-DB7 призаписи и накопления последовательности данных передачу их в Рг.D и на шину DB0-DB7 присчитывании информации с ГМД. Длина регистров 8 разрядов (бит). 5.5. 8-битный регистр сектора Рг.Сект (5) предназначен для хранения информации о номере считываемого ( записываемого) сектора. 5.6. 8-битный регистр дорожки Рг.Дор (6) предназначен для записи номера требуемой дорожки или содержания информации о номере дорожки, на которой находится МГ. 5.7. Регистр состояния Рг.Сост (7) определяет текущее состояние раз- личных функциональных узлов микросхемы. Элементы регистра состояния нахо- дятся в различных местах схемы, выходы выведены на шину данных, отдельные разряды выведены на Рг.D. 5.8. Регистр команд Рг.Ком (8) предназначен для хранения текущей выполняемой команды. Запись в Рг.Ком выполняется по разрешающему сигналу __ __ _ __ А1*А0*W*CS Считывание команды на шину данных невозможно. Выходы регистра команд подключены к дешифратору команд и счетчику команд. По сигналу CLR "СБРОС" в Рг.Ком записывается код 03,определяющий исходдый адрес программы. 5.9. Дешифратор адресного массива DC AM (9)представляет собой 32-тактную линию задержки последовательного кода и собственно дешифратор, выполненный в виде последовательной сборки транзисторов. Разрешение на считывание кодов поступает из логики упрвления ( DC Ком ). DC AM содержит пять после- довательных сборок. 5.10 Арифметико-логическое устройство АЛУ (10) выполняет операции сравне- ния кодов регистров, контрольных кодов, увеличения содержимого регистра номера дорожки и т.п. 5.11. Логика управления генерацией КК (11) выполняет генерацию в виде двух байтов как результат вычисленея циклического полинома: 15 12 5 G(X) = X + X + X + 1 где X - вводимая последовательность кодов. КК записывается в конце адресного и информационного мвссивов. 5.12. Постоянное запоминающее устройство ПЗУ (14) вместе с дешифратором управления DC Упр (13) и счетчиком команд Сч.Ком (12) определяет алгоритм работы всей микросхемы. На выходах ПЗУ построен дешифратор команд, выходы которого управляют всеми устройствами микросхемы. 6. Устройство и работа функциональных узлов микросхемы 6.1. Устройство и работа функциональных узлов микросхемы показаны на структурной схеме (см. рис.1). |--| |БД|<-------------------------------------------------------------------------| | | ^ ^ ^ ^ | | |----|---|---------|----|-------|-----|-------|------|----------| | |1 | | | | | | | | | | | |--| V | V | V | V | V | |--------| |---------| |---------| |----------| |----------| | |------------| |->| Рг D 3| |->|Рг Сект5 ||->|Рг Дор 6 ||->|Рг Сост 7| |->| Рг Ком 8 | | -->| Сч.Ком (12)|---| | |--------| | |---------|| |---------|| |----------| | |----------| | | |------------| | | | | | | | | | | | | | | | V V | | | | | | | | |------------| | | |--------| | | | | | |---|-----|DC Упр (13) | | |--|Рг Сост4|-|-| | | | | | | |------------| | | |--------| | | | | | | | | | | | / | | | | / | | |---------| | |-----------/---|------------------------------------------------/ | | | КК (11) | | | | | |---------| | | |----------| | | | | | |--------| DC AM 9 |<-------| | |---------| | | | |----------| |-----| ПЗУ (14)|------| | | | |---------| \------------------------- | | |----------| | |--------| ALU 10 |<------------ рис.1 |----------| 6.2. Питание микросхемы осуществляется от источников напряжения 5В + 5% и 12В + 5%. Логические элементы представляют собой стандартное включение транзисторов с индуцированным каналом по схеме И и ИЛИ. Питание логичес- ких элементов осуществляется от источника напряжением 5В через зарядный ( нагрузочный ) транзистор. При этом на его затвор поступает управляющий сигнал от формирователей сигналов напряжением 7В + 5%. 6.3. Схема формирования тактовых импульсов построена на элементах DD1- DD48. Она представляет собой следующее логическое устройство. С формирова- теля тактовой частоты, расположенного на входе 24, импульсы CLC I поступа- ют на вход делителя частоты CT0 - CT2. На выходах делителя частоты логи- ческие сборки формируют серии импульсов CLC2, CLC3, CLC4 соответственно. Из этих серий импульсов в соответствии с заданным режимом работы микро- схемы формируются тактовые импульсы T1, -T1, T2, -T2, обеспечивающие за- пись информации в регитры, передачу из одного регистра в другой, сдвиг информации на линиях задержки и т.п. 6.4. Формирование отрицательного напряжения смещения на подложке выпол- няется с помощью схемы генератора периодических сигналов ( рис.2 ). Гене- ратор представляет собой мультивибратор, выходной сигнал которого посту- пает на разделительный конденсатор, с которого на подложку через транзис- тор в диодном включении подаются отрицательные импульсы. Питание мульти- вибратора осуществляется от источника напряжения 12В + 5%. 6.5. УВВ обеспечивает прием информации, поступающей от ЭВМ,преобразова- ние ее в последовательный код, выдачу на интерфейсную логику и передачу от интерфейсной логики в ЭВМ. УВВ включает: логику упрвления вводом-выводом; регистр данных Рг.D; регистр сектора Рг.Сект; регистр дорожки Рг.Дор; регистр команд Рг.Ком; регистр состояния Рг.Сост; регистр сдвиговый Рг.Сдв; двунаправленную шину данных DB0 - DB7. Параллельный регистр данных Рг.D обеспечивает прием информации с шины данных DB0 - DB7. Каждый разряд имеет три входа. Ввод информации от линии DBi на вход 1 осуществляется при наличии ко- манды записи W, сигнала выбора микросхемы CS и кода адреса A0,A1 (A0=1, A1=1). На входе 2 Рг.D осуществляется ввод информации с Рг.Сдв при наличии команды "Зап.Рг.D", поступающей от логики управления. Вход 3 обеспечивает обратную связь в триггере регистра при отсутствии команд обращения к нему. Таким образом, функционирование каждого разряда Рг.D можно записать уравнением: ______ _ __ __ __ Рг.Di = Рг.Di * W V Рг.Сдв * Зап.Рг.D V DBi * W * CS * A0 * A1 Регистр дорожки Рг.Дор обеспечивает запоминание номера дорожки при текущей записи информации с шины данных DB0 - DB7. Ввод информации осу- ществляется от линии DBi при наличии команды записи W, сигнала выбора микросхемы CS и кода адреса A0,A1 ( A0=1, A1=0 ). На входе 2 осуществляется обратная связь триггера регистра при отсут- ствии команды W. На входе 3 Рг.Дор осуществляется микромонтирование номера дорожки при наличии команды "Зап.Дор". Во всех остальных разрядах Рг.Дор1 - Рг.Дор7 на входе 3 осуществляется перенос информации предыдущего разряда Рг.Дорi-1 приналичии команды "Зап.Дор". Таким образом, функционирование Рг.Дор ( разряды Рг.Дор0 - Рг.Дор7 ) описывается следующим уравнением : _______ __ Рг.Дорi = (Рг.Дорi * W V Рг.Дорi-1 * Зап.Дор V DBi * W * A0 * A1)* T1 Регистр сектора Рг.Сект обеспечивает запоминание номера сектора при текущей записи информации с шины данных DB0 - DB7. Ввод информации осу- ществляется с шины данных DB0 - DB7 при наличии команды W, сигнала выбора микросхемы CS, а также кода адреса A0,A1 ( A0=0, A1=1). На входе 2 Рг.Сект обеспечивается обратная связь в триггере Рг.Сектi при отсутствии команды W или команды "Зап.Рг.Сект". На входе 3 нулевого разряда Рг.Сект0 осуществляется ввод считанного нормера сектора с ГМД по команде "Чт.Сект", поступающей от АЛУ. Во всех остальных разрядах регистра сектора Рг.Сект1 - Рг.Сект7 осу- ществляется перенос информации Рг.Сектi-1 при наличии команды "Чт.Сект". Кроме того, при подаче тактового сигнала Т1 в Рг.Сект0 записывается единица, а в остальные разряды Рг.Сект1 - Рг.Сект7 нули. Тогда для Рг.Сект0 можно записать: ___________ Рг.Сект0 = Рг.Сект0 * ( W V Зап.Рг.Сект ) V Чт.Сект * RR V _ __ __ __ V DB0 * W * CS * A0 * A1 а для остальных разрядов Рг.Сект справедливо выражение: ________ ___________ Рг.Сектi = Рг.Сектi * ( W V Зап.Рг.Сект ) V Чт.Сект * Рг.Сектi-1 V _ __ __ V DBi * W * CS * A0 * A1 где i = 1 - 7 Регистр команд Рг.Ком запоминает выполняемую в данный момент команду, которая поступает с шины данных DB0 - DB7. Ввод информации осуществляется от линии DBi приналичии сигнала выбора микросхемы CS,команды W и кода адреса A0,A1 ( A0=0, A1=0 ). На входе 2 Рг.Ком обеспечивается обратная связь в триггере Рг.Комi при отсутствии команды W, сигнала CS и кода адреса A0,A1. При подаче сигнала Т1 разряды Рг.Ком0 и Рг.Ком1 регистра команд уста- навливаются в единичное состояние. Функционирование Рг.Ком описывается уравнением: _______ __ __ _ __ __ __ __ Рг.Комi = ( Рг.Комi * W * CS * A0 * A1 V DBi * W * CS * A0 * A1 ) * T1 где i = 2 - 7 Сдвиговый регистр Рг.Сдв в режиме записи принтмает данные с Рг.D при наличии команды "Зап.Рг.Сдв". На вход 3 Рг.Сдв подается считанная информация с ГМД при наличии команды "Зап.RR". Кроме того, разряды сдвигового регистра Рг.Сдв0,2,3,4,5 исполь- зуются для контроля вводимой информации выбором команды "Ввод КК". Следовательно функционирование Рг.Сдв описывается следующим уравнением: Рг.Сдвi = Рг.Di * Зап.Рг.Сдв V RR * Зап.RR V CRC 0,2,3,4,5 Регистр состояний Рг.Сост запоминает информацию о состоянии различных функциональных узлов микросхемы. Рг.Сост непосредственно представляет собой совокупность триггеров, распределенных по всей площади кристалла. Выходы триггеров выведены на шину данных, причем на отдельных выводах размещено по несколько выходов, что объясняется функциональным назначением каждого разряда триггера. Общее назначение разрядов Рг.Сост приведено в табл.2. Функциональное назначение каждого разряда при выполнении команд следую- щее: S7 ( НГтв ) - единица в этом разряде указывает, что ГМД не готов к работе. Команды считывания данных с диска или записи их на диск и команды поиска и чтения индексного поля на ГМД в этом случае не выполняются. S6 ( WPRT ) - сигнал защиты записи; единица в этом разряде запрещает режимы вывода информации на ГМД, в остальных случаях не используется. S5 ( загрузка МГ ) - единица в этом разряде указывает на то, что МГ загружена. Это состоянте определяется логическим состоянием сигнало HLD и HRDY. Применяются для выполнения вспомогательных команд ( 1 тип ). S5 ( тип записи ) - определяет характер записи в процессе выполнения команды "Чтение сектора" в соответствии с кодом адресной метки: 1 - со стиранием адресной метки; 0 - без стирания адресной метки. S5 ( ошибка записи ) - применяется в режиме "Запись дорожки". Единица в этом разряде указывает, что требуемая дорожка не найдена ( не совпада- ет адрес, ошибка КК, и т.д. ). S4 ( ошибка поиска ) - единица в этом разряде означает, что в процессе поиска требуемый массив не найден. S4 ( массив не найден ) - единица в этом разряде определяет, что при выполнении команды считывания данных с диска или записи их на диск и ко- манд поиска и чтения индексного поля на ГМД не найдены требуемые массивы на диске. При выполнении команд "Чтение дорожки" и "Запись дорожки" этот разряд не используется, так как номер дорожки не проверяется. S3 ( ошибка в КК ) - единица в этом разряде означает для всех команд, что вычисленный КК не совпадает с записанным в конце массива. S2 ( Дор.0 ) - единица в этом разряде указывает, что МГ установлена на нулевую дорожку ( для вспомогательных команд ). S2 ( потеря данных ) - единица в этом разряде указывает, что в процессе обмена информацией не обслужен сигнал "Запрос данных" привыполнении команд считывания данных с диска или записи их на диск. S1 ( индексный импульс ) - логическая единица данного разряда при вы- полнении вспомогательных команд указывает о приходе индексного импульса, а при командах считывания данных с диска или записи их на диски командах по- иска и чтения индексного поля на ГМД означает запрос или вывод очередного байта данных соответствует DRQ. S0 ( занято ) - единица в этом разряде означает, что микросхема занята выполнением одной из команд - считывания данных с диска или записи их на диск и поика и чтения индексного поля на ГМД. Относительно вспомогательных команд S0 указывает о вводе их в микросхему. Табл.2 ╔════════╤════════════════════════════════════════════════════════════╗ ║ Разряд │ Выполняемая команда ║ ║ Рг.Сост├───────────┬────────┬─────────┬─────────┬─────────┬─────────╢ ║ │ Вспомога- │ Чтение │ Чтение │ Чтение │ Запись │ Запись ║ ║ │ тельная │ адреса │ сектора │ дорожки │ сектора │ дорожки ║ ╟────────┼───────────┴────────┴─────────┴─────────┴─────────┴─────────╢ ║ S7 │ Указывает на готовность НГМД : 1 - не готов; 0 - готов ║ ║ НГтв │ ║ ╟────────┼───────────┬────────┬─────────┬─────────┬───────────────────╢ ║ S6 │ Защита │ 0 │ 0 │ 0 │ Защита записи ║ ║ │ записи │ │ │ │ ║ ╟────────┼───────────┼────────┼─────────┼─────────┼─────────┬─────────╢ ║ S5 │ Загрузка │ 0 │ Тип │ 0 │ Ошибка │ Ошибка ║ ║ │ МГ │ │ записи │ │ записи │ записи ║ ╟────────┼───────────┼────────┴─────────┼─────────┼─────────┼─────────╢ ║ S4 │ Ошибка │ Массив не │ 0 │Массив не│ 0 ║ ║ │ поиска │ найден │ │ найден │ ║ ╟────────┼───────────┴──────────────────┼─────────┼─────────┼─────────╢ ║ S3 │ Ошибка в │ 0 │ Ошибка в│ 0 ║ ║ │ КК │ │ КК │ ║ ╟────────┼───────────┬──────────────────┴─────────┴─────────┴─────────╢ ║ S2 │ Дор.0 │ Потеря данных ║ ║ │ │ ║ ╟────────┼───────────┼────────────────────────────────────────────────╢ ║ S1 │ ИИ │ Запрос данных ║ ║ │ │ ║ ╟────────┼───────────┴────────────────────────────────────────────────╢ ║ S0 │ Занято ║ ╚════════╧════════════════════════════════════════════════════════════╝ Двунаправленная шина данных DB0 - DB7 служит для обмена информацией. Буфер входных данных представляет собой схему 2И - mИЛИ ( DBi ). Шина DB0 принимает выходную информацию с нулевого разряда регистра данных Рг.D приналичии сигнала Т1 на входе 1. На входе 2 шины DB0 происходит прием выходной информации с нулевого ра- зряда Рг.Сост приналичии сигналов кода адреса А0,A1,CS. На вход 3 шины DB0 в режиме записи поступает выходная информация нулевого разряда Рг.Дор при наличии сигналов A0,A1,CS. Следующий вход шины DB0 обеспечивает прием выходной информации нулевого разряда Рг.Сект приналичии сигналов A0,A1,CS. Кроме того, на шину DB0 - DB7 подается сигнал R, разрешающий чтение. Для нулевого разряда DB0 можно записать: __ _ DB0 =(Рг.D0 * T1 V Рг.Сост0 V Рг.Сект0 V Рг.Дор0) * A0 * A1 * CS * R Функционирование остальных сборок DB1 - DB7 происходит аналогично. Это можно записать следующими выражениями : DB1 = (Рг.D1*T1 V Рг.Сост1*DRQ V Рг.Сост1*IP V Рг.Cект1 V Рг.Дор1)* __ _ * A0 * A1 * CS * R ________ ________ ____ DB2 = ( Рг.Сост1*Рг.Сост2 V Рг.Сост1*TR00 V Рг.Дор2 V Рг.Сект2 V __ V Рг.D2 * T1 ) * R * A0 * A1 * CS __ __ DB3 = Рг.D3 * T1 V (Рг.Дор3 V Рг.Сект3 V Рг.Сост3 ) * CS * A0 * A1 * R DB4 = Рг.D4 * T1 V (Рг.Дор4 V Рг.Сект4 V Рг.Сост4 ) * R * A0 * A1 * CS DB5 = Рг.D5 * T1 V (Рг.Дор5 V Рг.Сект5 V Рг.Сост1 * Рг.Сост5 V ___ ___ V Рг.Сост1 *( HLD V HLT ) * R * CS * A0 * A1 ________ DB6 = Рг.D6 * T1 V (Рг.Дор6 V Рг.Сект6 V Рг.Сост6 V ________ ________ ________ V Рг.Сост6 * Рг.Сост1 V Рг.Сост1 * WF/DE ) * CS * A0 * A1 * R DB7 = Рг.D7 * T1 V (Рг.Дор7 V Рг.Сект7 V DRQ V T1 ) * A0 * A1 * CS * R 6.6 К АЛУ относятся все сборки команд, построенные на выходах ПЗУ, формирователи кодов инициализаций индексного массива и контрольного кода. Формироватеель кодов инициализации индексного массива включает линию задержки, построенную на инверторах и обеспечивающую задержку входного сигнала RAWR на 16 тактов. Таким образом на линии задержки в определенные моменты времени находится информация двух байтов. Команды, выдаваемые логическими сборками ПЗУ опрашивают линию задержки ЛЗ по семи шинам. Каждая шина подключена своими входами к определенным разрядам ЛЗ. Если при опросе какой-либо шины все транзисторы ( последовательно включенные в эту шину ) открыты, на выходе сборки ИЛИ устанавливается высокий уровень напряжения . Это является подтверждением выборки требуемого байта инициа- лизации. Назначение байтов инициализации приведено в табл.3. Каждый байт инициализации может быть размещен в индексной области в соответствии с форматом массива. Таблица 3 ╔═════════╤═══════════════════════════════════════════════════════════════╗ ║ │ Назначение ║ ║ Байт ├──────────────────────────┬────────────────────────────────────╢ ║ данных │ В режиме фазовой │ В режиме модифицированной фазовой ║ ║ │ модуляции ( ФМ ) │ модуляции ( МФМ ) ║ ╟─────────┼──────────────────────────┼────────────────────────────────────╢ ║ 00 - F4 │ Запись 00 - F4 │ Запись 00 -F4 в МФМ ║ ║ │ CLK = FF │ ║ ║ │ │ ║ ║ F5 │ Не допускается │ Запись А1 в МФМ, инициализация КК ║ ║ │ │ ║ ║ F6 │ Не допускается │ Запись С2 в МФМ ║ ║ │ │ ║ ║ F7 │ Запись двух байтов КК │ Запись двух байтов КК ║ ║ │ │ ║ ║ F8 - FB │ Запись F8 - FB │ Запись F8 - FB в МФМ ║ ║ │ CLK = C7,инициализация КК│ ║ ║ │ │ ║ ║ FC │ Запись FC с CLK = D7 │ Запись FC в МФМ ║ ║ │ │ ║ ║ FD │ Запись FD с CLK = FF │ Запись FD ║ ║ │ │ ║ ║ FE │ Запись FE │ Запись FE ║ ║ │ CLK = C7,инициализация КК│ ║ ║ │ │ ║ ║ FF │ Запись FF с CLK = FF │ Запись FF ║ ║ │ │ ║ ╚═════════╧══════════════════════════╧════════════════════════════════════╝ Контрольные байты имеют следующее функциональное назначение: FC - определяет индексную метку, которая ставится перед индексным массивом; FE - адресная метка индексных данных, записывается в начале индексного массива; F7 - код, который указывает на необходимость записи результата вы- числений двух байтов КК. В таблицах 4 и 5 приведены примерные форматы массивов данных, записы- ваемы на диски соответственно с одинарной (128 байт) и двойной плотностью (256 байт). Под одинарной плотностью подразумевается запись информации с фазовой модуляцией (рис.3), а под удвоенной плотностью подразумевается запись информации с модифицированной фазовой модуляцией (рис.4). Таблица 4. ╔════════════╤════════╤══════════════════════════════════════════════════╗ ║ Количество │ Код │ Назначение ║ ║ байт │ │ ║ ╟────────────┼────────┼──────────────────────────────────────────────────╢ ║ 40 │ FF(00) │ Пятый пробел ( от начала индексного импульса) ║ ║ │ │ ║ ║ 6 │ 00 │ ║ ║ │ │ ║ ║ 1 │ FC │ Индексная метка ║ ║ │ │ ║ ║ 26 │ FF(00) │ Первый пробел ║ ║ │ │ ║ ║ 6 │ 00 │ ║ ║ ───┐ │ │ ║ ║ 1 │ О │ FE │ Адресная метка индексных данных ║ ║ │ │ │ ║ ║ 1 │ Д │ XX │ Номер дорожки ║ ║ │ │ │ ║ ║ 1 │ И │ XX │ Номер стороны диска ( 00 или 01 ) ║ ║ │ │ │ ║ ║ 1 │ Н │ XX │ Номер сектора ( 1...1А ) ║ ║ │ │ │ ║ ║ 1 │ │ XX │ Длина сектора ( 00 ) ║ ║ │ │ │ ║ ║ 1 │ │ F7 │ Запись двух байтов КК ║ ║ │ │ │ ║ ║ 11 │ С │ FF(00) │ Второй пробел ║ ║ │ │ │ ║ ║ 6 │ Е │ 00 │ ║ ║ │ │ │ ║ ║ 1 │ К │ FB │ Адресная метка данных ║ ║ │ │ │ ║ ║ 128 │ Т │ XX │ Данные ║ ║ │ │ │ ║ ║ 1 │ О │ F7 │ Запись двух байтов КК ║ ║ │ │ │ ║ ║ 27 │ Р │ FF(00) │ Третий пробел ║ ║ ────┘ │ │ ║ ║ 247 │ FF(00) │ ║ ║ │ │ Продолжение записи до выдачи прерывания ║ ║ │ │ ( четвертый пробел до начала индекса ). ║ ╚════════════╧════════╧══════════════════════════════════════════════════╝ Таблица 5. ╔════════════╤════════╤══════════════════════════════════════════════════╗ ║ Количество │ Код │ Назначение ║ ║ байт │ │ ║ ╟────────────┼────────┼──────────────────────────────────────────────────╢ ║ 80 │ 4E │ Пятый пробел ( от начала индексного импульса ) ║ ║ │ │ ║ ║ 12 │ 00 │ ║ ║ │ │ ║ ║ 3 │ F6 │ Запись С2 ║ ║ │ │ ║ ║ 1 │ FC ? │ Индексная метака ║ ║ │ │ ║ ║ 50 │ 4E │ Первый пробел ║ ║ │ │ ║ ║ 12 │ 00 │ ║ ║ │ │ ║ ║ 3 │ F5 │ Запись А1 ║ ║ │ │ ║ ║ 1 │ FE │ Адресная метка индексных данных ║ ║ │ │ ║ ║ 1 │ XX │ Номер дорожки ( 0 - 4С ) ║ ║ │ │ ║ ║ 1 │ XX │ Номер стороны ( 0 или 1 ) ║ ║ │ │ ║ ║ 1 │ XX │ Номер сектора ( 1 - 1А ) ║ ║ │ │ ║ ║ 1 │ XX │ Длина сектора ( 01 ) ║ ║ │ │ ║ ║ 1 │ F7 │ Запись двух байтов контрольного кода ║ ║ │ │ ║ ║ 22 │ 4E │ Второй пробел ║ ║ │ │ ║ ║ 12 │ 00 │ ║ ║ │ │ ║ ║ 3 │ F5 │ Запись А1 ║ ║ │ │ ║ ║ 1 │ FB │ Адресная метка данных ║ ║ │ │ ║ ║ 256 │ XX │ Данные ║ ║ │ │ ║ ║ 1 │ F7 │ Запись двух байтов КК ║ ║ │ │ ║ ║ 54 │ 4E │ Третий пробел ║ ║ │ │ ║ ║ 598 │ 4E │ Продолжение записи до выдачи прерывания ║ ║ │ │ ( четвертый пробел до начала индекса ). ║ ║ │ │ ║ ╚════════════╧════════╧══════════════════════════════════════════════════╝ Запись информации с фазовой модуляцией при fclc = 2 МГц ───────────────────────────────────────────────────────────── │ │ │ │ │ │ │ │ │ │ 1 │ 1 │ 0 │ 1 │ 0 │ 0 │ 1 │ 0 │ Код записи ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ WD ─┘ └─┘ └─┘ └─┘ └─┘ └─────┘ └─┘ └─┘ └─────┘ └─────┘ └─┘ └─┘ └─────┘ └ S/ │ │ │ │ D──┘ │ │ │ 4мкс ------->│───────│<---------- рис.3 При записи отдельных кодов с ФМ часть синхросигналов может опускаться. При этом наличие сигналов S отражается кодом CLK в табл.3. Запись информации с модифицированной фазовой модуляцией при fclc = 2 МГц ───────────────────────────────────────────────────────────────────────────── │ │ │ │ │ │ │ │ │ │ 1 │ 1 │ 0 │ 1 │ 0 │ 0 │ 1 │ 0 │ Код записи ┌─┐ ┌─┐ ┌─┐ ┌─┐ ┌─┐ WD ────┘ └─────┘ └─────────────┘ └──────────┘ └────────┘ └──────────── │ │ │ ^ │ ^ │ | │ | │ D - импульс данных S - синхросигнал │ │ │ │ 2 мкс рис. 4 ------>│-------│<-------------- 16мкс для 8D В микропрограммное устройство управления входят: - ПЗУ; - дешифратор управления DC Упр; - счетчик адреса микрокоманд Сч.МК; - логические сборки микрокоманд. ПЗУ представляет собой логическую матрицу размером 113 х 32 бит. Каждая строка ПЗУ включает код адреса следующей микрокоманды и код микрокоманды. Выходы ПЗУ попарно объеденены в разряды. Переключение четных и нечетных разрядов выпоняется с помощью выхода одного из разрядов Сч.МК. Сч.МК хранит адрес выполняемой микрокоманды и запоминает адрес следующей. На входы Сч.МК информация поступает с выходов ПЗУ или последовательно в виде единицы на первый разряд счетчика. Длина счетчика составляет восемь разрядов. Один разряд управляет переключением выходов ПЗУ, шесть разрядов управляют работой DC.Упр и один управляет переключением строк ПЗУ 1-56 или 57-112. Дешифратор управления DC.Упр состоит из формирователей сигналов управле- ния и собственно дешифратора. Дешифратор выполнен в виде матрицы. Шины управления проходят через 56 строк ПЗУ, поступают на входы прмежуточных формирователей и снова возвращаются через все 56 строк. Таким образом, DC.Упр состоит из 12 разрядов управления. Логические сборки микрокоманд представляют собой схемы nИ или mИЛИ. Каждая сборка предназначена для выполнения какой-либо одной микрокоманды. Микрокоманды можно сгруппировать следующим образом: - микрокоманды управления узлами ГМД ( STEP, DIRC, SL, SR, TR43 ); - внутренние микрокоманды для управления передачей информации между регистрами, опроса выходов, выбора кодов считываемых сигналов, генерирования КК; - микрокоманды, определяющие работу АЛУ и обеспечивающие обмен информа- цией с ЭВМ ( DRQ, JNTRQ, WSTB, WF/DE, HRDY и др.). 6.7. Формирование входных и выходных сигналов осуществляется по уровням и длительностям в соответствии с выполняемой формирователями функцией. Для формирования сигналов управления DDEN, WPRT, TR00, WF/DE, CPRDY, TR43, WSTB, HRDY, TEST, CS необходимо подать от ЭВМ или НГМД сигнал определен- ного уровня. Для остальных сигналов существенное значение имеют временнве соотношения, которые изображены на временных диаграммах для отдельных ре- жимов. Временная диаграмма процесса чтения информации системной ЭВМ для вызова какого-либо регистра контроллера показана на рис.5. Параметры временных соотношений приведены в табл.6. 7. Описание команд и алгоритма работы микросхемы. 7.1. Описание типов команд. 7.1.1. Микроконтроллер обеспечивает прием и исполнение 11 команд. Все команды условно разделены на четыре типа: 1 - вспомогательные, обеспечивающие подготовку НГМД к работе; 2 - считывания данных с дисков или записи их на диск; 3 - поиска и чтения индексного поля ГМД; 4 - принудительного прерывания. Все команды и их кодовые структуры приведены в табл.7. Кодовая стрyктура команд Таблица 7 ╔═════════╤════════════════╤═══════════════════════╤═══════════════════════╗ ║ Т п │ Наименование │ Структура ко│а, бит ║ ║ ком нды │ команды │ 7 │ 6 │ │ 4 │ 3 │ 2 │ 1 │ 0 ║ ╟─────────┼────────────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────╢ ║ │ Восстановление │ 0 │ 0 │ 0 │ 0 │ h │ V │ r1 │ r0 ║ ║ │ Поиск │ 0 │ 0 │ 0 │ 1 │ h │ V │ r1 │ r0 ║ ║ │ Шаг │ 0 │ 0 │ 1 │ u │ h │ V │ r1 │ r0 ║ ║ │ Шаг вперед │ 0 │ 1 │ 0 │ u │ h │ V │ r1 │ r0 ║ ║ │ Шаг назад │ 0 │ 1 │ 1 │ u │ h │ V │ r1 │ r0 ║ ╟─────────┼────────────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────╢ ║ │ Чтение сектора │ 1 │ 0 │ 0 │ m │ s │ E │ C │ 0 ║ ║ │ Запись сектора │ 1 │ 0 │ 1 │ m │ s │ E │ C │ a0 ║ ╟─────────┼────────────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────╢ ║ │ Чтение адреса │ 1 │ 1 │ 0 │ 0 │ 0 │ E │ 0 │ 0 ║ ║ │ Чтение дорожки │ 1 │ 1 │ 1 │ 0 │ 0 │ E │ 0 │ 0 ║ ║ │ Запись дорожки │ 1 │ 1 │ 1 │ 1 │ 0 │ E │ 0 │ 0 ║ ╟─────────┼────────────────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────╢ ║ │ Принудительное │ 1 │ 1 │ 0 │ 1 │ J3 │ J2 │ J3 │ J0 ║ ║ │ прерывание │ │ │ │ │ │ │ │ ║ ╚═════════╧════════════════╧═════╧═════╧═════╧═════╧═════╧═════╧═════╧═════╝ 7.1.2. Код команд первого типа включает непосредственно код команды с 7 по 4 бит и код признака команды с 3 по 0 бит. Признаки соответственно обозначаются: h - код загрузки головки ( при h=0 головка не загружается; при h=1 головка устанавливается на диск ); V - код, определяющий необходимость проверки положения МГ ( при V=0 положение МГ не проверяется; при V=1 проверяется номер дорожки, на которой находится МГ ); r1,r0 - коды, определяющие скорость перемещения МГ. Зависимость ____ скорости перемещения МГ от кода r1,r0 и состояния сигнала TEST приведена в табл.8. Таблица 8 |---------------------------------------------------------------| | ____ | | | Время перемещения на шаг (мс) | | TEST | r1 | r0 |----------------------------------------| | | | | CLC = 1 МГц | CLC = 2 МГц | |---------------------------------------------------------------| | 1 | 0 | 0 | 6мс | 3мс | | 1 | 0 | 1 | 12мс | 6мс | | 1 | 1 | 0 | 20мс | 10мс | | 1 | 1 | 1 | 30мс | 15мс | | 0 | - | - | 400мкс | 200мкс | |---------------------------------------------------------------| u - код, определяюший состояние Рг.Дор при перемещении МГ ( при u=0 состояние Рг.Дор не изменяется; при u=1 пр каждом шаговом импульсе Рг.Дор изменяется на один бит ). Команда "Восстановление" обеспечивает переход МГ на нулевую дорожку ГМД. Выход на нулевую дорожку подтверждается состоянием входного сигнала TR00 который поступает с НГМД. Если сигнал TR00 = 0, это означает, что МГ находится в исходном состоянии. Если сигнал TR00 = 1 микроконтроллер гене- рирует не более 255 шаговых импульсов STEP. Если после генерации 255 им- пульсов устанавливается низкий уровень сигнала TR00, и в бит состояния "Ошибка поиска" в Рг.Сост записывается единица. Команда "Восстановление" автоматически выполняется после подачи сигнала CLR на вход 19 микросхемы. Команда "Поиск" предполагает, что регистр дорожки содержит информацию о текущем номере дорожки, а регистр Рг.D - требуемой дорожки. Перемещение МГ выполняется до тех пор, пока содержимое Рг.Dор сравняется с содержимым Рг.D. Поиск выполняется при v=1. Команда "Шаг" обеспечивает выдачу импульса на перемещение МГ на один шаг. Направление перемещения, т.е. сигнал DIRC при этом не изменяется. Команда "Шаг вперед" и "Шаг назад" соответственно обеспечивают выдачу сигнала DIRC (направление перемещения) высокого или низкого уровня, что и определяет перемещение МГ к центру или от центра ГМД. Признаки u,h,v,r0,r1 анализируются и определяют действия, описанные выше. 7.1.3. Команды второго типа обеспечивают непосредственно считывание информации с ГМД и запись ее на ГМД. Перед вводом этих команд необходимо в регистр Рг.Сект установить номер требуемого сектора. Формат сектора показан на рис.5. Каждый из параметров, указанных в фор- мате, представлен в виде байта. Длина сектора может быть указана в виде кода в соответствии с табл.9 табл.9 ---------------------------------------------------------------------- | Длина сектора | Число байт в секторе | |--------------------------------------------------------------------| | 00 | 128 | | 01 | 256 | | 02 | 512 | | 03 | 1024 | |--------------------------------------------------------------------| По команде второго типа предполагается выполнение следующих операций: - выделение индексной области, указанной индексной адресной меткой (ИАМ); - сравнение номера дорожки с содержимым Рг.Dор. Если номер не совпал, поиск ИАМ начинается снова; - выбор и сравнеие номера стороны диска; - сравнение номера сектора с содержимым Рг.Сект.; - ввод длины сектора в контроллер и запоминание для использования при чтении и записи информации; - вычисление КК в виде первого и второго байта внутренним генеретором. Если КК совпадает с заданным в конце массива, разрешается выполнение следующей команды. В противном случае в Рг.Сост. выдается сигнал "Ошибка КК". ФОРМАТ ДОРОЖКИ -------------------------------------------------------------------------- | ПБ1 | ИАМ | Номер | Номер | Номер | Длина | КК1 | КК2 | | | | дорожки | стороны | сектора | сектора | | |------> |------------------------------------------------------------------------- \____________ индексная область _______________________/ ----------|--------------------------------------------------- --------> | ПБ2 | ДАМ | Область данных | КК1 | КК2 | ПБ ----------|--------------------------------------------------- \_____________ область данных _____________/ ПБ - пробел ИАМ - индексная адресная метка ДАМ - адресная метка данных рис.5 Команды второго типа представлены кодом команды с 3 по 5 бит, а признаки команды с 4 по 0 биты (табл.16). Таблица 16 -------------------------------------------------------------------------- | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Команда | |------------------------------------------------------------------------| | 1 | 0 | 0 | m | s | E | C | 0 | Чтение сектора | |------------------------------------------------------------------------| | 1 | 0 | 1 | m | s | E | C | a0 | Запись сектора | |------------------------------------------------------------------------| Признаки соответственно обозначают: m - код, указывающий на обращение к одному сектору (m=0) или больше одного (m=1). При m=0 после считывания/записи одного сектора работа прекращается. При m=1 после окончания работы с первым сектором в Рг.Сект. прибавляется единица и продолжается обработка следующего сектора. Эта операция продолжается до тех пор, пока не будет обработан самый последний сектор на данной дорожке; s - код, определяющий номер стороны диска (0 или 1); E - код, указывающий на необходимость задержки продолжительностью 15мс перед выдачей сигнала HLD после появления сигнала HRDY (при E=0 задержка не осуществляется); C - код, указывающий на необходимость проверки номера стороны диска в процессе идентификации индексной области (при C=0 номер стороны диска не проверяется); a0 - код, используемый для выбора одного из двух возможных байтов адресной метки данных (ДАМ) для записи в области ДАМ. При a0=1 записывается байт F8, указывающий, что данные могут стиратья; при a0=0 записывается байт FB, указывающий, что область данных сохраняется. Контрольный код представлен в виде двух байт и вычисляется как циклическая сумма полинома: 15 12 5 A = X + X + X + 1 Команда "Чтение сектора" выполняется, когда идентифицирован номер дорожки, номер мтороны, длина сектора и КК. Адресная метка данных должна быть уста- новлена через 30 байт для одинарной и через 43 байта для двойной плотности после контрольных кодов индексной области. Если ДАМ не найдена, вырабатыва- ется сигнал "Массив чтения не найден", который выдается в Рг.Сост. После прохождения адресной метки данных байты данных вводятся в Рг.Сдв и передают- ся в Рг.D. Каждый байт сопровождается сигналом DRQ ("Запрос данных"). Рг.D должен быть считан до приема следующего байта. Если предыдущий байт не считан, записывается следующий, а в Рг.Сост. записывается признак "Потеря данных". В конце считывания массива данных КК должен совпадать с генерируемым в микросхеме. Если они не совпадают, выставляется бит "Ошибка КК" в Рг.Сост и прекращается выполнение команды даже при m=1. Команда "Запись сектора" выполняется подобно команде "Чтение сектора" в части аналиха индексного массива, определения номера дорожки, стороны диска, стороны сектора и вычисления КК. Сигнал DRQ ("Запрос данных") генерируется, запрашивая первый байт данных, который должен быть записан на диск. Затем микроконтроллер вычисляет 11 байт для одинарной плотности (или 22 для двойной) для обеспечения пробела между индексной областью и данными (ПБ2). С момента прохождения 11 байт (22 байт) если первый запрос сигнала DRQ обслужен и данные записаны в Рг.D, выдается строб записи WSTB и шесть байт нулей для одинарной (12 байт для двойной) плотности записываются на диск. Это соответствует записи ПБ2, а затем записывается ДАМ. Этот байт может быть или FB (без стирания) или F8 (со стиранием) данных в соответствии с кодом a0. Данные записываются на диск. Каждый байт записывается в Рг.D, передается в Рг.Сдв и затем на диск. Сигнал DRQ вырабатывается для ЭВМ на каждый после- дующий байт данных. Если DRQ не обслужен, вырабатывается сигнал "Потеря данных" в рахряде S1 Рг.Сост, а на диске записывается байт нулей. После за- писи данных записывается КК в виде двух байт, генерируемых микроконтроллером, затем один байт FF, и устанавливается низкий уровень сигнала WSTB. 7.1.4. Команды третьего типа предназначены для поиска информации на диске или записи информации (форматирование диска). Структура кода содержит один бит признака, определяющего необходимость задержки 15 мс между сигналами HRDY и HLD, как и при выполнении команд второго типа. Команда "Чтение адреса" выполняется при загрузке МГ (HLD=1) и в бит состоя- ния "Занято" записывается единица. Последовательно считывается шесть байт индексной области, включая КК, и передаются в ЭВМ (на шину данных) в сопро- вождении сигнала DRQ. Считывается КК и передается в ЭВМ, микроконтроллер про- веряет его и если КК не совпадает, выдается бит состояния "Ошибка КК" и про- должается чтение. При выполнении этой команды содержимое Рг.Dор пересылается в Рг.Сект и запоминается. По окончании выполнения команды генерируется сигнал JNTRQ и считывается бит состояния "Занято". Команда "Чтение дорожки" обеспечивает чтение всей информации, включая ин- дексный массив, котрольные коды, пробелы и массив данных и передачу ее в ЭВМ. В процессе чтения не выдается сигнал "Строб чтения" и не выполняется провер- ка контрольных кодов, что позволяет использовать данную команду в диагности- ческих цедях. Команда "Запись дорожки" прежназначена для разметки диска. Информация в ЭВМ для этой процедуры должна содержать все пробелы и индексные метки. Любая последовательность данных, имеющаяся в Рг.Сдв записывается. Если появляются байты F5 - FE, то они интерпретируются как адресные метки данных. Контрольный код генерируется в момент передачи байтов F8 - FE из Рг.D в Рг.Сдв в режиме ФМ или при появлении F5 в режиме МФМ. При появлении кода F7 КК генерируется и записывается двумя байтами. Таким образом байты F5 - FE не должны записываться ЭВМ в местах пробелов области данных или индексных массивах. 7.1.5. Команда четвертого типа "Принудительное прерывание" задается для завершения какой-либо выполняемой команды. В отличии от других команд она может быть записана в Рг.Ком в любой момент. Однако, исполнение команды может определяться состоянием младших битов I0 - I3. Если биты I0 - I3 в состоянии "0", прекращается выполнение текущей команды и сигнал JNTRQ не вырабатывается. При I0 = 1 прерывание выполняется после перехода сигнвла CPRDY из низкого уровня в высокий. При I1 = 1 прерывание выполняется при переходе сигнала CPRDY из высокого уровня в низкий. __ При I2 = 1 прерывание выполняется по приходу индексного импульса IP. При I3 = 1 прерывание выполняется немедленно. После выполнения этих условий вырабатывается сигнал JNTRQ. 7.2. Описание алгоритма работы микросхемы 7.2.1. Общее указание 7.2.1.1. В соответствии с условным разделением команд на четыре типа алго- ритм работы микросхемы показан на структурной схеме в виде отдельных частей (рис.6,7,8,9,10). Каждая часть структурной схемы определяет порядок вы- полнения соответствующего типа команд. __В исходное состояние микроконтроллер устанавливается после прихода сигнала CLR. В этом состоянии он готов принять команду любого типа. 7.2.2 Ввод и исполнение команд первого типа. 7.2.2.1. Ввод и исполнение команд первого типа осуществляется в порядке, показанном на рис.6. После установки на адресных выводах А0 и А1 адресных кодов А0 = 0 и А1 = 0 (блок 1) и ввода какой-либо из команд "Восстановление", "Поиск", "Шаг", "Шаг вперед", "Шаг назад" сбрасываются биты 3 и 4 Рг.Сост, устанавливается бит "Занято", устанавливается в низкое состояние сигнал DRQ и INTRQ (блок 2). Если код h = 1 (МГ загружена, блок 3), выдается сигнал загрузки МГ HLD (блок 4). В случае h = 0 (МГ не загружена) сигнал HLD (блок 3 ') переходит в состояние низкого уровня. ┌────────────────────────────────────────────────────────┐ │ │ │ СТРУКТУРНАЯ СХЕМА АЛГОРИТМА │ │ ВЫПОЛНЕНИЯ КОМАНД ПЕРВОГО ТИПА │ └────────────────────────────────────────────────────────┘ Вход -------- |<------------| | 1 | Команда | первого --> Нет--| типа | Да V 2 Установка "Занято" Сбро DRQ,INTRQ | V 3 3' h = ? ---> h=1 --> HLD=0 | h=0 | V 4 | HLD=1 | | | |<----------------| | V 5 5' "Шаг вперед ?" --Да---> DIRC=1 -->-| | | |Нет | | | V 6 6' | "Шаг назад ?" -- Да---> DIRC=0 -->-| | | |Нет | | | V 7 | "Шаг ?" ---- Да------------->--| | | |Нет | | V 7' V 8 "u = ?" --- u=1-->-| "Поиск ?"--Да-->-| | | | | |u=0 | |Нет | | | V 9 | | | FF --> Рг Дор | V V | | | | | | *C *B V 10 | 00 --> Рг Ком | | | |<-----------| V *A | |----------------------->-| | | | V 11 | Рг D --> Рг Сдв | | | | | V 12 | Рг Дор = Рг Сдв ? --Да---------------------------| | | | | |Нет | | | | | V 13 | | Рг Сдв > Nдор ------Да-----| | | | | | | |Нет | | | | | | | V 14 V 14' | | DIRC=0 DIRC=1 | | | | | | *B---------------->-|-<-------------------| | | | | | V 15 DIRC=1 | | DIRC=? -----------------| | | | | | | |DIRC=0 | | | | | | | V 16 V 16' | | -1 ----> Рг Дор +1 -----> Рг Дор | | | | | | *C---------------->-|-<-------------------| | | | | | V 17 | | -TR00=0 и 17' | | DIRC=0 ----Да---->- 0 в Рг Дор ------------>-| | | | | |Нет | | | | | V 18 | | Выдан один | | шаговый импульс | | | | | V 19 | | tз<===> R0,R1 | | | | | V 20 | | Команды: | |-<------------Нет--- "Шаг" | "Шаг вперед" | "Шаг назад" | | | |Да--<-------------------------------------| | V *D | V 21 22' v = ? ---- v=0------- Установка INTRQ | Сброс "Занято" |v=1 | V 22 HLD=1 | |-<-----------| | | V 23 >0 | tз = 15 мс ------| | |-<-----------| | | V 24 =0 | HRDY = ? ---------| | |------------------------>-|=1 | | | V 25 26' | 9ПБ ----Есть---->- Установка INRQ | | | |Нет | | | V 26 |-<---------------Нет---- ИАМ | | | |Есть | | | V 27 |-<----------Нет-- Nдор -> Рг Дор = Nдор в ИМ ? | | | |Да | | | Да V 28 |-<--Установка <----- Ошибка в КК ? "Ошибка КК" | |Нет | V 29 Сброс "Ошибка КК" | V 30 Установка INTRQ Сброс "Занято" ┌───────────────────────────────────────────────────────┐ │ СТРУКТУРНАЯ СХЕМА АЛГОРИТМА │ │ ВЫПОЛНЕНИЯ КОМАНД ПЕРВОГО ТИПА │ │ │ └───────────────────────────────────────────────────────┘ Вход -------- |<------------| | 1 | Команда | первого --> Нет--| типа | Да V 2 Установка "Занято" Сброc DRQ,INTRQ | V 3 3' h = ? ---> h=1 --> HLD=0 | h=0 | V 4 | HLD=1 | | | |<----------------| | V 5 5' "Шаг вперед ?" --Да---> DIRC=1 -->-| | | |Нет | | | V 6 6' | "Шаг назад ?" -- Да---> DIRC=0 -->-| | | |Нет | | | V 7 | "Шаг ?" ---- Да------------->--| | | |Нет | | V 7' V 8 "u = ?" --- u=1-->-| "Поиск ?"--Да-->-| | | | | |u=0 | |Нет | | | V 9 | | | FF --> Рг Дор | | | | | V V | | *C *B V 10 | 00 --> Рг Ком | | | |<-----------| V *A | |----------------------->-| | | | V 11 | Рг D --> Рг Сдв | | | | | V 12 | Рг Дор = Рг Сдв ? --Да---------------------------| | | | | |Нет | | | | | V 13 | | Рг Сдв > Nдор ------Да-----| | | | | | | |Нет | | | | | | | V 14 V 14' | | DIRC=0 DIRC=1 | | | | | | *B---------------->-|-<-------------------| | | | | | V 15 DIRC=1 | | DIRC=? -----------------| | | | | | | |DIRC=0 | | | | | | | V 16 V 16' | | -1 ----> Рг Дор +1 -----> Рг Дор | | | | | | *C---------------->-|-<-------------------| | | | | | V 17 | | -TR00=0 и 17' | | DIRC=0 ----Да---->- 0 в Рг Дор ------------>-| | | | | |Нет | | | | | V 18 | | Выдан один | | шаговый импульс | | | | | V 19 | | tз<===> R0,R1 | | | | | V 20 | | Команды: | |-<------------Нет--- "Шаг" | "Шаг вперед" | "Шаг назад" | | | |Да--<-------------------------------------| | V *D | V 21 22' v = ? ---- v=0------- Установка INTRQ | Сброс "Занято" |v=1 | V 22 HLD=1 | |-<-----------| | | V 23 >0 | tз = 15 мс ------| | |-<-----------| | | V 24 =0 | HRDY = ? ---------| | |------------------------>-|=1 | | | V 25 26' | 9ПБ ----Есть---->- Установка INRQ | | | |Нет | | | V 26 |-<---------------Нет---- ИАМ | | | |Есть | | | V 27 |-<----------Нет-- Nдор -> Рг Дор = Nдор в ИМ ? | | | |Да | | | Да V 28 |-<--Установка <----- Ошибка в КК ? "Ошибка КК" | |Нет | V 29 Сброс "Ошибка КК" | V 30 Установка INTRQ Сброс "Занято" рис.6 7.2.2.2. При поступлении команды "Шаг вперед" (блок 5) устанавливается направление шага (DIRC = 1, блок 5').Если при этом код u = 1 (увеличение номера дорожки, блок 7'), то содеожимое Рг.Dор увеличивается на единицу (блок 18'). Зфтем задается один шаг (блок 13), и обеспечивается задержка в соответствии с установленным кодом (r0,r1) для ывполнения команды двига- 2 - считывания данных с дисков или записи их на диск; телем (блок 10). Если код v =0 (положение МГ не проверяется, блок 21), уста- навливается высокий уровень сигнала "Запрс прерывания" (JNTRQ =1), в бит "Занято" в Рг.Сост (блок 23') записывается нуль. Если код v = 1 (проверяет- ся положение МГ), микроконтроллер загружает МГ (HLD = 1, блок 22) и ожидает, пока истечет время задержки 15 мс (блок 23), затем он ожидает установки сигнала HRDY = 1. 7.2.2.3. После прихода высокого уровня сигнала HRDY контроллер ожидает сигнал -IP и с его приходом начинает поиск требуемой индексной области в информации, считываемой с диска. При этом, если индексная область не най- дена или считывается ошибка КК, контроллер возвращается в блок 35 и повто- ряет считывание на втором обороте ГД (второй сигнал -IP). Если индексная область не считана верно за 8 оборотов диска, то после прихода девятого по счету импульса -IP выполняется прерывание и в бит состояния "ошибка поиска" записывается 1 (блок 26'). После прихода -IP (блок 25), микроконтроллер отыскивает адресную метку (блок 26) и обнаружив ее, сравнивает содержимое Рг.Dор с информацией, записанной в индексном массиве (блок 27). При их не- соотвтствии микроконтроллер вновь с приходом следующего импульса -IP ищет адресную метку. При соответствии между содержимым Рг.Dор и данными индекс- ного массива микроконтроллер проверяет нет ли ошибки КК (блок 22). Если ошибка есть, в Рг.Сост в бит "Ошибка КК" (блок 29') записывается единица и поиск повторяется. Если считывания КК при первом или повторном считывании не будет, в Рг.Сост в бит "Ошибка КК" (блок 29) произойдет запись нуля. В этом случае на внешней шине устанавливается высокий уровень сигнала "Запрос прерывания", а в Рг.Сост в бит "Занято" (блок 38) записывается нуль. 7.2.2.4. Вернемся в блок 7' и рассмотрим случай, когда код u=0 (нет увели- чения дорожки с каждым шагом). В этом случае выполняется переход в блок 17. Дальше команда выполняется так же, как сказано в п.7.2.2.2. 7.2.2.5. Если на шину данных подается команда "Шаг назад" (блок 6), сигнал DIRC устанавливается в состояние низкого уровня (блок 6'). Если код u=1 (блок 7'), то содержимое Рг.Dор уменьшается на единицу (блок 16). При уста- новке МГ на нулевую дорожку (-TR00=0, блок 17) в Рг.Dор записывается нули (блок 17'). После этого выполняется переход в блок 21 и микроконтроллер рабо- тает согласно алгоритму, описанному в п.7.2.2.2. 7.2.2.6. При выполнении команды "Шаг" (блок 7) состояние выходного сигнала DIRC, определяющего направление шага движения МГ, остается без изменения. Если код u=1 (блок 7'), сигнал DIRC=0 и сигнал -TR00=0 (блок 17), в Рг.Dор записы- ваются нули (блок 17'). После этого осуществляется переход в блок 21, и коман- да выполняется в соответствии с алгоритмом, описанном в п.7.2.2.2. Если код u=1 (блок 7'), но сигнал DIRC не равен нулю или сигнал -TR00 не равен нулю (блок 17), то выдается один шаг (блок 18), затем осуществляется задержка в соответствии со значениями r1 и r0 (блок 19), приведенными в табл.14. Таким образом снова осуществляется переход в блок 21, и команда выполняется в соот- ветвствии с алгоритмом, приведенным в п.7.2.2.2. 7.2.2.7. После записи некоторой информации в Рг.D и Рг.Dор при условии, что на шину данных поступит команда "Поиск" (блок 8), данные из Рг.D переда- ются в Рг.Cдв (блок 11), и микроконтроллер производит сравнение содержимого Рг.Dор и Рг.Сдв (блок 12). Если содержимое обоих регистров совпадает, осу- ществляется переход в блок 21, затем программа выполняется согласно алгорит- му, приведенному в п.7.2.2.2. Если же содержимое обоих регистров не совпадает то возможны два случая: - Рг.Сдв > Рг.Dор; - Рг.Сдв < Рг.Dор (блок 13). В первом случае устанавливается высокий уровень сигнала DIRC (блок 14'). При DIRC = 1 (блок 15) содержимое Рг.Dор увеличивается на единицу (блок 16'). Затем выдается один шаг (блок 18), осуществляется задержка в соответствии со значениями r1 и r0 (блок 19), приведенными в табл.14. После этого выполня- ется переход в блок 11, и эта операция повторяется начиная с блока 11 до тех пор, пока содержимое Рг.Dор не совпадет с содержимым Рг.Сдв (блок 12), затем выполняется переход в блок 21, далее программа выполняется согласно алгоритму, приведенному в п.7.2.2.2. Во втором случае устанавливается низкий уровень сигнала DIRC (блок 14). Содержимое Рг.Dор уменьшается на единицу (блок 16). При установке МГ на ну- левую дорожку (-TR00=0, блок 17) Рг.Dор заполняется нулями (блок 17') и вы- полняется переход в блок 21. Если МГ не установлена еа еулевую дорожку (-TR00 не равно нулю), выдается один шаг (блок 18), происходит задержка в соответст- вии со значениями r1 и r0 (блок 19), приведенными в таблице 14. После этого вновь выполняется переход в блок 11, и эта операция повторяется до тех пор, пока содержимое Рг.Сдв сравняется с содержимым Рг.Dор, после чего осуществля- ется переход в блок 21. 7.2.2.8. После прихода команды "Восстановление" (блок 1), если код h=1 (блок 3), устанавливается высокий уровень сигнала "Загрузка магнитной головки" (HLD=1, блок 4). Если же код h=0 (блок 3), то устанавливается низкий уровень сигнала HLD (блок 3'). В Рг.Dор записывается байт FF (блок 9), а в Рг.Ком за- писываются нули (блок 10). После этого выполняется переход в блок 11. 7.2.3. Ввод и исполнение команд второго типа 7.2.3.1. Ко второму типу команд относятся: "Запись сектора", "Чтение сек- тора". Структурная схема алгоритма выполнения команд второго типа показана на рис.7. Прежде чем подать команду второго типа ЭВМ должна загрузить Рг.Dор и Рг.Сект требуемыми номерами сектора и дорожки. Структурная схема выполнения команд второго типа (рис.7) ------------------------------------------------------------ Вход ------ | |<--------------| V 1 | Команды | второго типа? ---Нет-| | |Да V 2 Установка "Занято", Сброс DRQ,ITRQ,бит 5,6 | | V 3 4' НГМД Готов? --Нет--> INTRQ | |Да V 4 HLD=1 | | V 5 E=? ---E=0---| | | |----------->|E=1 | | V 6 | |--tз>0--- tз=15мс | | | |tз=0 | |----------->|<----------| | V 7 |----=0--- HRDY=? | |HRDY=1 V 8 9' Nдор>43 ? --Да-> Установка TR43 | | |Нет | V 9 | Сброс TR43 | | | *4 ------------->|<-----------------| V 10 Команда?-->"Чтение"----| | | |"Запись" | 11' V 11 | INTRQ WPRT <---Да-- Установка | WPRT | | | |Нет | |<-----------------| V *1 |-------------------------->| | V 12 13' | 5 Индексных ---Есть----> INTRQ, установка | импульсов ? "Запись не найдена" | | | |Нет | V 13 |<-------------Нет-------- ИАМ? | | | |Есть | V 14 |<-------------Нет---- Nдор=Nдор НГМД ? | Рг D*NAM | | | |Да | V 15 |<-------------Нет--- Nсект=Nсект НГМД ? | | | |Да | V 16 |<-------------Нет--- Nстор=Nстор НГМД ? | | | |Да | V 17 | Рг D на Рг Сдв на НГМД (запомнить длину сектора) | | | 19' V 18 |<-- В Рг Сост--Да<---- Ошибка КК "Ошибка КК" | |Нет V 19 Сброс ОКК | V 20 Команда ? ---"Запись"----> *3 ---------------| | | |"Чтение" | V | *2 21 | ИАМ? ---Нет------> *1 | | | |Есть | V 22 | "1"-> Рг Сост(5р) | | | |--------------->| | | V 23 | |---Нет-- RAWR -> Рг Сдв | | | |-------------------------->|Да | | V 24 | | DRQ=1 | | | | | |--------------->| | | | V 25 | | |---Нет-- RAWR -> Рг Сдв | | | | | |Да | | V 27' | | Рг D -> ШД --Нет--> Установка ------| | | | "Потеря данных | | | |Да | | | V 27 | | |<---------------Нет--- Все байты <---------------------------| | введены ? | | | |Да | 29' V 28 | Установка INTRQ<--Да--- Ошибка КК ? | Ошибка КК | | Сброс "Занято" |Нет | |---*5------>| | | V 29 30' | | М=? --М=0----------> Установка INTRQ | | | Сброс "Занято" | | |М=1 | | V 30 | | +1 Рг Сект | | | | | V | | *4 | | | | *3 31 | tз=2 байта | | | V 32 | DRQ=1 | | | V 33 | tз=8 байт | | | 35' V | Установка INTRQ <--Нет--- ШД -> Рг D | Потеря данных | | Сброс "Занято" |Да | V 35 | tз=1 байт | | | V | |--------- =0<--- -DDEN=? | | | | | |-DDEN=1 | V 37 V 37' | Зап 11 ПБ WSTB=1 | | Зап 6 ПБ | | | | V 38 V 39 | WSTB=1 -----------> FF v FB -> ИАМ | Зап 12 ПБ | | 43 | |---------------> Все байты ----Нет----------------------->| | | записаны ? V 40 | | | Рг D -> Рг Сдв | | |Да DRQ=1 | | V 44 | | | Запись КК V 41 | | | Рг Сдв -> НГМД | | V 45 | | | FF -> НГМД 43' V 42 | | | Потеря <---Нет--- ШД - > Рг D | | V 46 данных 1ПБ DRQ=0 | | WSTB=0 | | | | | | |Да | ---------*5<------| | | | | | | V V ---------------------------------------|<------------------| 7.2.3.2. На шину данных подается одна из команд второго типа (блок 1). Пос- ле записи команды в Рг.Сост в бит "Занято" заносится единица, устанавливается низкий уровень сигнала DRQ ("Запрос данных") и сигнала JNTRQ ("Запрос прерыва- ния", блок 2). Если не выполняются условия готовности НГМД (блок 3), то уста- навливается высокий уровень сигнала JNTRQ и в Рг.Сост в бит "Занято" (блок 4') записывается нуль. Если НГМД готов к работе (блок 3), то устанавливается высо- кий уровень сигнала HLD. Если код Е=1 (требуется задержка 15 мс между сигнала- ми HLD и HRDY (блок 5), микроконтроллер ожидает истечения времени задержки (блок 6) и готовности МГ (HRDY=1, блок 7). Если в коде команды Е=0 (блок 5), то МГ загружается, а сигнал HRDY выбирает- ся без задержки (блок 7). Если код дорожки, записанный в Рг.Dор больше 43 (блок 8), то сигнал TR43 устанавливается в состояние низкого уровня (блок 9'). Если же номер дорожки в Рг.Dор мньше 43 (блок 8), то устанавливается высокий уровень сигнала TR43. При команде "Запись сектора" (блок 10), если на входе WPRT (вывод 36) состо- яние низкого уровня (блок 11) появляется сигнал "Запрос прерывания" (JNTRQ), в Рг.Сост в бит "Занято" записывается нуль и в бит "Защита записи" (блок 12') записывается единица. 7.2.3.3. Если на входе WPRT состояние высокого уровня (блок 11) либо на шину данных была подана команда "Чтение сектора" (блок 10), то микроконтроллер анализирует информацию о прохождении на вход -IP индексных импульсов (блок 12). В случае прохождения пяти импульсов сигнал JNTRQ переходит в состояние высо- кого уровня, в Рг.Сост в бит "Запись не найдена" записывается единица и в бит "Занято" (блок 13') записывается нуль. После прихода импульса -IP микроконт- роллер осуществляет поиск адресной метки (блок 13). Если метка не найдена, вы- полняется переход в блок 12. Если метка найдена (блок 13), номер дорожки из регистра дорожки Рг.Dор сравнивается с номером в массиве индексных данных (блок 14), после чего номер сектора этого массива сравнивается с содержимым Рг.Сект (блок 15). Если номер дорожки сектора массива индексных данных не сов- падает с содержимым регистров, микрокотроллер продолжает считывание и поиск дорожки и сектора в следующих индексных областях. Следующий этап выполнения команды - сравнение номера стороны в массиве ин- дексных данных (блок 16). Если номер стороны не верен, микроконтроллер выпол- няет переход в блок 12 и поиск продолжается. Когда номер стороны определен, считывается и запоминается код длины сектора (блок 17). Если КК в массиве ин- дексных данных неправильный (блок 18), то в бит "Ошибка КК" в Рг.Сост записы- вается единица (блок 19') и микроконтроллер выполняет переход в блок 12. Если ошибки в КК нет, бит "Ошибка КК" в Рг.Сост возвращается в исходное состояние (блок 19), и массив индексных данных будет либо записываться (блок 20), либо считываться в зависимости от поданной команды. 7.2.3.4. Если подана команда "Чтение сектора", микроконтроллер должен найти индексный массив по номеру дорожки, номеру сектора, номеру стороны и КК за четыре оборота диска. Иначе микpоконтpоллеp выполнит пеpеход в блок 13'. Если микpоконтpоллеp обнаpужил адpесную метку вовpемя (блок21), то в pазpяд 5 Рг.Сост помещается соответствующий адресной метке код записи а0 (блок22) со стиранием информации или без стирания. Затем микроконтроллер ожидает, пока будет собран первый байт в Рг.Сдв (блок 23) и генерируется сигнал DRQ ("Запрос данных" блок 24). Микроконтроллер снова ожидает , пока будет собран следующий байт в Рг.Сдв (блок 25). Если Рг.D не прочитан, то в Рг. Cост в бит "Потеря данных" (блок 27') записывается единица. Если не все биты собраны в Рг.Сдв, то микроконтроллер продолжает работу в блоке 25. Если все байты собраны (блок 27), проверяется КК. Если вычисленный КК не совпадает с КК в массиве индексных данных (блок 23), генерируется сигнал прерывания (INTRQ=1), в Рг Сост в бит "Занято" записываются нули и в бит "Ошибка КК" (блок 29') записывается единица. Если КК правильный, дальнейшее выполнение команды определяется значе- нием кода m (многократная запись сектора) . Если код m=0 (блок 29), генериру- ется сигнал прерывания (INTRQ=1) и в бит "Занято" в Рг Сост записывается нуль. (блок 30). Если код m=1 (блок 29) к содержимому Рг Сект прибавляется единица (блок 30) и микроконтроллер продолжает работу в блоке 10. 7.2.3.5. Начиная с блока 20, команда "Запись сектора" будет выполняться иначе, чем команда "Чтение сектора". После задержки (отсчет времени байт, блок 31) генерируется сигнал DRQ (блок 32). Затем опять происходит задержка (отсчет времени байт, блок 33). Если Рг D не загружен (блок 34), генерируется сигнал INRQ, в бит "Занято" записываются нули и в бит "Потеря данных" (блок 35') записывается единица. Если Рг D загружен (DRQ=0, блок 34), то выполняется за- держка (отсчет времени байт, блок 35). Если микроконтроллер работает в режиме одинарной плотности (-DDEN=1, блок36), генерируется стробзаписи (WSTB=1) и записываются шесть байт нулей (блок 37'). Затем записывается код адресной метки в соответствии с признаком а0 в коде команды (блок 39). Если сигнал -DDEN=0 (двойная плотность, блок 36), происходит задержка 11 байт (блок 37), генерируется строб записи (WSTB=1) и записываются 12 байт нулей (блок 38). После этого микроконтроллер записывает код адресной метки согласно а0 (блок 39). Данные из Рг D передаются в Рг Сдв, генерируется запрос данных (DRQ=1, блок 40). Затем байт записфвается на диск (блок 41). Если Рг D не загружен (блок 42), то записывается байт нулей и в Рг Сост в бит "Потеря данных" (блок 43) записывается единица. Запись информации продолжается до тех пор, пока на диск не будут выведены все данные в соответствии с требу- емой длиной сектора (блок 43), после чего записывается КК (блок 44), один байт FF (блок 45) и отключается строб записи (WSTB=0, блок 46). Выполнение команды продолжается с блока 29. 7.2.4. Ввод и выполнение команд третьего типа 7.2.4.1 К третьему типу команд относятся: - "Запись дорожки" - "Чтение дорожки" - "Чтение адреса". Структурная схема алгоритма выполнения команд третьего типа показана на рис. 8,9,10. 7.2.4.2. После подачи команды "Запись дорожки (блок 1) в бит "Занято" записывается единица и в биты состояния 2,3,4,5,6 также записываются нули. Если не выполняются условия готовности НГМД (блок 3), генерируется сигнал (INTRQ=1), в бит состояния "Занято"(блок 4) записывается нуль. Если НГМД готов (блок 3), устанавливается высокий уровень сигнала загрузки (HLD=1, блок 4). Если код Е=1 (требуется задержка 15 мс между сигналами HLD и HRDY, блок 5) микроконтроллер ожидает пока истечет время задержки (блок 6). Если код Е=0 (задержки нет, блок 5), микроконтроллер ожидает установления высокого уровня сигнала готовности МГ (HRDY=1, блок 7). После установки высокого уровня сигнала HRDY определяется сигнал TR43 в соответствии с номером дорожки в Рг Dор (блок 8). Если сигнал защиты записи -WPRT=0 (блок 9), генерируется сигнал INTRQ и в бит "Занято" в Рг Сост (блок 10) записываются нули. Если сигнал -WPRT=1, устанавливается высокий уровень сигнала DRQ ("Запрос данных", блок 10) и выполняется задержка на его обслуживание (три байта пробе- лов, блок 11). По переднему фронту первого встречаемого индексного импульса (блок 13) начинается запись и продолжается до следующего импульса. Если Рг D не был загружен, операция заканчивается, обеспечивая состояние "Не занято", в бит состояния "Потеря данных" заносится единица и генерируется прерывание (блок 13'). Если же Рг D был загружен вовремя, то данные из этого регистра передаются в Рг Сдв (блок 14) и повторно устанавливается высокий уровень сигнала "Запрос данных" (DRQ=1,блок 15). Как правило, какая бы последовательность данных не появиласьв Рг D, она за- писывается (блок 27 или 20). Однако, если микроконтроллер обнаруживает в Рг D коды F5 - FE, то они интерпретируются как метки и управляют генерированием и записью КК. Схема выполнения команд третьего типа "Запись дорожки" (рис.8) ------------------------------------------------------------------------ Вход --------- | |<-----------| V 1 | Запись?---Нет---| | |Да V 2 Установка "Занято" Сброс DRQ. бит 4,5,2,3,6 | V 3 4' НГМД готов?---Нет---> INTRQ | |Да V 4 HLD=1 | V 5 E=?---->E=0--------| | | E=1 |<-----------| | V 6 | | tз = 15мс-->Нет--| | | V Да|<----------------| V 7 ^ HRDY=?-->HRDY=0-----| | |HRDY=1 V 8 TR43=1 | V 9 10' -WPRT=?--> -WPRT=0---> Установка INTRQ | Сброс "Занято" |-WPRT=1 Защита записи V 10 DRQ=1 | V 11 tз = 3 байта | V 12 13' DRQ обслужен ? ----->Нет-- Установка INTRQ | "Потеря данных" |------------->|Да | V 13 |<--Нет---- -IP=? | |---------- *А------------->|Есть | V 14 | Рг D -> Рг Сдв | | | V 15 | DRQ=1 | | | V | *B | | | V 16 | |--- -DDEN=0(МФМ)-<-DDEN=? | | | | | |-DDEN=1(ФМ) | | V 17 18' | | Рг СДВ=F7 ?---Да--> Записать 2 байта КК ---->| | | | CLK=FF | | | |Нет | | | V 18 19' | | | Рг Сдв=FC ?---Да--> FC --> WD CLK=D7 ------>| | | | | | | |Нет | | | V 19 20' | | | Рг Сдв=F8, ---Да--> Генерировать КК -------->| | | FE или FB FD,FE или FF --> WD | | | | CLK=C7 | | | |Нет | | | V 20 | | | Записать байт | | | CLK=FF | | | | V | | |<--------------------------------------| | | V 21 21' ^ | | ИАМ=? ---Да---> INTRQ | | | | | | | |Нет | | | V 22 23 | |-----|----<*А--<Да---- DRQ обслужен?----Нет-->"00"--> WD вместо -->| | "Потеря данных" | | | | | |---------------------| | | | V 24 Да 25' | Рг Сдв=F5 ? --> A1-->WD в МФМ с учетом ---->| | синхронизации генери- | |Нет ровать КК | V 25 Да 26' | Рг Сдв=F6 ? --> C2-->WD в МФМ с учетом ---->| | синхронизации | |Нет | V 26 27' | Рг Сдв=F7 ? --> Записать 2 КК выбор ------->| | режима ФМ или МФМ | |Нет | V 27 | Рг Сдв --> НГМД --------------------------->| в МФМ 7.2.4.3. Если в Рг Сдв из Рг D записан код F5 (блок 24), то в режиме двойной плотности (-DDEN=0, блок16) инициализируется КК и записывается код А1 (блок 25'). Если введен код F6 (блок 25) , то с учетом синхронизации записы- вается код C2 (блок 26'). Если в Рг Сдв введен код F7, записываются два байта КК (блок 27'). Во всех случаях после записи микроконтроллер запрашивает ин- дексную метку (блок 21). Если метка найдена, генерируется сигнал "Запрос пре- рывания" и в бит состояния "Занято" (блок 22') записываются нули. Если метка не найдена, а Рг D загружен (блок 22) микроконтроллер вновь переходит в блок 14. Если же Рг D не загружен, записывается байт нулей и в бит "Потеря данных" (блок 23) записывается единица. После этого микроконтроллер вновь запрашивает индексную метку (блок 21). 7.2.4.4. Команды "Чтение дорожки" и "Чтение адреса" выполняются в последовательности, изображенной на рис.9,10. После получения шиной из канала в бит состояния "Занято" (блок 1) записы- вается единица. Если не выполнены условия готовности НГМД, генерируется сигнал прерывания (INTRQ=1), в бит "Занято" (блок 3) записываются нули. Если НГМД готов, МГ загружается (HLD=1, блок3). Если код Е=1 (блок 4), выполняется задержка 15 мс (блок 5). Если код Е=0, задержки нет, микроконтроллер ожидает, пока установится в высокое состояение сигнал HRDY (блок 6). Затем устанавли- вается соответствующий уровень сигнала TR43 (блок 7). Структурная схема алгоритма выполнения команды третьего типа "Чтение дорожки" (рис. 9) ---------------------------------------------------------------- Вход ------ | V 1 Установка "Занято" Сброс бит 2,4,5,3,6 | V 2 3' НГМД готов ? ----Нет----> INTRQ | |Да V 3 HLD=1 | V 4 |---< E=0----- E=? | | | |E=1 | V 5 | tз=15мс | | |-------------->|<-------------| V 6 | HRDY=? --HRDY=0>--| | |HRDY=1 V 7 TR43=1 | V 8 Команда ? ----> Чтение адреса--->----------| | | |<----------| | V 9 | | IP=?---Нет>--| | | | |------------------>|Есть | | V 10 | | 1 бит --> Рг Сдв | | | | | V 11 12' | | IP=? ---Есть>---- INTRQ | | | | | |Нет | | V 12 | | ИАМ=? ---Есть--->--| | | | | | | |Нет | | | V 13 | | |<---Нет------- 8 бит --> Рг Сдв ? | | | | | | | Да|<---------------| | | V 14 15' | | Рг D --> ШД ----Нет--> Установка бита | | | "Потеря данных" | | Да|<-------------------------| | | V 15 | | Рг Сдв --> Рг D | | | | | V 16 | |<--------------- DRQ=1 | | | | |---------------------------------------| | | V 7.2.4.5. Если на шину данных подана команда "Чтение дорожки" (блок 8), считывание начинается по переднему фронту первого встреченного индексного импульса и продолжается до следующего. После выдачи первого индексного импульса (блок 9) принимается один бит в Рг Сдв (блок 10). Если подается второй индексный импульс (блок 11), генерируется сигнал "Запрос прерывания" (ITRQ=1), в бит "Занято" в Рг Сост (блок 12') записы- вается нуль. Если же второй импульс не поступит, микроконтроллер проверит является ли считанный байт адресной меткой (блок 13). Если метка не найдена, микроконтроллер опрашивает, собраны ли восемь битов ( блок 13). Если байт не собран, опрос повторяется , начиная с блока 10. Если байт собран, содержимое Рг Сдв передается в Рг D (блок 15) и генерируется сигнал "Запрос данных" (блок 16). Затем процесс чтения повторяется начиная с блока 10. Если Рг D не считан (блок 14), в бит состояния "Потеря данных" (блок 15') записывается единица. Команда "Чтение дорожки" обладает несколькими характеристиками, которые делают ее незаменимой для диагностических целей. Во время этой команды не вырабатывается сигнал "Строб чтения" (RSTB=0), не проверяется КК, пробелы включены в массив данных. Не проводится сравнение с номером стороны и во время этой команды выделяется адресная метка, обеспечи- вающая синхронизацию форматирования считываемой информации по байтам. Так как детектор адресной метки всегда включен, то слияние данных записи и шума могут заставить микроконтроллер искать адресную метку. Если адресная метка не появляется, то в бит "Потеря данных" записываеися единица. 7.2.4.6. Команда "Чтение адреса" выполняется также, как и команда "Чтение дорожки". Начиная с блока 8 алгоритм ывполнения этой команды отли- чается (см. рис.10). Чтение адреса может производиться за пять оборотов диска и начинается с первого сигнала -IP (блок 17). По проиходу шестого импульса -IP происходит прерывание и в бит состояния "Занято" (блок 18') записывается нуль. При чтении адреса микроконтроллер ищет адресную метку в индексном мас- сиве (блок 18). Если метка найдена, происходит замена одного байта в Рг Сдв (блок 19) и передача байта в Рг D (блок 20). После замены каждого байта гене- рируется сигнал DRQ (блок 21). Если шесть байт не прочитаны (блок 22), микро- контроллер повторяет чтение. Если же все шесть байт индексной области прочи- таны (блок 22), номер дорожки передается в Рг Сект (блок 23) и микроконтроллер проверяет правильность КК (блок 24). Если имеется ошибка, то в бит "Ошибка КК" блок 25') записывается единица. В конце этой операции генерируется прерывание INTRQ, и в бит состояния "Занято" записывается нуль. Структурная схема выполнения команд третьего типа "Чтение адреса" (рис. 10) Вход ------ |--------------->| | V 17 18' | 6 индексных ----Есть>--- INTRQ | импульсов? | | | |Нет | V 18 |<---Нет------- ИАМ? | Есть|<------------------| V 19 | 1 байт ---> Рг Сдв | | | V 20 | Рг Сдв --> Рг D | | | V 21 | Установка DRQ | | | V 22 | Прочитаны 6 байт ? ---Нет>-| | |Да V 23 Nдор --> Рг Сект | V 24 25' Ошибка в КК? ---Есть>--- Установка | "Ошибка КК" | | Нет|<------------------------| V 25 INTRQ