MFM-коди́рование (иногда в литературе встречается название модифицированный код Миллера в квадрате, МЧМ-кодирование; англ. Modified Frequency Modulation) — способ кодирования данных, один из способов линейного кодирования (физического кодирования, канального кодирования, цифрового кодирования, манипуляция сигнала). Служит для передачи цифровых данных, от передатчика к приемнику, по последовательному интерфейсу. Является двуполярным двухуровневым (сигнала может принимать два значения, соответствующие низкому уровню и высокому уровню) кодом, в котором каждый информационный бит кодируется комбинацией из двух битов.
MFM-кодирование является модификацией частотной модуляции (англ. frequency modulation, FM). Для гибких дисков применение MFM поднимало объём записываемой информации в два раза, такие гибкие диски назывались дисками двойной плотности («double density»). MFM-кодирование используется в дисководах на магнитных дисках. Для жёстких дисков сначала также использовался MFM, но вскоре был изобретён более эффективный метод кодирования информации RLL (Run length limited).
В случае с гибкими дисками новые методы уже не использовались в силу отсутствия необходимости в переносе больших объёмов данных на гибких дисках (это было бы недостаточно надёжно). Кроме того, в случае с гибкими дисками требуется совместимость новых стандартов кодирования и старых: любой современный дисковод может читать как FM-, так и MFM-кодированные диски, в то время как принцип RLL-кодирования принципиально отличается от двух предыдущих.
Основная статья: физическое кодирование
При MFM-кодировании изменение тока записи происходит в середине интервала (такта), если передаваемый бит равен 1, и на границе интервала, если оба соседних бита равны 0. Направление переключения тока не имеет значения.
Данные | … 0 0 … | … 0 1 … | … 1 0 … | … 1 1 … |
---|---|---|---|---|
Тактовые биты | …? 1 ?… | …? 0 0… | …0 0 ?… | …0 0 0… |
MFM-код | …?010?… | …?0010… | …0100?… | …01010… |
Заметим, что тактовые биты, идущие до и после последовательности, иногда известны, а иногда требуют знания дополнительных бит данных. Более длинный пример (полужирным выделены биты данных, остальные — тактовые):
Данные: 0 0 0 1 1 0 1 1 Тактовые: ? 1 1 0 0 0 0 0 0 Код: ?0101001010001010
С целью синхронизации контроллера при считывании данных в начале блока данных записывается специальный маркер, представляющий собой шестнадцатеричный байт A1 (10100001) с пропущенным переключением тока между пятым и шестым битами; полученная таким образом последовательность переключений тока никогда не встречается в потоке обычных записываемых данных.
Данные: 1 0 1 0 0 0 0 1 Тактовые: 0 0 0 1 1 1 0 Код: 100010010101001 Такт маркера: 0 0 0 1 0 1 0 Код маркера: 100010010001001 ^ Отсутствующий тактовый бит
Для улучшения этой статьи желательно: |
Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".
Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.
Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .