IP Library › Granted Patent US 7,024,596
Granted Patent B2
US 7,024,596 · App. 10/012,834 · Granted Apr 4, 2006

Efficient address generation for interleaver and de-interleaver

Assignee: Broadcom Corporation
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,024,596
App. No.
10/012,834
Granted
Apr 4, 2006
Kind
B2
Abstract

Efficient address generation for interleaver and de-interleaver. The present invention performs interleaving and de-interleaving, at opposite ends of a communication channel, by employing an efficient address generation scheme that is adaptable across a wide variety of applications and platforms. The present invention is particularly applicable to communication channels that exhibit a degree of bursty type noise. By employing interleaving and de-interleaving at the opposite ends of the communication channel, the present invention is able to offer a degree of protection against data corruption that may be caused within the communication channel. The present invention allows convolutional interleaving and de-interleaving operation on a code word by code word basis. The present invention provides for very efficient address generation for RAM based convolutional interleaving and de-interleaving. The present invention also provides for reading, writing, and updating offset registers in a code word by code word base manner.

Claims (138)

1. A communication system that performs interleaving and de-interleaving, comprising:

an interleaver that is operable to interleave data, thereby generating interleaved data;

a de-interleaver that is operable to de-interleave the interleaved data, thereby generating output data that is a substantial replica of the data;

the interleaver delays a portion of the data by a first delay in performing the interleaving;

the de-interleaver delays the portion of the interleaved data by a second delay in performing the de-interleaving; and

wherein each portion of data that undergoes interleaving and de-interleaving incurs a substantially constant delay comprising the first delay and the second delay;

at least one of the interleaver and the de-interleaver comprises a starting address register set, an offset address register set comprising a plurality of values that is operable to be updated, and a memory.

2. The communication system of claim 1 , wherein the interleaving performed by the interleaver comprises convolutional interleaving.

3. The communication system of claim 1 , wherein the de-interleaving performed by the de-interleaver comprises convolutional de-interleaving.

4. The communication system of claim 1 , wherein the memory comprises random access memory.

5. The communication system of claim 1 , wherein a delay line increment for both the interleaver and the de-interleaver is calculated based on an interleaver depth value and a code word size value;

the interleaver depth value, having a first coefficient, and the code word size value, having a second coefficient, are linearly combined thereby summing to a constant value of one; and

the delay line increment comprises at least one of the first coefficient and the second coefficient.

6. The communication system of claim 1 , wherein at least one of the interleaver and the de-interleaver performs read/write operations into and out of the memory on a code word by code word basis.

7. The communication system of claim 1 , wherein the starting address register set and the offset address register set are initialized offline.

8. The communication system of claim 1 , wherein the starting address register set comprises a static register set and the offset address register set comprises a dynamic register set that is operable to be updated.

9. The communication system of claim 1 , wherein the offset address register set is updated on a code word by code word basis.

10. The communication system of claim 1 , wherein at least one of the interleaver and the de-interleaver further comprises a processing circuitry.

11. The communication system of claim 10 , wherein at least one of the data and the interleaved data comprises a symbol, the symbol is written to and read from a location in the memory;

the memory comprises a plurality of delay lines;

the processing circuitry is operable to calculate a row index corresponding to a delay line within the plurality of delay lines; and

the row index is used to select the location to which the symbol is written to and read from in the memory.

12. The communication system of claim 11 , wherein the data comprises at least one additional symbol; and

at least one of the interleaver and the de-interleaver further comprises an output buffer that is operable to re-order the symbol and at least one additional symbol before outputting the symbol and the at least one additional symbol.

13. The communication system of claim 11 , wherein the plurality of delay lines are arranged in an order that is sequentially non-increasing and sequentially non-decreasing.

14. The communication system of claim 1 , wherein the interleaving comprises RAM-based interleaving.

15. The communication system of claim 1 , wherein the de-interleaving comprises RAM-based de-interleaving.

16. A communication system, comprising:

an encoder that encodes a source signal to generate an encoded signal;

