IP Library Granted Patent US 7,714,749
Granted Patent B2
US 7,714,749 · App. 12/198,687 · Granted May 11, 2010

Method for constructing RLL codes of arbitrary rate

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,714,749
App. No.
12/198,687
Granted
May 11, 2010
Kind
B2
Abstract

The claimed embodiments provide methods, apparatuses and systems directed to run-length limited (RLL) coding of data. In one implementation, concatenatable RLL codes with run lengths of zeroes not exceeding k are constructed for any rate N/(N+1) where N≦2 k−2 +k−1. As code rates increase, the value of k departs from the minimum possible value more slowly than that of many other codes. Further, occurrences of k-bit run lengths occur only at the juncture of two codewords. Due to this, the codes are mostly k−1. This quality makes the codes ideal for parity bit insertion applications such as LDPC channels. The method, in one implementation, places the bit addresses of violating sequences in a table at the beginning of the codeword, and the user data, occupying the locations where the table entries are placed, are moved into the locations of the violating sequences. This is done iteratively and in a way which provides for cases in which the violating sequence is inside the address table itself.

Claims (56)

1. A method for encoding data, the method comprising:

receiving a word comprising N bits of data into a memory;

pre-pending an additional bit to the word to form a codeword, wherein each bit has a corresponding bit address, and wherein the bit addresses of the N bits of data descend from a highest bit address starting with the first data bit of the N bits of data;

setting an address table pointer to the bit address of the first data bit of the N bits of data;

scanning the codeword for a violating sequence, wherein the violating sequence is a contiguous sequence of bits that violate a run-length limited coding constraint k, wherein N≦2 k−2 +k−1;

inserting, responsive to locating the violating sequence, an indicator into the codeword, wherein the indicator comprises k bits; wherein inserting the indicator comprises:

if a starting bit address of the violating sequence is equal to the bit address of the address table pointer, constructing the indicator to include the starting bit address of the violating sequence; replacing k bits of the violating sequence with k bits of the indicator starting from the bit address of the address table pointer; and advancing the address table pointer by k to point to a new bit address of the codeword;

if a starting bit address of the violating sequence is less than the bit address of the address table pointer less k, then constructing the indicator to include the starting bit address of the violating sequence; replacing k bits of the violating sequence with k bits of the codeword starting from the bit address of the address table pointer; inserting the indicator into the codeword starting at the bit address of the address table pointer; and advancing the address table pointer by k to point to a new bit address of the codeword; and

if a starting bit address of the violating sequence is greater than the bit address of the address table pointer less k, then moving contiguous bits of the code word starting at the address table pointer up to the starting bit address of the violating sequence to the address table pointer minus k, constructing the indicator to include the starting bit address of the violating sequence; inserting the indicator into the codeword starting at the bit address of the address table pointer; and advancing the address table pointer by k to point to a new bit address of the codeword; and

repeating the scanning and inserting operations until all violating sequences are removed from the codeword.

2. The method of claim 1 further comprising changing an initial value of the pre-pended bit of the codeword when the violating sequence is located.

3. The method of claim 1 wherein the indicator comprises a guard bit, an address field and an end flag.

4. The method of claim 3 wherein the address field is k−2 bits long.

5. The method of claim 3 wherein the guard bit has a value of 1 and the end flag initially has a value of 1 and wherein the end flag is changed to a 0 if an additional violating sequence is detected.

6. The method of claim 1 wherein bit addresses of the code word range from a most significant bit address of N−1 to a least significant bit address of 0, and wherein if N>2 k−2 then the bit addresses are offset to range from the most significant bit address of N−(k+1) to a bit address of 0 where the k−1 least significant bits have no bit address.

7. Logic for encoding data into codewords conforming to a run-length limited coding constraint, the logic encoded in one or more tangible media for execution and when executed operable to:

access a word of a data stream, wherein the word comprises N bits of data into a memory;

pre-pend an additional bit to the word to form a codeword, wherein each bit has a corresponding bit address, and wherein the bit addresses of the N bits of data descend from a highest bit address starting with the first data bit of the N bits of data;

scan the codeword for a violating sequence, wherein the violating sequence is a contiguous sequence of bits that violate a run-length limited coding constraint k, wherein N≦2 k−2 +k−1;

inserting, responsive to locating the violating sequence, an indicator into the codeword, wherein the indicator comprises a guard bit, an address field and an end flag;

remove the violating sequence;

repeat the scan, insert and remove operations until all violating sequences are removed from the codeword, wherein the guard bit of an inserted indicator has a value of 1 and the end flag initially has a value of 1 and wherein the end flag is changed to a 0 if an additional violating sequence is detected.

