MFM kódování (někdy se v literatuře vyskytují názvy „modifikovaný Millerův kód ve čtverci“, „MFM kódování“; anglická modifikovaná frekvenční modulace ) - metoda kódování dat, jedna z metod fyzického kódování (kódování řádků, kódování kanálů, digitální kódování, klíčovací signál ). Slouží k přenosu digitálních dat z vysílače do přijímače přes sériové rozhraní . Jedná se o bipolární dvouúrovňový (signál může mít dvě hodnoty odpovídající nízké úrovni a vysoké úrovni) kód, ve kterém je každý informační bit zakódován kombinací dvou bitů.
Kódování MFM je modifikací frekvenční modulace ( angl. frequency modulation , FM). U disket použití MFM zdvojnásobilo množství zaznamenaných informací, takové diskety se nazývaly disky s dvojitou hustotou („ dvojitá hustota “). Kódování MFM se používá v jednotkách magnetických disků. U pevných disků se nejprve používal také MFM, ale brzy byl vynalezen efektivnější způsob kódování informací RLL ( run-length limited ).
V případě disket se nové metody již nepoužívaly z důvodu chybějící potřeby přenášet velké objemy dat na diskety (to by nebylo dostatečně spolehlivé). V případě disket je navíc vyžadována kompatibilita nových standardů kódování se starými: každá moderní mechanika umí číst disky s kódováním FM i MFM, přičemž princip kódování RLL je zásadně odlišný od předchozích dvou.
U kódování MFM nastává změna záznamového proudu uprostřed intervalu (hodiny), pokud je přenášený bit 1, a na okraji intervalu, pokud jsou oba sousední bity 0. Na směru přepínání proudu nezáleží.
Data | … 0 0 … | … 0 1 … | … 10 … _ | … 11 … _ |
---|---|---|---|---|
Hodinové bity | … ? jeden ? … | … ? 0 0 … | … 0 0? … | … 0 0 0 … |
MFM kód | … ? 0 1 0 ? … | … ? 0 0 1 0 … | … 0 1 0 0 ? … | … 0 1 0 1 0 … |
Všimněte si, že hodinové bity před a za sekvencí jsou někdy známé a někdy vyžadují znalost dalších datových bitů. Delší příklad (datové bity tučně, hodinové bity tučně):
Údaje: 0 0 0 1 1 0 1 1 Hodiny: ? 1 1 0 0 0 0 0 0 Kód: ? 0 1 0 1 0 0 1 0 1 0 0 0 1 0 1 0Pro synchronizaci řadiče se při čtení dat na začátek datového bloku zapisuje speciální značka, kterou je hexadecimální bajt A1( 10100001), ve kterém se aktuální přepínání mezi dvěma nulovými bity (pátý a šestý) nastavuje podle protokol se neprovádí.
Pořadové číslo 1 2 3 4 5 6 7 8 Údaje: 1 0 1 0 0 0 0 1 ? Datové hodiny: ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ Úroveň signálu: ‾‾|_______|‾‾‾‾‾|_______|‾‾‾‾‾|___?... Synchrobeat: ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ V tomto cyklu nedochází k žádnému přepínání ^Posloupnost takto získaných úrovní signálu (4 půlcykly jedné úrovně - 3 půlcykly další - 4 půlcykly počáteční úrovně - 3 půlcykly jiné) na jedné straně není v rozporu podmínka vyžadovaná protokolem ("úroveň signálu může zůstat nezměněna po dobu ne delší než 4 půlcykly") a na druhé straně se nikdy nevyskytuje v proudu normálně zapsaných dat (ve kterých signál odpovídající tomuto bitu sekvence by měla vypadat jako 4-3-2-2-3). Úkol je dále usnadněn skutečností, že několik takových markerových sekvencí je umístěno za sebou, v takovém případě je bit označený otazníkem známý a roven 1. Pro detekci markeru v příchozím přepínacím proudu je tedy stačí sledovat několik opakování sekvence trvání 4-3- 4-3-2, aniž byste museli analyzovat jednotlivé bity.