Codificación MFM (a veces en la literatura hay nombres "código Miller modificado en un cuadrado", "codificación MFM"; modulación de frecuencia modificada en inglés ) - un método de codificación de datos, uno de los métodos de codificación física (codificación de línea, codificación de canal, codificación digital, señal de manipulación ). Se utiliza para transmitir datos digitales desde un transmisor a un receptor a través de una interfaz serial . Es un código bipolar de dos niveles (una señal puede tomar dos valores correspondientes a un nivel bajo y un nivel alto) en el que cada bit de información está codificado por una combinación de dos bits.
La codificación MFM es una modificación de la modulación de frecuencia ( ing. modulación de frecuencia , FM). Para los disquetes, el uso de MFM duplicó la cantidad de información grabada, tales disquetes se denominaron discos de doble densidad (" doble densidad "). La codificación MFM se utiliza en unidades de disco magnético. Para los discos duros, también se usó MFM al principio, pero pronto se inventó un método más eficiente para codificar información RLL ( longitud de ejecución limitada ).
En el caso de los disquetes, los nuevos métodos dejaron de usarse debido a la falta de la necesidad de transferir grandes cantidades de datos en disquetes (esto no sería lo suficientemente confiable). Además, en el caso de los disquetes, se requiere la compatibilidad de los nuevos estándares de codificación con los antiguos: cualquier unidad moderna puede leer discos codificados tanto en FM como en MFM, mientras que el principio de codificación RLL es fundamentalmente diferente de los dos anteriores.
Con la codificación MFM, se produce un cambio en la corriente de registro en la mitad del intervalo (reloj) si el bit transmitido es 1, y en el borde del intervalo si ambos bits adyacentes son 0. La dirección de la conmutación actual no importa.
Datos | … 0 0 … | … 0 1 … | … 1 0 … | … 1 1 … |
---|---|---|---|---|
Bits de reloj | … ? una ? … | … ? 0 0 … | … 0 0 ? … | … 0 0 0 … |
código MFM | … ? 0 1 0 ? … | … ? 0 0 1 0 … | … 0 1 0 0 ? … | … 0 1 0 1 0 … |
Tenga en cuenta que los bits de reloj antes y después de la secuencia a veces se conocen y, a veces, requieren el conocimiento de bits de datos adicionales. Ejemplo más largo (bits de datos en negrita, bits de reloj en negrita):
Datos: 0 0 0 1 1 0 1 1 Reloj: ? 1 1 0 0 0 0 0 0 El código: ? 0 1 0 1 0 0 1 0 1 0 0 0 1 0 1 0Para sincronizar el controlador, al leer datos, al comienzo del bloque de datos, se escribe un marcador especial, que es un byte hexadecimal A1( 10100001), en el que el cambio actual entre dos bits cero (quinto y sexto) se establece de acuerdo con el protocolo no se realiza.
Número ordinal 1 2 3 4 5 6 7 8 Datos: 1 0 1 0 0 0 0 1 ? Reloj de datos: ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ Nivel de señal: ‾‾|_______|‾‾‾‾‾|_______|‾‾‾‾‾|___?... Sincronismo: ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ No hay cambio en este ciclo ^La secuencia de niveles de señal así obtenida (4 semiciclos de un nivel - 3 semiciclos de otro - 4 semiciclos del nivel inicial - 3 semiciclos de otro), por un lado, no contradice la condición requerida por el protocolo ("el nivel de la señal puede permanecer sin cambios por no más de 4 medios ciclos"), y por otro lado, nunca ocurre en un flujo de datos escritos normales (en el que la señal correspondiente a este bit la secuencia debe verse como 4-3-2-2-3). La tarea se facilita aún más por el hecho de que varias secuencias de marcadores de este tipo se ubican una tras otra, en cuyo caso el bit marcado con un signo de interrogación es conocido e igual a 1. Por lo tanto, para detectar el marcador en el flujo de conmutación entrante, es es suficiente para rastrear varias repeticiones de la secuencia de duraciones 4-3- 4-3-2 sin tener que analizar los bits individuales.