8. The logic of claim 7 wherein the logic, when inserting the indicator, is further operable to:

initially set an address table pointer to the bit address of the first data bit of the N bits of data;

if a starting bit address of the violating sequence is equal to the bit address of the address table pointer, construct the indicator to include the starting bit address of the violating sequence; replace k bits of the violating sequence with k bits of the indicator starting from the bit address of the address table pointer; and advance the address table pointer by k to point to a new bit address of the codeword;

if a starting bit address of the violating sequence is less than the bit address of the address table pointer less k, then construct the indicator to include the starting bit address of the violating sequence; replace k bits of the violating sequence with k bits of the codeword starting from the bit address of the address table pointer; insert the indicator into the codeword starting at the bit address of the address table pointer; and advance the address table pointer by k to point to a new bit address of the codeword; and

if a starting bit address of the violating sequence is greater than the bit address of the address table pointer less k, then move contiguous bits of the code word starting at the address table pointer up to the starting bit address of the violating sequence to the address table pointer minus k, construct the indicator to include the starting bit address of the violating sequence; insert the indicator into the codeword starting at the bit address of the address table pointer; and advance the address table pointer by k to point to a new bit address of the codeword.

9. The logic of claim 7 wherein the logic, when inserting the indicator, is further operable to: change an initial value of the pre-pended bit of the codeword when the violating sequence is located.

10. The logic of claim 7 wherein bit addresses of the code word range from a most significant bit address of N−1 to a least significant bit address of 0, and wherein if N>2 k−2 then the bit addresses are offset to range from the most significant bit address of N−(k+1) to a bit address of 0 where the k−1 least significant bits have no bit address.

11. A method for encoding data into codewords conforming to a run-length limited coding constraint, the method comprising:

accessing a word of a data stream, wherein the word comprises N bits of data into a memory;

pre-pending an additional bit to the word to form a codeword, wherein each bit has a corresponding bit address, and wherein the bit addresses of the N bits of data descend from a highest bit address starting with the first data bit of the N bits of data;

scanning the codeword for a violating sequence, wherein the violating sequence is a contiguous sequence of bits that violate a run-length limited coding constraint k, wherein N≦2 k−2 +k−1;

inserting, responsive to locating the violating sequence, an indicator into the codeword, wherein the indicator comprises a guard bit, an address field and an end flag;

removing the violating sequence;

repeating the scanning, inserting and removing operations until all violating sequences are removed from the codeword, wherein the guard bit of an inserted indicator has a value of 1 and the end flag initially has a value of 1 and wherein the end flag is changed to a 0 if an additional violating sequence is detected.

12. Logic for decoding codewords, the logic encoded in one or more tangible media for execution and when executed operable to:

receive a codeword comprising N bits of data, wherein N≦2 k−2 +k−1, where k is a run-length limited coding constraint;

identify a last indicator sequence in the codeword wherein the indicator sequence comprises a bit address of a violating sequence;

responsive to identifying the last indicator sequence, set an address table pointer to a first bit address of the indicator sequence;

extract the bit address of the violating sequence from the indicator sequence;

wherein if: a) the extracted bit address is not equal to the address table pointer; and b) if the extracted bit address is less than the corresponding address table pointer; and c) if the bit address is greater than the corresponding address table pointer minus k, then: replace bits of the indicator sequence with bits of the violator sequence from a right-most violating sequence up to an end of the indicator sequence;

wherein if the extracted bit address of the violating sequence equals the address table pointer, then replace the indicator sequence with the violating sequence;

else,

replace the indicator sequence with the first k bits of the code word starting at the extracted bit address; and

insert the violating sequence into the codeword at the extracted bit address.

13. The logic of claim 12 wherein the violating sequence is k zeroes.

14. The logic of claim 12 wherein the codeword further comprises a pre-pended bit and wherein a value of the pre-pended bit is utilized to determine if the codeword includes an indicator sequence and requires decoding.

15. The logic of claim 14 wherein the logic is further operable to:

examine the pre-pended bit; and

decode the codeword if the pre-pended bit equals 0.

16. The logic of claim 14 wherein the logic is further operable to strip the pre-pended bit from the codeword.

17. The logic of claim 12 wherein the indicator sequence further comprises a guard bit and an end flag.

18. The logic of claim 17 wherein the indicator sequence is a lastly-encoded indicator sequence which is located in the codeword by a value of an end flag in the lastly-encoded indicator sequence.

19. The logic of claim 18 wherein the value of the end flag in the lastly-encoded indicator sequence is 1.

20. The logic of claim 12 wherein if N>2 k−2 then the extracted bit address is increased by N−2 k−2 .

Assignments (18)
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT AT REEL/FRAME NO. 40473/0378 Recorded Oct 8, 2025
From: PNC BANK, NATIONAL ASSOCIATION, AS AGENT
To: QUANTUM CORPORATION
Reel/Frame 073061/0454 →
TERMINATION AND RELEASE OF AMENDED AND RESTATED INTELLECTUAL PROPERTY SECURITY AGREEMENT AT REEL/FRAME NO. 47930/0707 Recorded Aug 19, 2025
From: PNC BANK, NATIONAL ASSOCIATION, AS AGENT
To: QUANTUM LTO HOLDINGS, LLC
Reel/Frame 072542/0355 →
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT AT REEL/FRAME NO. 47045/0378 Recorded Aug 19, 2025
From: PNC BANK, NATIONAL ASSOCIATION, AS AGENT
To: QUANTUM LTO HOLDINGS, LLC
Reel/Frame 072522/0885 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 24, 2025
From: BLUE TORCH FINANCE LLC, AS AGENT FOR THE SECURED PARTIES
To: ALTER DOMUS (US) LLC, AS AGENT FOR THE SECURED PARTIES
Reel/Frame 071019/0850 →
RELEASE OF SECURITY INTEREST Recorded Aug 10, 2021
From: U.S. BANK NATIONAL ASSOCIATION
To: QUANTUM CORPORATION; QUANTUM LTO HOLDINGS, LLC
Reel/Frame 057142/0252 →
SECURITY INTEREST Recorded Aug 5, 2021
From: QUANTUM CORPORATION; QUANTUM LTO HOLDINGS, LLC
To: BLUE TORCH FINANCE LLC, AS AGENT
Reel/Frame 057107/0001 →
SECURITY INTEREST Recorded Jan 8, 2019
From: QUANTUM LTO HOLDINGS, LLC
To: PNC BANK, NATIONAL ASSOCIATION
Reel/Frame 047930/0707 →
RELEASE OF SECURITY INTEREST Recorded Dec 27, 2018
From: TCW ASSET MANAGEMENT COMPANY LLC, AS AGENT
To: QUANTUM CORPORATION
Reel/Frame 047988/0642 →
RELEASE OF SECURITY INTEREST Recorded Dec 27, 2018
From: TCW ASSET MANAGEMENT COMPANY LLC, AS AGENT
To: QUANTUM LTO HOLDINGS, LLC
Reel/Frame 047863/0215 →
SECURITY INTEREST Recorded Dec 27, 2018
From: QUANTUM CORPORATION, AS GRANTOR; QUANTUM LTO HOLDINGS, LLC, AS GRANTOR
To: U.S. BANK NATIONAL ASSOCIATION, AS AGENT
Reel/Frame 049153/0518 →
SECURITY INTEREST Recorded Oct 3, 2018
From: QUANTUM LTO HOLDINGS, LLC
To: PNC BANK, NATIONAL ASSOCIATION
Reel/Frame 047045/0378 →
SECURITY INTEREST Recorded Sep 28, 2018
From: QUANTUM LTO HOLDINGS, LLC
To: TCW ASSET MANAGEMENT COMPANY LLC, AS AGENT
Reel/Frame 047003/0819 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 21, 2018
From: QUANTUM CORPORATION
To: QUANTUM LTO HOLDINGS, LLC
Reel/Frame 046941/0735 →
RELEASE OF SECURITY INTEREST Recorded Oct 25, 2016
From: WELLS FARGO CAPITAL FINANCE, LLC, AS AGENT
To: QUANTUM CORPORATION
Reel/Frame 040474/0079 →
SECURITY INTEREST Recorded Oct 25, 2016
From: QUANTUM CORPORATION
To: PNC BANK, NATIONAL ASSOCIATION
Reel/Frame 040473/0378 →
SECURITY INTEREST Recorded Oct 21, 2016
From: QUANTUM CORPORATION
To: TCW ASSET MANAGEMENT COMPANY LLC, AS AGENT
Reel/Frame 040451/0183 →
SECURITY AGREEMENT Recorded Mar 31, 2012
From: QUANTUM CORPORATION
To: WELLS FARGO CAPITAL FINANCE, LLC, AS AGENT
Reel/Frame 027967/0914 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 26, 2008
From: FELLER, MARC
To: QUANTUM CORPORATION
Reel/Frame 021444/0732 →