Performance of Soft Viterbi Decoder enhanced with Non-Transmittable Codewords for storage media

: The introduction of Non-Transmittable Codewords (NTCs) into Viterbi Algorithm Decoder has emerged as one of the best ways of improving performance of the Viterbi Algorithm Decoder. However, the performance has been tested only in hard decision Viterbi Decoder in telecommunication systems, but not in soft decision Viterbi Decoder and storage media. Most storage media use Reed Solomon (RS) Algorithm Decoder. Yet, the field experience still shows failure of the algorithm in correcting burst errors in reading data from the storage media; leading into data loss. This paper introduces the Soft Viterbi Algorithm Decoding enhanced with Non-Transmittable Codewords for storage media. Matlab software was used to simulate the algorithm and the performance was measured by comparing residual errors in a data length of one million bits. Additive White Gaussian Noise model was applied to distort the stored data. The performance comparison was made against the Reed Solomon code, Normal Soft Viterbi and Hard decision Viterbi enhanced with NTCs. The results showed that the Soft Viterbi Algorithm enhanced with NTCs performed remarkably better by 88.98% against RS, 84.31% against Normal Soft Viterbi and 67.26% against Hard Viterbi enhanced with NTCs.


PUBLIC INTEREST STATEMENT
The demand for digital data storage media increases every day and it is estimated that over 90% of all the digital data produced in the world is being stored in hard disk. Sometimes, errors occur in storage media and hence; causing data retrieving difficulties that lead to data loss. Error control in storage media rely upon error correction algorithms to guarantee information retrieval. Reed Solomon (RS) code is the dominant algorithm for errors correcting in storage media. However, recent studies show that there still exist challenges in retrieving data from storage media. This research is among the efforts to design more powerful and effective error correction algorithms. In this study, Soft Viterbi Algorithm Decoder enhanced with Non-Transmittable Codewords (SVAD-NTCs) is proposed. The experiment results for error correction in storage media show that, SVAD-NTCs perform better than RS.

Introduction
There is a big challenge behind the error correction for the storage media due to higher demand of digital data of which most of them are stored on storage media. The demand for storage media devices is increasingly vast (Coughlin & Handy, 2008). Large file sizes requirement for high resolution and multi-camera images are among the reason for increasing demand of storage devices (Coughlin, 2015). Ensuring data reliability and quality of data from the storage media is one of the big challenges (Peters, Rabinowitz, & Jacobs, 2006). The demand for storage media increases every day and it is estimated that over 90% of all information and data produced in the world are stored on hard disk drives (Pinheiro, Weber, & Barroso, 2007). Majority of the people are not aware and interested in improving the Forward Error Correction codes for storage media; rather they are interested in improving backup systems and data recovery software (Hassan, Michael, & Mrutu, 2015). To prevent errors from causing data corruption in storage media, data can be protected with error correction codes. The Viterbi decoder was introduced by Andrew J. Viterbi in 1967 (Mousa, Taman, & Mahmoud, 2015;Sargent, Bimbot, & Vincent, 2011). Since then the researchers are tirelessly working to expand his work by finding better Viterbi decoder (Andruszkiewicz, Davis, & Lleo, 2014;Takano, Ishikawa, & Nakamura, 2015). The Viterbi algorithm allows a random number of the most possible sequences to be enumerated. It can be used to efficiently calculate the most likely path of the hidden state process (Cartea & Jaimungal, 2013;Titsias, Holmes, & Yau, 2016). Channel coding techniques in storage media are used to make the transmitted data robust against any impairment. The data in a storage media get corrupted by noise and can be recovered by using channel coding techniques (Cover & Thomas, 2012). The encoding technique can be either systematic encoding or non-systematic encoding. The comparison between channel codes can be done by looking on different metrics such as coding accuracy, coding efficiency and coding gain. The coding accuracy means a channel is strong and can usually recover corrupted data. The accuracy can be compared on how close the recovered data match with the original data which is measured by Bit Error Rate (BER) probabilities (Jiang, 2010). Coding efficiency means the code has relatively a small number of encoder bits per data symbol and this is defined in terms of code rate which is given by R = K/N, where K is an input symbol to each encoder and N is an output symbol from each encoder. Decreasing the redundant bits decreases the number of error per symbol that can correct/detect errors. Coding gain is the measure of the difference between signal to noise ratio (SNR) level between coded system and uncoded system that require reaching the same bit error rate (BER) levels.
Convolutional code and Viterbi decoder are the powerful forward error correction techniques (Katta, 2014). The Viterbi algorithm is one of the best methods in decoding Convolutional codes. It involves the calculating and measuring the similarity or distance between the received signal at time t and all the trellis path entering each state at time t(i) (Sood & Sah, 2014). Viterbi decoding is probably the most popular and widely adopted in decoding algorithm for Convolutional codes. Viterbi is utilized to decode the Convolutional codes (Becker & Traylor, 2012;Jiang, 2010). The decoding can be done by using two different approaches. One is hard decision approach and the second is soft decision approach (Sklar, 2001). The difference between the two approaches is that the hard decision digitizes the received voltage signals by comparing it to a threshold before passing it to the decoder while the soft decision uses a continuous function of the analogy sample as the input to the decoder and does not digitize the incoming sample prior to decoding. In this paper, the soft decision approach was considered better than hard decision approach. If this approach will be adapted to storage media devices, the data reliabilities over these storage devices will improve.

Binary convolutional encoding and decoding
Convolutional code consists of (n, k, m) and typically k and n are small integers with k < n, but the memory order m can vary and as you increase the memory, the low error probability can be achieved (Marazin, Gautier, & Burel, 2011). Convolutional codes are different from the block codes in such a way that the encoder contains the memory and the n encoder at any time unit and depends not only on the k input but also on the previous input block (Wicker, 1995). The encoding process used in this paper is locked Convolutional encoding and the decoding process used is the enhanced Soft decision Viterbi Decoding. Figure 1 is a state diagram for (2, 1, 2) binary Convolutional encode, where we have one bit as an input and then we get two bits as output. Table 1 is the output and input of the state diagram. From different states, having input 0 or 1 we can get different output that can be either 00, 01, 10 or 11 and then we can identify the next state. Figure 2 is a state diagram for (2, 1, 2) Binary Convolutional Decoder, where we have two bits as input and then we get one bit as output. This is the one that we is used to get back to original code work that has not been corrupted. We follow this through the minimum Euclidean distance. Table 2 is the output and input of the state diagram. The input 00, 01, 10 or 11are used to get the output 1 or 0 that guide to get the correct code that has been corrupted.

Enhanced soft Viterbi Algorithm
Soft Viterbi Algorithm Decoder enhanced with Non-Transmittable Codewords (SVAD-NTCs) was used in this study. Locked Convolutional Encoder was used to encode data while Soft Viterbi Algorithm Decoder enhanced with Non-Transmittable Codewords was used to decode stored data during the reading process. The general parameters used in our design were in reference to the general diagram for binary Convolutional Encoder shown in Figure 3. The input is k bits which means the encoder accepts k bits at a time and reads out n bits which give us the code rate of k/n. In our case, the input k bits is 1 and the output n bits is 2 hence the code rate is 1/2. Having this rate means that there are one input bits and two output bits. Constrain length is given by m + 1 where m is the memory. In this design, our constraint length is 3 which is the number of delay elements in the convolutional coding. This means that there are two delay elements which are the memory plus the single input bits. These parameters dictate the complexity of the decoder. For example, when you increase the constraint length that means increasing the memory size and the error correcting capability increases (Mrutu, Sam, & Mvungi, 2014a). By doing so, the decoder ends up with prohibitive delays when constraint length is above 10 which is not preferred and this is caused by the exponential growth of the decoding computation.
The data are provided at a rate of q bits per second and the channel symbol is an output at a rate of n = 2q symbol per second. The input k is stable during the encoder cycle and the cycle starts when the input clock edge occurs. In this case, the output of the left-hand flip flop is clocked into the right hand flip flop, the previous input bit is clocked into the left hand flip flop and a new input bit becomes available. This encoder encodes input k in (7, 5) Convolutional code, where number 7 and 5 represent the code generator polynomial. This polynomial reads in binary as (111 2 and 101 2 ) and corresponding to the shift registers connection to the upper and lower module two adders respectively. This code has been determined to be the best code for the rate 1/2.

Developed model
This study introduces the new technique for Forward Error Correction which can be adopted in the storage media devices. The technique uses locked Convolutional Encoder to write data to storage media devices and Soft Viterbi Algorithm Decoder enhanced with Non-Transmittable Codewords to read data from the storage media devices. Viterbi Algorithm Decoder has special characteristics which enable it to use Non-Transmittable Codewords (NTCs) at the receiving machine (Mrutu, Sam, & Mvungi, 2014b).This technique uses either higher or lower locked encoder where in higher encoder we add two bits which are minus one and minus one (−1−1) and in lower encoder we add two bits which are one and one (11). Using this technique stabilizes the decoder and reduces the computation complexity. The technique can be used in the decoding process if we use the locked Convolutional Encoder during the encoding process. In this model, locked Convolutional Encoder is used in writing data to the storage media and Soft Viterbi Algorithm Decoder enhanced with Non-Transmittable Codewords in the reading of the data in the other end. Reed Solomon was also developed to help in the comparison as it has been seen that most storage media devices use reed Solomon algorithm. Both algorithms used the same code efficient. The following are the parameters used in our simulation.      Keeping track of the post decoding errors was the key to observe the performance of the decoder. Table 5 shows the residual error after adding the NTCs in different signals to noise ratio. The test was conducted by adding NTCs and the improvement made was noted. This process kept going for all 13 NTCs. The observation from the Table 5 shows that the residual error decreased by adding more NTCs. In the NTCs from 6 to 13, there were no changes meaning that adding more NTCs did not have significant change from NTCs 7. The residual error is almost the same from other NTCs. This shows that the maximum improvement which we can be use is to use the NTCs 6. These results concur with the hard decision results from the research done by Mrutu, Sam, and Mvungi (2014c) that the maximum NTCs which have significant changes in the improvement is 6. Figure 5 shows the graphical interpretation of the data above. There are no significant changes above 6 NTCs. Again, in the 6 NTCs, the residual error is approximately to zero as the signal to noise ratio in dB increases. This tells that even if the storage media are highly affected by the errors, there is a higher possibility of being able to retrieve the stored information.