an interleaver that interleaves the encoded signal, thereby generating an encoded, interleaved signal;

a modulator that modulates the encoded, interleaved signal to generate an encoded, interleaved, modulated signal;

a communication channel that receives and communicates the encoded, interleaved, modulated signal;

a demodulator that demodulates the encoded, interleaved, modulated signal to generate a encoded, interleaved, demodulated signal;

a de-interleaver that de-interleaves the encoded, interleaved, demodulated signal, thereby generating a encoded, de-interleaved, demodulated signal; and

a decoder that decodes the encoded, de-interleaved, demodulated signal to generate an output signal that is a substantial replica of the source signal; and

wherein the interleaver comprises an interleaver starting address register set, an interleaver offset address register set, and an interleaver memory;

the de-interleaver comprises a de-interleaver starting address register set, a de-interleaver offset address register set and a de-interleaver memory; and

at least one of the interleaver offset address register set and the de-interleaver offset address register set comprises a plurality of values that is operable to be updated.

17. The communication system of claim 16 , wherein the interleaver delays a portion of the encoded signal by a first delay, selected from a plurality of first delays, in performing the interleaving;

the de-interleaver delays a portion of the encoded, interleaved, demodulated signal by a second delay, selected from a plurality of second delays, in performing the de-interleaving;

each first delay within the plurality of first delays corresponds to one second delay within the plurality of second delays to form a plurality of delay combinations;

each delay combination within the plurality of delay combinations comprises a substantially constant delay.

18. The communication system of claim 16 , wherein the interleaving performed by the interleaver comprises convolutional interleaving.

19. The communication system of claim 16 , wherein the de-interleaving performed by the de-interleaver comprises convolutional de-interleaving.

20. The communication system of claim 16 , wherein a delay line increment for both the interleaver and the de-interleaver is calculated based on an interleaver depth value and a code word size value;

the interleaver depth value, having a first coefficient, and the code word size value, having a second coefficient, are linearly combined thereby summing to a constant value of one; and

the delay line increment comprises at least one of the first coefficient and the second coefficient.

21. The communication system of claim 16 , wherein the interleaver and the de-interleaver performs read/write operations into the interleaver memory on a code word by code word basis.

22. The communication system of claim 16 , wherein the de-interleaver performs read/write operations into and out of the de-interleaver memory on a code word by code word basis.

23. The communication system of claim 16 , wherein the interleaver starting address register set and the interleaver offset address register set are initialized offline.

24. The communication system of claim 16 , wherein the de-interleaver staffing address register set and the de-interleaver offset address register set are initialized offline.

25. The communication system of claim 16 , wherein at least one of the interleaver starting address register set and the de-interleaver starting address register set comprises a static register set and at least one of the interleaver offset address register set and the de-interleaver offset address register set comprises a dynamic register set that is operable to be updated.

26. The communication system of claim 16 , wherein at least one of the interleaver offset address register set and the de-interleaver offset address register set is updated on a code word by code word basis.

27. The communication system of claim 16 , wherein at least one of the interleaver and the de-interleaver further comprises a processing circuitry.

28. The communication system of claim 16 , wherein at least one of the interleaver memory and the de-interleaver memory comprises random access memory.

29. The communication system of claim 16 , wherein at least one of the interleaver memory and the de-interleaver memory comprises a plurality of delay lines.

30. The communication system of claim 29 , wherein the plurality of delay lines are arranged in an order that is sequentially non-increasing and sequentially non-decreasing.

31. The communication system of claim 16 , wherein the interleaving performed by the interleaver comprises RAM-based interleaving.

32. The communication system of claim 16 , wherein the de-interleaving performed by the de-interleaver comprises RAM-based de-interleaving.

33. An interleaver that interleaves a plurality of symbols, the interleaver comprising:

a memory that stores a plurality of delay lines;

a starting memory address register set that stores a plurality of starting addresses that corresponds to the plurality of delay lines within the memory;

an address offset register set that stores a plurality of addresses offsets that corresponds to the plurality of delay lines within the memory;

