logo search
Материалы по интерфейсам периферий / Для Скрипко / Для пособия ПУ (Восстановлен) (2)

Способы кодирования данных

Данные на магнитном носителе хранятся в аналоговой форме. В то же время сами данные представлены в цифровом виде, так как являются последовательностью нулей и единиц. При выполнении записи цифровая информация, поступая на магнитную головку, создает на диске магнитные домены соответствующей полярности. Если во время записи на головку поступает положительный сигнал, магнитные домены поляризуются в одном направлении, а если отрицательный — в противоположном. Когда меняется полярность записываемого сигнала, происходит также изменение полярности магнитных доменов.

Если во время воспроизведения головка регистрирует группу магнитных доменов одинаковой полярности, она не генерирует никаких сигналов; генерация происходит только тогда, когда головка обнаруживает изменение полярности. Эти моменты изменения полярности называются сменой знака. Каждая смена знака приводит к тому, что считывающая головка выдает импульс напряжения; именно эти импульсы устройство регистрирует во время чтения данных. Но при этом считывающая головка генерирует не совсем тот сигнал, который был записан; на самом деле она создает ряд импульсов, каждый из которых соответствует моменту смены знака.

Чтобы оптимальным образом расположить импульсы в сигнале записи, необработанные исходные данные пропускаются через специальное устройство, которое называется кодером/декодером (encoder/decoder). Это устройство преобразует двоичные данные в электрические сигналы, оптимизированные с точки зрения размещения зон смены знака на дорожке записи. Во время считывания кодер/декодер выполняет обратное преобразование: восстанавливает из сигнала последовательность двоичных данных. За прошедшие годы было разработано несколько методов кодирования данных, причем главной целью разработчиков было достижение максимальной эффективности и надежности записи и считывания информации.

При работе с цифровыми данными особое значение приобретает синхронизация. Во время считывания или записи очень важно точно определить момент каждой смены знака. Если синхронизация отсутствует, то момент смены знака может быть определен неправильно, в результате чего неизбежна потеря или искажение информации. Чтобы предотвратить это, работа передающего и принимающего устройств должна быть строго синхронизирована. Существует два пути решения данной проблемы. Во-первых, синхронизировать работу двух устройств, передавая специальный сигнал синхронизации (илисинхросигнал) по отдельному каналу связи. Во-вторых, объединить синхросигнал с сигналом данных и передать их вместе по одному каналу. Именно в этом и заключается суть большинства способов кодирования данных.

Если данные и синхросигнал передаются по одному каналу, то можно осуществить их взаимную временную привязку при передаче между любыми двумя устройствами. Простейший способ сделать это — перед передачей ячейки данных послать синхронизирующий сигнал. Применительно к магнитным носителям это означает, что, например, ячейка, содержащая один бит информации, должна начинаться с зоны смены знака, которая выполняет роль заголовка. Затем следует (или не следует) переход, в зависимости от значения бита данных. Заканчивается рассматриваемая ячейка еще одной зоной смены знака, которая одновременно является стартовой для следующей ячейки. Преимущество этого метода состоит в том, что синхронизация не нарушается даже при воспроизведении длинных цепочек нулей (или единиц), а недостаток — в том, что дополнительные зоны смены знака, необходимые только для синхронизации, занимают место на диске, которое могло бы использоваться для записи данных.

Поскольку количество зон смены знака, которые можно записать на диске, ограничено возможностями технологий производства носителей и головок, при разработке дисковых накопителей изобретаются такие способы кодирования данных, с помощью которых можно было бы "втиснуть" как можно больше битов данных в минимальное количество зон смены знака. При этом приходится учитывать то неизбежное обстоятельство, что часть из них все равно будет использоваться только для синхронизации.

Хотя разработано великое множество самых разнообразных методов, на сегодняшний день реально используются только три из них:

Далее эти методы рассматриваются на примере ASCII-кода символа "X".