MFM Decoder
MFM
Protokoll
, Übersicht DEC
RL02 MFM
DECODER A) Analyse der MFM Signale und MFM DECODER ohne CLOCK RECOVERY B) Realisierung eines MFM DECODER mit CLOCK and DATA RECOVERY ( CDR ), Messen der MFM Signale. C) Fertiger MFM DECODER mit CLOCK and DATA RECOVERY( CDR )für DEC RL02 Laufwerke basierend auf Shift-Register mit Clock-Sync. Hinweis: |
A)
Analyse der MFM Signale und MFM DECODER ohne CLOCK RECOVERY Nun ist man zwar schon in der Lage, MFM Daten zu decodieren, aber diese Methode funktioniert nur, wenn ein Clock Signal zur Verfügung steht. Ein zweiter Nachteil dieser Methode ist auch , dass die Sector/Track Struktur und die Kontroll-Signale, wie SERVO und CRC später quasi manuell nachgebildet werden müssen. Also benötigen wir einen MFM DECODER mit CLOCK and DATA RECOVERY ( CDR), um alle Signale von der Disk zu erf assen. |
B)
Realisierung eines MFM DECODER mit CLOCK
and DATA RECOVERY
(
CDR ), Messen der MFM Signale.
Nun müssen die Zeiten zwischen den MFM Signal Flanken mit einer wesentlich höheren Frequenz gemessen werden. Im Beispiel hier mit einer 50Mhz FPGA Clock. Die 3 verschiedenen MFM Signal-Perioden ergeben dann eine Zähler Auflösung für 12 = Kurze Periode, 18 = Lange Periode und 24 = Sehr Lange Periode. Die Lösung zum Messen der MFM Flanken-Abstände sieht dann so aus: Nun müssen noch die Daten aus der Abfolge der verschiedenen Perioden gewonnen werden. Wichtig ist, dass die Messung der Daten immer um eine Periode hinterher läuft. Der Algorithmus für den MFM DECODER sieht dann so aus: Das ergibt dann folgenden Ablauf: Im ersten Augenblick erscheint dieser Algorithmus eventuell etwas unklar und liegt wohl daran, dass beim MFM Verfahren bei einer doppelten „0“ die erste „0“ keine Clock hat, also quasi weg fällt und somit Platz spart. Weiterhin gilt, dass ein Long-Cycle immer eine Bit-Änderung zur Folge hat. Dabei gibt es eine besonders interessante Konstellation bei einer Bit-Sequenz “100100100100...“ , welche einen Long-Cycle Loop zur Folge hat. Implementierung: Das
komplette MFM-Decoder
Programm habe
ich in GFA-Basic/Pascal entwickelt, weil es für mich nichts
Schnelleres gibt beim Entwicklung und Testen eines Algorithmus.
|
C) Fertiger MFM DECODER mit CLOCK and DATA RECOVERY( CDR )für DEC RL02 Laufwerke basierend auf Shift-Register mit Clock-Sync. Dieser lauffähige MFM Decoder beruht auf einer anderen Lösungsmöglichkeit. Leider kann man mit der 50Mhz FPGA Clock nicht die erforderliche 4.1Mhz Clock Phasen-Synchron zu den MFM Signalen rekonstruieren. Eine annähernde Frequenz von 4.1666 Mhz bekommt man allerdings mit einen 12:1 Teiler bei der 50Mhz standard FPGA-Clock als Eingans-Signal. Es gilt nun, diesen 12:1 Teiler richtig zu synchronisieren, was allerdings nicht einfach war. Folgendes Bild veranschaulicht die Problematik :
Der 12:1 Teiler muss also in Abhängigkeit der 3 möglichen MFM Zyklen und dem aktuellen BIT-Status entweder mit einem CLEAR oder einen PRESET immer neu synchronisiert werden sonst läuft der etwas zu schnelle 4.1666 Mhz Clock raus.Mein Design beruht auf einer Schaltung, bestehend aus dem MFM-DECODER und einen Serial nach 16 Bit parallel Konverter um die Daten bequem in einen FIFO , Dual-Port RAM oder ARM CPU weiter verarbeiten zu können. Mit folgenden Komponenten kann man einen Sektor und/oder Track auslesen: Version
1.0
Version
2.0
Weitere Informationen dazu auch im Vintage-Computer-Forum. Der überarbeitete MFM-Decoder, Version 2.0 hat nun einen 16Bit parallelen und seriellen Ausgang mit den dazugehörigen STROBE Signal. Mit folgenden Komponenten kann man den Header und die Daten von einen Sector/Track auslesen: -
Grundschaltung
zum
Auslesen eines Sectors und/oder Track. Alle Dateien sind im JPG-Format. Für Altera/Quartus Anwender kann ich gerne den gesamten Ordner mit den ARM Programmen im ZIP Format zur Verfügung stellen. Bei Bedarf bitte Kontakt per E-Mail. |