a processing circuit that calculates a plurality of row indices; and

wherein a row index within the plurality of row indices is used to identify a location in the memory that corresponds to a delay line within the plurality of delay lines by identifying a starting address within the plurality of starting addresses and an address offsets within the plurality of addresses offsets; and

the identified delay line is used to delay a symbol within the plurality of symbols during the interleaving.

34. The interleaver of claim 33 , wherein the interleaving performed by the interleaver comprises convolutional interleaving.

35. The interleaver of claim 33 , wherein at least one of the starting memory address register set and the address offset register set is initialized offline.

36. The interleaver of claim 33 , wherein the starting address register set comprises a static register set and the offset address register set comprises a dynamic register set that is operable to be updated.

37. The interleaver of claim 36 , wherein the offset address register set is updated on a code word by code word basis.

38. The interleaver of claim 33 , wherein the processing circuit calculates the plurality of row indices in real time.

39. The interleaver of claim 33 , further comprising a buffer that is operable to reorder the plurality of symbols.

40. The interleaver of claim 33 , further comprising a de-interleaver that de-interleaves the plurality of symbols.

41. The interleaver of claim 40 , wherein each symbol within the plurality of symbols incurs a substantially constant delay during its interleaving an de-interleaving

42. The interleaver of claim 33 , wherein a delay line increment for the interleaver is calculated based on an interleaver depth value and a block size value;

the interleaver depth value, having a first coefficient, and the block size value, having a second coefficient, are linearly combined thereby summing to a constant value; and

the delay line increment comprises at least one of the first coefficient and the second coefficient.

43. The interleaver of claim 33 , wherein the interleaver performs read/write operations into the memory on a code word by code word basis.

44. A de-interleaver that de-interleaves a plurality of symbols, the de-interleaver comprising:

a memory that stores a plurality of delay lines;

a starting memory address register set that stores a plurality of starting addresses that corresponds to the plurality of delay lines within the memory;

an address offset register set that stores a plurality of addresses offsets that corresponds to the plurality of delay lines within the memory;

a processing circuit that calculates a plurality of row indices; and

wherein a row index within the plurality of row indices is used to identify a location in the memory that corresponds to a delay line within the plurality of delay lines by identifying a starting address within the plurality of starting addresses and an address offsets within the plurality of addresses offsets; and

the identified delay line is used to delay a symbol within the plurality of symbols during the interleaving.

45. The de-interleaver of claim 44 , wherein the de-interleaving performed by the de-interleaver comprises convolutional de-interleaving.

46. The de-interleaver of claim 44 , wherein at least one of the starting memory address register set and the address offset register set is initialized offline.

47. The de-interleaver of claim 44 , wherein the starting address register set comprises a static register set and the offset address register set comprises a dynamic register set that is operable to be updated.

48. The de-interleaver of claim 47 , wherein the offset address register set is updated on a code word by code word basis.

49. The de-interleaver of claim 44 , wherein the processing circuit calculates the plurality of row indices in real time.

50. The de-interleaver of claim 44 , further comprising a buffer that is operable to reorder the plurality of symbols.

51. The de-interleaver of claim 44 , further comprising a interleaver that interleaves the plurality of symbols before the de-interleaver de-interleaves the plurality of symbols.

52. The de-interleaver of claim 51 , wherein each symbol within the plurality of symbols incurs a substantially constant delay during its interleaving an de-interleaving.

53. The de-interleaver of claim 44 , wherein a delay line increment for the de-interleaver is calculated based on an interleaver depth value and a block size value;

the interleaver depth value, having a first coefficient, and the block size value, having a second coefficient, are linearly combined thereby summing to a constant value of one; and

the delay line increment comprises at least one of the first coefficient and the second coefficient.

54. The de-interleaver of claim 44 , wherein the de-interleaver performs read/write operations into the memory on a code word by code word basis.

55. A method to perform interleaving of a plurality of symbols, the method comprising:

calculating a delay line increment based on an interleaver depth value and a block size value;

