# Modified Frequency Modulation

Modulación de frecuencia modificada o frecuencia modulada modificada (MFM, del ingleś Modified Frequency Modulation) es un código de línea de ejecución de longitud limitada (en inglés RLL, Run-Length Limited) utilizado para codificar datos en la mayoría de disquetes. Se introdujo por primera vez en los discos duros en 1970 con el IBM 3330, y luego en unidades de disquete comenzando con el IBM 53FD en 1976.
MFM es una modificación del código de frecuencia modulada (FM) original. Debido al espacio mínimo entre las transiciones de flujo, que es una propiedad del diseño del disco, cabezal y canal, la MFM garantiza como máximo una transición de flujo por bit de datos, pudiendo de esta manera escribir con una densidad más alta que FM, que puede requerir dos transiciones por bit.
MFM se utiliza con una velocidad de datos de 250-500 kbit/s (500-1000 kbit/s codificados) en los disquetes comunes estándar y de alta densidad de 5 1/4 y 3 1/2 pulgadas. MFM también se utilizó en los primeros diseños de disco duro, antes de la llegada de códigos RLL más eficientes. Fuera de las aplicaciones de nicho, la codificación MFM es obsoleta en la grabación magnética.

## Modulación de frecuencia

El método de codificación digital de modulación de frecuencia (FM), tal como se utiliza en el contexto del almacenamiento magnético, tiene una variedad de otros nombres, incluida la codificación de retardo y codificación diferencial de Manchester.
La modulación de frecuencia es la codificación de datos binarios para formar una señal de dos niveles donde (a) un «0» no causa ningún cambio de nivel de señal a menos que se siga por otro «0», en cuyo caso se produce una transición al otro nivel al final del primer ciclo de bit; y (b) un «1» provoca una transición de un nivel a otro en la mitad del ciclo de bit.
La codificación FM se utiliza principalmente para codificar señales porque el espectro de frecuencia de la señal codificada contiene menos energía de baja frecuencia que una señal convencional sin retorno a cero (NRZ) y menos energía de alta frecuencia que una señal bifásica.
La codificación FM es una codificación que utiliza solo la mitad del ancho de banda para codificación bifásica pero presenta todas sus ventajas: Para ser reescrito: se garantiza que habrá transiciones cada dos bits, lo que significa que los sistemas de decodificación pueden ajustar su reloj/umbral de CC de forma continua. Un inconveniente es que carece de una legibilidad humana fácil (por ejemplo, en un osciloscopio).
La codificación FM también se conoce como codificación Miller en honor a Armin Miller, su inventor.

## Codificación MFM

Como es estándar cuando se habla de esquemas de codificación de disco duro, las codificaciones FM y MFM producen un flujo de bits que se codifica en NRZI cuando se escribe en el disco. Un bit de 1 representa una transición magnética y un bit de 0 sin transición. La codificación de datos debe equilibrar dos factores:
* Hay límites en el número mínimo y máximo de bits 0 que el hardware puede detectar entre bits 1 consecutivos, y la codificación no debe exceder este límite.
* Hay límites en el número máximo de bits 1 que el hardware puede detectar en un período de tiempo determinado. Si un disco está codificado con un número mayor (promedio) de transiciones magnéticas por bit, los bits tendrán que ser «más anchos» y habrá menos sectores en cada pista.
También se puede pensar que las codificaciones FM y MFM tienen bits de datos separados por bits de reloj, pero con diferentes reglas para codificar los bits. Aun así, ambos formatos codifican cada bit de datos como dos bits en el disco (debido a los delimitadores que se requieren al principio y al final de una secuencia, la densidad real es ligeramente menor).
La regla de codificación básica para FM es que todos los bits de reloj son 1: los ceros se codifican como 10 y los unos como 11. El número de transiciones magnéticas por bit es en promedio 1,5(50% × 1 + 50% × 2).
La regla de codificación básica para MFM es que (x, y, z, ...) codifican como (x, x NOR y, y, y NOR z, z, z NOR ...). Un cero se codifica como 10 si está precedido por un cero, y como 00 si está precedido por un uno (cada uno de estos casos ocurre el 25% del tiempo); uno siempre se codifica como 01 (lo que ocurre el 50% del tiempo); por lo tanto, el número de transiciones magnéticas es en promedio 0,75 (25% 10 = sí + 25% 00 = no + 50% 01 sí).
| Dato | ... 0 0 ... | ... 0 1 ... | ... 1 0 ... | ... 1 1 ... |
| Bits de reloj MFM | ...? 1 ?... | ...? 0 0... | ...0 0 ?... | ...0 0 0... |
| Codificación MFM | ...?010?... | ...?0010... | ...0100?... | ...01010... |
Tenga en cuenta que los bits de reloj circundantes a veces se conocen, pero a veces requieren conocimiento de los bits de datos adyacentes. Un ejemplo más extenso:
(Los bits en negrita son los bits de datos, los otros son los bits de reloj).
En la codificación FM, el número de bits 0 que pueden aparecer entre bits 1 consecutivos es 0 o 1. En la codificación MFM hay un mínimo de un bit 0 entre los adyacentes (nunca hay dos bits 1 adyacentes), y el número máximo de 0 seguidos es de tres. Por lo tanto, FM es una código RLL (0,1), mientras que MFM es un código (1,3).
Se utiliza una «marca de sincronización» especial para permitir que el controlador de disco averigüe dónde comienzan los datos. Esta marca de sincronización debe seguir el código RLL para que el controlador pueda reconocerla, pero no sigue las reglas de FM y MFM para bits de reloj. De esta manera, nunca ocurrirá en ninguna posición de bit en ningún flujo de datos codificados. El patrón de bits de sincronización más corto posible, que sigue las reglas de codificación RLL (1,3) pero no puede producirse mediante la codificación MFM normal, es 100010010001. De hecho, la marca de sincronización que se usa comúnmente en la codificación MFM comienza con estos doce bits; se denomina «sincronización A1», ya que los bits de datos forman el inicio el valor hexadecimal A1 (10100001), pero el quinto bit de reloj es diferente de la codificación normal del byte A1.

## MMFM

MMFM (Modified Modified Frequency Modulation, Modulación de frecuencia modificada modificada, o también Modulación de frecuencia doblemente modificada), también abreviado M²FM, o M2FM, es similar a MFM, pero suprime bits de reloj adicionales, lo que produce una longitud máxima de ejecución más larga (un código RLL (1,4)). En particular, un pulso de reloj solo se inserta entre un par de bits 0 adyacentes si el primer bit del par no tenía un pulso de reloj insertado antes. En el siguiente ejemplo, bits de reloj que habrían estado presentes en MFM se indican en negrita:
En este sistema, las marcas de sincronización se realizan insertando pulsos de reloj adicionales entre los bits 0 adyacentes (siguiendo la regla MFM) donde normalmente se omitirían. En particular, el patrón de bits de datos «100001» tiene un pulso de reloj insertado en el medio, donde normalmente se omitiría: