Systems and methods for hardware flexible low density parity check conversion
The present inventions are related to systems and methods for data processing, and more particularly to systems and methods for data encoding.
1. A data encoding system, the system comprising:
a data encoder circuit operable to apply an encoding algorithm to a data set to yield an initial codeword, wherein the initial codeword includes at least one initial circulant;
a codeword conversion circuit operable to rearrange elements of the initial circulant to yield a divisible circulant including a selected number of sub-circulants, and to reform the initial codeword to include the divisible circulant to yield a converted codeword.
2. The system of claim 1 , wherein the selected number of sub-circulants is programmable.
3. The system of claim 1 , wherein the selected number of sub-circulants is fixed.
4. The system of claim 1 , wherein the codeword conversion circuit is further operable to determine codeword permutation indices based at least in part on the selected number of sub-circulants.
5. The system of claim 4 , wherein the codeword permutation indices are calculated in accordance with the following equation:
Permutation Index( i )=mod( i,s )*( p/s )+floor( i/s ), for i =0 to p −1,
wherein p is the size of the initial circulant, and s is the selected number of sub-circulants.
6. The system of claim 4 , wherein rearranging the elements of the initial circulant to yield the divisible circulant including a selected number of sub-circulants is done by swapping rows of the initial circulant in accordance with the permutation indices to yield an interim data set.
7. The system of claim 6 , wherein rearranging the elements of the initial circulant to yield the divisible circulant including a selected number of sub-circulants further includes swapping columns of the interim data set in accordance with the permutation indices to yield the divisible circulant.
8. The system of claim 4 , wherein rearranging the elements of the initial circulant to yield the divisible circulant including a selected number of sub-circulants is done by swapping columns of the initial circulant in accordance with the permutation indices to yield an interim data set.
9. The system of claim 8 , wherein rearranging the elements of the initial circulant to yield the divisible circulant including a selected number of sub-circulants further includes swapping rows of the interim data set in accordance with the permutation indices to yield the divisible circulant.
10. The system of claim 1 , wherein the encoding algorithm is a low density parity check encoding algorithm.
11. A method for codeword conversion, the method comprising:
applying a data encoding algorithm to a data set to yield an initial codeword, wherein the initial codeword includes at least one initial circulant;
rearranging elements of the initial circulant to yield a divisible circulant including a selected number of sub-circulants; and
reforming the initial codeword to include the divisible circulant to yield a converted codeword.
12. The method of claim 11 , wherein the method further comprises determining codeword permutation indices based at least in part on the selected number of sub-circulants.
13. The method of claim 11 , wherein the codeword permutation indices are calculated in accordance with the following equation:
Permutation Index( i )=mod( i,s )*( p/s )+floor( i/s ), for i =0 to p −1,
wherein p is the size of the initial circulant, and s is the selected number of sub-circulants.
14. The method of claim 11 , wherein rearranging the elements of the initial circulant to yield the divisible circulant including a selected number of sub-circulants is done by swapping rows of the initial circulant in accordance with the permutation indices to yield an interim data set.
15. The method of claim 14 , wherein rearranging the elements of the initial circulant to yield the divisible circulant including a selected number of sub-circulants further includes swapping columns of the interim data set in accordance with the permutation indices to yield the divisible circulant.
16. The method of claim 11 , wherein rearranging the elements of the initial circulant to yield the divisible circulant including a selected number of sub-circulants is done by swapping columns of the initial circulant in accordance with the permutation indices to yield an interim data set.
17. The method of claim 16 , wherein rearranging the elements of the initial circulant to yield the divisible circulant including a selected number of sub-circulants further includes swapping rows of the interim data set in accordance with the permutation indices to yield the divisible circulant.
18. The method of claim 11 , wherein the data encoding algorithm is a low density parity check encoding algorithm.
19. A storage device, the storage device comprising:
a data encoder circuit operable to apply an encoding algorithm to a data set to yield an initial codeword, wherein the initial codeword includes at least one initial circulant;
a codeword conversion circuit operable to rearrange elements of the initial circulant to yield a divisible circulant including a selected number of sub-circulants, and to reform the initial codeword to include the divisible circulant to yield a converted codeword;
a transmission circuit operable to store the converted codeword to a storage medium;
a processing circuit operable to receive the converted codeword from the storage medium and to generate the data set from the converted codeword.
20. The storage device of claim 19 , wherein the encoding algorithm is a low density parity check encoding algorithm, and wherein the processing circuit includes a low density parity check data decoding circuit.