using the delay line increment to define a plurality of delay lines that are stored in a memory;

initializing a plurality of starting memory addresses that corresponds to the plurality of delay lines in the memory;

initializing a plurality of address offsets that corresponds to the plurality of delay lines in the memory;

calculating a plurality of row indices;

identifying a starting address within the plurality of starting addresses and an address offsets within the plurality of addresses offsets by using a row index within the plurality of row indices;

identifying a location in the memory that corresponds to the identified starting address and the identified address offset;

performing at least one of reading a symbol from the first location in the memory and writing the symbol into the location; and

wherein the at least one of the reading and the writing of the symbol into the location in the memory incurs a delay to the symbol during the interleaving;

an interleaver depth value, having a first coefficient, and the block size value, having a second coefficient, are linearly combined thereby summing to a constant value; and

the delay line increment comprises at least one of the first coefficient and the second coefficient.

56. The method of claim 55 , wherein interleaving comprises convolutional interleaving.

57. The method of claim 55 , wherein at least one of the starting memory address register set and the address offset register set is initialized offline.

58. The method of claim 55 , wherein the starting address register set comprises a static register set and the offset address register set comprises a dynamic register set that is operable to be updated.

59. The method of claim 58 , further comprising updating the offset address register set on a code word by code word basis.

60. The method of claim 55 , further comprising calculating the plurality of row indices in real time.

61. The method of claim 55 , further comprising reordering the plurality of symbols.

62. The method of claim 55 , further comprising de-interleaving the plurality of symbols.

63. The method of claim 62 , wherein each symbol within the plurality of symbols incurs a substantially constant delay during its interleaving an de-interleaving.

64. The method of claim 55 , wherein at least one of the reading and the writing of the symbol into the location is performed on a code word by code word basis.

65. A method to perform de-interleaving of a plurality of symbols, the method comprising:

calculating a delay line increment based on an interleaver depth value and a block size value;

using the delay line increment to define a plurality of delay lines that are stored in a memory;

initializing a plurality of starting memory addresses that corresponds to the plurality of delay lines in the memory;

initializing a plurality of address offsets that corresponds to the plurality of delay lines in the memory;

calculating a plurality of row indices;

identifying a starting address within the plurality of starting addresses and an address offsets within the plurality of addresses offsets by using a row index within the plurality of row indices;

identifying a location in the memory that corresponds to the identified starting address and the identified address offset;

performing at least one of reading a symbol from the first location in the memory and writing the symbol into the location; and

wherein the at least one of the reading and the writing of the symbol into the location in the memory incurs a delay to the symbol during the de-interleaving;

an interleaver depth value, having a first coefficient, and the block size value, having a second coefficient, are linearly combined thereby summing to a constant value; and

the delay line increment comprises at least one of the first coefficient and the second coefficient.

66. The method of claim 65 , wherein interleaving comprises at least one of convolutional de-interleaving and block de-interleaving.

67. The method of claim 65 , wherein at least one of the starting memory address register set and the address offset register set is initialized offline.

68. The method of claim 65 , wherein the starting address register set comprises a static register set and the offset address register set comprises a dynamic register set that is operable to be updated.

69. The method of claim 68 , further comprising updating the offset address register set on a code word by code word basis.

70. The method of claim 65 , further comprising calculating the plurality of row indices in real time.

71. The method of claim 65 , further comprising reordering the plurality of symbols.

72. The method of claim 65 , further comprising interleaving the plurality of symbols before performing the de-interleaving.

73. The method of claim 72 , wherein each symbol within the plurality of symbols incurs a substantially constant delay during its interleaving an de-interleaving.

Assignments (6)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047196 FRAME: 0097. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 6, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048555/0510 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047196/0097 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: BROADCOM CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037806/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 12, 2001
From: XIN, WEIZHUANG (A.K.A "WAYNE XIN ")
To: BROADCOM CORPORATION
Reel/Frame 012379/0013 →
Continuity (1)
Related Publication 20030097621A1 · May 22, 2003