Result and discussion
This section describes the performance improvement of the error recovery in storage media between the Normal Soft and Hard Viterbi Algorithm (i.e. Zero NTCs) against Enhanced Soft Viterbi Algorithm, Enhanced Hard Viterbi against Enhanced Soft Viterbi algorithm, and the Enhanced Soft Viterbi algorithm against Reed Solomon which is commonly used in the storage media. For both algorithms same bit stream for encoding and decoding are used. Figure 6 shows the Normal Hard Viterbi, Normal Soft Viterbi, Hard Viterbi Algorithm enhanced with Non-Transmittable Codewords and Soft Viterbi Algorithm Decoder enhanced with Non-Transmittable Codewords with 6 NTCs. Figure 7 shows the Reed Solomon for different values of z which z = 1 was used in the comparison with the Enhanced Soft decision Viterbi Decoding. This was the one which gave the best performance compared to the other. Figure 6 shows that when Signal to Noise Ratio (SNR) is equal to one, it means that signal strength is equal to noise strength. Looking at this point, you will find out that out of one million bits corrupted, the Enhanced Algorithm is able to recover the data up to 98%. The overall performance is that out of one million bit this algorithm is able to correct up to 97%. It is obvious that if the storage media are corrupted, there is a higher possibility of recovering the data by using this algorithm. Figure 5 shows that when the SNR is 6 dB then the algorithm can correct error by 100%. Hence the reliability of the storage media can be maintained.  Table 6 shows the residual error of one million bits sent for the Normal Soft Viterbi (SV) and the residual error for the Soft Viterbi Algorithm Decoder enhanced with Non-Transmittable Codewords (SVAD-NTCs). The aim was to compare and see the percentage improvement in the storage media for the error correction when we use the NTCs technique. Thus, Table 6 shows the data error recovery improvement from normal Soft Viterbi and enhanced Soft Viterbi and its percentage improvement. The results show that there are 1,28,449 data error recovery improvement that meaning that the enhanced Soft Viterbi Algorithm with 6NTCs reduces residual error by 84.31% from the normal Soft Viterbi Algorithms. This is a good indication for the storage media devices.   Table 7 shows the residual error of one million bits sent for the normal Hard Viterbi (HV) and the residual error for the SVAD-NTCs. The aim was to compare and see the percentage improvement in the storage media for the error correction when we use the NTCs technique. Thus, Table 7 shows the data error recovery improvement from normal Hard Viterbi and enhanced Soft Viterbi and its percentage improvement. The results show that there are 3,71,880 data error recovery improvement; meaning that the enhanced Soft Viterbi Algorithm with 6NTCs reduces residual error by 94% from the normal Hard Viterbi algorithms. This is a good indication for the storage media devices. Table 8 shows the residual errors of one million bits sent for the Reed Solomon (RS) and the residual error for the SVAD-NTCs. The aim was to compare and see the percentage improvement in the storage media for the error correction when Reed Solomon Algorithm and the Soft Viterbi algorithm enhanced with NTCs technique are used. Table 7 shows data error recovery improvement from Reed  Solomon and enhanced Soft Viterbi and its percentage improvement. The results show that there are 1,92,978 data error recovery improvement that meaning that the enhanced Soft Viterbi Algorithm with 6NTCs reduces residual error by 88.98% from the Reed Solomon Algorithms. These results are good and show that there is a big improvement when the enhanced Soft Viterbi Algorithm is used as compared to the Reed Solomon Algorithm. This is a good improvement to the storage media devices. Table 9 shows the residual error of one million bits sent for the Hard Viterbi Algorithm Decoder enhanced with Non-Transmittable Codewords (HVAD-NTCs) and the residual error for the SVAD-NTCs. The aim was to compare and see the percentage improvement in the storage media for the error correction when we use HVAD-NTCs and the SVAD-NTCs. Table 9 shows data error recovery improvement from HVAD-NTCs and SVAD-NTCs and its percentage improvement. The results show that there are 49,099 data error recovery improvement that meaning that the enhanced Soft Viterbi Algorithm with 6NTCs reduces residual error by 67.26% from the Hard Viterbi Algorithms enhanced with 6NTCs. These are good results which show that there is a big improvement when we use the

Conclusion
The Soft Viterbi Algorithm Decoder enhanced with Non-Transmittable Codewords showed a remarkable improvement in correcting the errors in the storage media. Out of one million bits which were encoded, the algorithm was able to correct up to 97% which is close to 100% efficiency. When the SNR is equal to one dB, it means that the signal strength is the same as noise strength. If the algorithm is able to correct by 98%, it means there is high possibility for storage media to retrieve the corrupted data. When the SNR is equal to 6 dB and above, the algorithm is able to correct the error by 100%. This means there is a percentage at which when the storage media are corrupted, the algorithm will be able to recover the data by 100% and hence increasing data reliability in storage media. Within all algorithms compared, the enhanced Soft Viterbi Algorithm specifies to be the best. It reduces the error post decoding by 84.31% from the normal Soft Viterbi Algorithms, 88.98% from Reed Solomon Algorithm and 67.26% from the Enhanced Hard Viterbi Algorithm. Further researches on application of Soft Viterbi Algorithm enhanced with NTCs on storage media are encouraged to improve data reliability.