MFM Decoder
MFM
Protokoll,
Overview DEC
RL02 MFM
DECODER A) Analysis of the MFM signals and MFM DECODERS without CLOCK RECOVERY B) Realization of a MFM DECODER with CLOCK and DATA RECOVERY (CDR) by measure the MFM signals. C) Ready for use MFM DECODER with CLOCK and DATA RECOVERY for DEC RL02 disk drives based on SHIFT REGISTER technology with Clock-Sync. Remark: |
A)
Analysis
of the MFM signals and MFM DECODERS without CLOCK RECOVERY At this point, we are already able to decode MFM data, but this method only works if a synchronous clock signal within the MFM signals is available. The second disadvantage of this methode: I have to rebuilt manually all the timing-track/servo/header infos including CRC during the MFM-encoding cycle. Therefore we need a MFM decoder with CLOCK and DATA RECOVERY ( CDR ) to collect all the timing infos from the surface. |
B)
Realisierung eines MFM DECODER mit CLOCK
and DATA RECOVERY
(
CDR ), Messen der MFM Signale.
To generate an output signal whose phase is related to the phase of the MFM signal, a considerably higher frequency is necessary to be able to measure the time periods between the MFM signal edges. In the example here with a standard 50Mhz FPGA clock. The 3 different MFM signal periods produce a counter resolution for 12 = short period, 18 = long period and 24 very long period. The solution for measuring the MFM periods looks that way: Now, the data still must be produced from the sequence of the different periods. It is important to know that the measuring of the data is always going on around one period afterwards. The algorithm for the MFM decoder looks that way: The run down will produce following result: At the first moment, the algorithm seems to be a little unclear. It lies well, that no clock is provided for the first “0“ if a double “00“ sequenze occurs within the MFM method, so it virtually falls away which saves disk space. Furthermore is valid, that a long MFM period always result in a Bit change. There also is a particularly interesting constellation at a bit sequence “100100100100...“ which has a Long cycle loop the consequence. Implementation: I
have developed the complete MFM-Decoder
Program in
GFA-Basic/Pascal because nothing quicker gives development and
testing of an algorithm for me. |
C) Ready for use MFM DECODER with CLOCK and DATA RECOVERY for DEC RL02 disk drives based on SHIFT REGISTER technology with Clock-Sync. This operational MFM decoder is based on another approach to solution. Unfortunately, it is not possible to reconstruct with the 50Mhz FPGA clock the necessary phase-synchronous 4.1Mhz clock. However, an approximate frequency of 4.1666 Mhz can be obtained using a 12:1 divider using the 50 Mhz standard FPGA clock as input signal. The realization was not simple, though. The following picture illustrates the difficulties:
In dependency of the 3 possible MFM cycles and the current Bit status, the 12:1 divider always has to be synchronized via CLEAR or PRESET to prevent running out of scope. My design is based on a circuit, consisting of the MFM decoder and a serial to 16 bit converter to be able to process the date further into a FIFO, dual port RAM or ARM CPU comfortably. It is possible to read one sector/track with th following components: Version
1.0
Version
2.0
Further upgrade infos can be obtained from the Vintage-Computer-Forum. The new revision edition from my MFM-Decoder Version 2.0 is equipped with a serial and a 16Bit parallel output and the necessary strobe signals. With the following components it is possible to read the HEADER and DATA from one RL02 sector/track: -
Basic
circuit
to
be able to read one sector and/or track. All files are available in JPG format. For Altera/Quartus user, I can provide the entire folder, including programes for the ARM CPU in the ZIP format. If required , please send me an e-mail. |