Модифицированная частотная модуляция ( MFM ) — это линейный код с ограниченной длиной бега (RLL) [1], используемый для кодирования данных на большинстве дискет и некоторых жестких дисках . Впервые он был представлен на жестких дисках в 1970 году с IBM 3330 , а затем в дисководах, начиная с IBM 53FD в 1976 году.
MFM — это модификация оригинального кода частотной модуляции (FM), специально предназначенная для использования с магнитными накопителями . MFM позволял устройствам удваивать скорость записи данных на носитель, поскольку код гарантировал только одно изменение полярности на каждый закодированный бит данных. По этой причине диски MFM обычно называют дисками «двойной плотности», тогда как более ранний FM стал называться «одинарной плотности».
MFM используется со скоростью передачи данных 250–500 кбит/с (500–1000 кбит/с при кодировании) на промышленном стандарте 5+1 ⁄ 4 дюйма и 3+1 ⁄ 2 -дюймовые обычные и высокоплотные дискеты. MFM также использовался в ранних конструкциях жестких дисков, до появления более эффективных типов кодов RLL. За пределами нишевых приложений кодирование MFM устарело в магнитной записи.
Магнитные запоминающие устройства, такие как жесткие диски и магнитная лента , хранят данные не как абсолютные значения, а как изменения полярности. Это происходит потому, что изменяющееся магнитное поле индуцирует электрический ток в близлежащем проводе, и наоборот. Отправляя серию изменяющихся токов на головку чтения/записи , пока носитель движется мимо нее, результатом будет рисунок магнитных полярностей на носителе, которые меняются там, где данные были «1». Точная природа носителя определяет, сколько таких изменений может произойти в пределах заданной площади поверхности, и когда это сочетается с номинальной скоростью движения, это дает максимальную скорость передачи данных для этой системы.
Дисковые накопители подвержены различным механическим и материальным воздействиям, которые вызывают «дрожание» исходного шаблона данных во времени. Если на диск отправляется длинная строка «0», то нет ничего, что указывало бы на то, какому биту может принадлежать следующая «1» — из-за эффектов джиттера она может сместиться во времени. Повторное выравнивание сигналов на диске с отдельными битами данных требует некоторой синхронизации, закодированной на диске вместе с данными.
Для этой цели был разработан широкий спектр подходящих кодировок, известных как линейные коды . Их пригодность зависит от используемого носителя или механизма передачи.
Частотно-модуляционное кодирование (FM) было первой широко используемой системой для выполнения этой операции. Контроллер привода включает точные часы, работающие на половине выбранной скорости передачи данных дискового носителя. Когда данные записываются на диск, тактовый сигнал чередуется с данными. При чтении тактовые сигналы используются в качестве кратковременных триггеров для определения наличия или отсутствия следующего сигнала, представляющего биты данных. [2]
Преимущество подхода FM в том, что он чрезвычайно прост в реализации схемы записи, а восстановление тактового сигнала при чтении также относительно простое. Недостаток в том, что он использует половину поверхности диска для тактового сигнала, тем самым вдвое уменьшая общий объем данных, которые может хранить диск. Это привело к появлению новых форм кодирования, которые были более эффективными.
Модифицированная частотная модуляция кодирует тактовый сигнал и данные в одном «тактовом окне». В отличие от FM, тактовый бит записывается только тогда, когда это необходимо для достижения синхронизации, когда не установлены ни текущие, ни предыдущие биты данных. В среднем MFM достигает двойной плотности информации по сравнению с FM. [3]
Основное правило кодирования для MFM заключается в том, что (x, y, z, ...) кодируется в (x, x NOR y, y, y NOR z, z, z NOR...). Нулевой бит кодируется как 10, если ему предшествует нулевой бит во входном потоке, и как 00 , если ему предшествует единица; единичный бит всегда кодируется как 01. Количество магнитных переходов на один бит закодированных данных в среднем составляет от 0,75 до 1. [4]
Обратите внимание, что окружающие биты синхронизации иногда известны, но иногда требуется знание соседних битов данных. [ необходима цитата ] Более длинный пример:
Данные: 0 0 0 1 1 0 1 1 ...FM-кодирование: 1 0 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1...Часы MFM: ? 1 1 0 0 0 0 0 0...MFM-кодировка: ? 0 1 0 1 0 0 1 0 1 0 0 0 1 0 1 0...
(Жирным шрифтом выделены биты данных, остальные — биты синхронизации.)
В кодировании FM количество нулевых битов, которые могут появляться между последовательными единичными битами, равно либо 0, либо 1. В кодировании MFM между соседними битами находится минимум 1 нулевой бит (никогда не бывает двух соседних единичных битов), а максимальное количество нулей в строке равно 3. [ необходима цитата ] Таким образом, FM представляет собой код (0,1) RLL, тогда как MFM представляет собой код (1,3).
Поскольку система MFM требует более точной синхронизации тактового сигнала, было экономически невозможно построить требуемые аналоговые и цифровые компоненты на одной интегральной схеме с использованием технологий конца 1970-х годов. Вместо этого драйверы MFM требовали от поставщика привода разработать собственную схему восстановления тактовой частоты , систему, известную как разделитель данных . Проектирование разделителя данных было отдельной формой искусства. [5]
Среди наиболее широко используемых контроллеров той эпохи была серия Western Digital FD1771 . Оригинальный FD1771 поддерживал только FM, но его быстро соединили с FD1781 и FD1791, которые выполняли MFM на основе внешнего тактового сигнала. Реализация поддержки MFM с этими драйверами требовала внешнего разделителя данных. Быстрое улучшение производства ИС в конце 1970-х и начале 1980-х годов привело к появлению первых недорогих драйверов MFM «все в одном» в начале 1980-х годов. WD2791 был первым, кто напрямую поддерживал MFM с использованием внутренней аналоговой фазовой автоподстройки частоты , но для реализации полной системы требовалось несколько простых внешних компонентов. WD1770 был первым, кто реализовал полное решение MFM на одном чипе.
FM и MFM используются для указания положения отдельных битов в исходных данных, но сами данные не имеют более высокого уровня организации, как «файлы». Это цель формата диска. Диски обычно форматируются в сектора фиксированного размера, которые содержат дополнительную информацию заголовка, чтобы связать их с файлами.
В форматах IBM начало информации заголовка сектора и начало самих данных обозначены специальной «синхронизирующей меткой», шаблоном из нулей и единиц, который не может появляться в самих данных. Это достигается тем, что эти данные не кодируются с помощью кодировки FM или MFM, что позволяет драйверу легко обнаружить их. Синхронизирующая метка, которая обычно используется в кодировке MFM, известна как «синхронизация A1», поскольку биты данных формируют начало шестнадцатеричного значения A1 (10100001), но пятый бит синхронизации отличается от обычного кодирования байта A1.
Данные: 1 0 1 0 0 0 0 1Часы: 0 0 0 1 1 1 0Закодировано: 1 0 0 0 1 0 0 1 0 1 0 1 0 0 1 Синхронизация часов: 0 0 0 1 0 1 0Метка синхронизации: 100010010 0 01001 ^ Отсутствует бит часов
MMFM (Modified Modified Frequency Modulation), также сокращенно M²FM или M2FM , похож на MFM, но подавляет дополнительные биты синхронизации, создавая большую максимальную длину пробега (код (1,4) RLL). В частности, тактовый импульс вставляется только между парой соседних 0-битов, если перед первым битом пары не был вставлен тактовый импульс. [6] В примере ниже тактовые биты, которые присутствовали бы в MFM, выделены жирным шрифтом:
Данные: 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1Часы: 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 1 0 0Закодировано: 010100010010010010 0 0010010 0 010010010 0 010 0 001
В этой системе синхронизирующие метки создаются путем вставки дополнительных тактовых импульсов между соседними нулевыми битами (в соответствии с правилом MFM), где они обычно опускаются. В частности, в шаблоне битов данных "100001" тактовый импульс вставлен в середину, где он обычно опускается:
Данные: 1 0 0 0 0 1Нормально: 0 1 0 1 0Синхронизация: 0 1 1 1 0
Дано подробное описание предельных свойств runlength-limited sequences.
В этой статье использованы материалы из Федерального стандарта 1037C. Администрация общих служб . Архивировано из оригинала 2022-01-22.