A simulator which generates random bit patterns and creates the precoder and write driver patterns for a PR4 PRML channel can be downloaded here. This simulator also generates analog signals representing perfectly equalized read head output, as shown above, with sample points identified. The Windows application from which the above image was taken, shows the connection between the raw data, the encoded data, the resulting signal and the sampled data very clearly. This is useful for someone who simply wants to see how the PRML process works. Signal simulators are available for the following codes:
This archive contains C source code for a simple 8/9 rate endec for RLL 0,4/4 code. Source code and a DOS executable for a test program are included. A direct method of generating an RLL 0,4/4 code table is also provided so the endec can use simple lookup to perform the encoding and decoding.
There are several published methods for encoding with RLL 1,7 rules. Here you will find C source code for an endec using the method of Jacoby and Kost, and the method published by Cirrus Logic.
This archive contains C source for a Viterbi detector and an executable for testing sample sets, an example of which is also included.
This executable calculates several useful distribution functions used in error rate calculations. It includes the normal (Gaussian) distribution, the error function, the co-error function, the so-called Q function and its companion P function. Results are accurate for large arguments so 'Q(x)` can be found for 'x' exceeding 20.
Maximal length pseudorandom binary sequences (PRBS) are used in recording technology to quantify several common sources of nonlinear distortion, commonly call nonlinear transition shift (NLTS). The method involves recording the sequence and analyzing the readback signal using a dipulse extraction technique in order to locate characteristic 'echoes'. This executable generates such sequences and identifies the locations and sources of distortion echoes.
Screen Shot of PR4 Eye Diagram Simulator
These simulators demonstrate synchronous sampling of ideal, noise-free signals. They incorporate an advanced graphics technology which emulates variable persistence oscilloscope phosphors, VPDP. Several channel code types are available, including:
In PRML Class IV (PR4) channels the data detector can be implemented by digital or analog methods. The digital detectors generally use some version of the Viterbi algorithm and can be split into simple, interlaced odd and even sections for reasons that are discussed in the literature. An analog detector can perform the same service using a sliding window. A screen shot of a demo of an operating channel using such a detector is shown below.
Screen Shot of Sliding Window PR4 Detector with Noisy Signal
The operation is simple. When a sample of the analog signal is taken (sample points are shown as enlarged red circles with white border), a determination is made whether the sample is within the white rectangle (detection window). If so, as above, 0 is output, otherwise 1 is output. In addition, if the sample is outside the extended (dashed) portions of the window region, the window is moved so that its extended endpoint matches the sample. Detection errors, which occur with increasing frequency when SNR falls below 16dB, are highlighted in the output stream in red.
The demo is available as a zipped Windows executable here. It simulates equalized PR4 channel signals with user specified AWGN. The SNR can be varied from 40dB down to 14dB. Although this detector is very robust in the presence of Gaussian noise, it does even better in the presence of certain types of correlated noise which are common in disk drives. A more elaborate simulator would include these noise sources and PLL jitter.
In a recently published paper, a method for constructing ideal (artifact free) signals for exercising recording channels was presented. Here is a detailed paper which includes a more comprehensive presentation of the method. It also extends it to provide support for a signal model which is better adapted to modern recording than is the familiar Lorentzian.
Some examples of the types of signals possible are shown below.
Repeating Dibit Pattern
Random Data Signal
A-B Servo Bursts