IP Library Granted Patent US 8,640,004
Granted Patent B2
US 8,640,004 · App. 13/266,011 · Granted Jan 28, 2014

Data rearrangement for decoder

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 8,640,004
App. No.
13/266,011
Granted
Jan 28, 2014
Kind
B2
Abstract

There is provided a solution for rearranging data to a decoder of a receiver. The solution comprises receiving data, writing the data to one or more memory slots in parts, first in an ascending order of addresses and then in a descending order of addresses. The solution further comprises reading the full memory slots in a descending order of addresses and forwarding the read data to the decoder.

Claims (62)

1. A method comprising:

receiving at least one data sample over a predetermined number of clock cycles;

writing the received at least one data sample to a memory comprising one or more memory slots during the last clock cycle of each predetermined number of clock cycles such that first parts of a predetermined one or more memory slots are filled in an ascending order of addresses and, after the predetermined one or more memory slots are filled in respect of the first part, second parts of the predetermined one or more memory slots are filled in a descending order of addresses, wherein a part of a memory slot stores the at least one data sample received over the predetermined number of clock cycles;

reading the written data samples from the predetermined one or more memory slots in a descending order of addresses once the first part and the second part of at least one memory slot are written, wherein the reading takes place during the clock cycles when data is not being written to the memory; and

forwarding the read data samples from the predetermined one or more memory slots.

2. The method of claim 1 , further comprising:

receiving at least one data sample over a predetermined number of clock cycles, wherein the at least one data sample corresponds to a part of a code block.

3. The method of claim 2 , further comprising:

writing the received at least one data sample to the first part of a specific memory slot during the last clock cycle of each predetermined number of clock cycles;

incrementing an address of the specific memory slot in which the received at least one data sample is written during the last clock cycle of each predetermined number of clock cycles until the number of write operations reaches a predetermined threshold; and

decrementing the address of the specific memory slot in which the received at least one data sample is written during the last clock cycle of each predetermined number of clock cycles after the predetermined threshold is reached and until the data samples corresponding to the current code block are written.

4. The method of claim 2 , further comprising:

reading the written data samples from at least one memory slot starting with the memory slot having an address corresponding to the predetermined threshold while at least one second part of the predetermined one or more memory slots is empty; and

decrementing the address of the memory slot which is read until the data samples corresponding to the current code block are read.

5. The method of claim 2 , further comprising:

receiving at least one data sample relating to another code block; and

performing write and read operations for the code block such that writing is started from a memory slot with an address, which corresponds to the predetermined threshold in the last code block and is incremented by one.

6. The method of claim 2 , further comprising:

writing the first received at least one data sample to the first part of the memory slot with the second lowest address among the addresses used for the data samples corresponding to the current code block;

receiving at least one tail data sample corresponding to the current code block; and

writing the received at least one tail data sample to the second part of the memory slot with the lowest address among the addresses used for the current code block.

7. The method of claim 1 , wherein the at least one data sample comprises at least one of the following: at least one systematic bit and at least one parity bit.

8. The method of claim 1 , further comprising:

Storing, in a temporary register, the at least one data sample received over the predetermined number of clock cycles minus one.

9. The method of claim 1 , further comprising:

counting the number of write operations and read operations;

obtaining knowledge of a code block size;

determining if at least one of the following takes place: there is a full memory slot to be read, the memory is full, and the memory is empty; and

performing at least one of the following: controlling the reading of the full memory slot if there is one, restraining from receiving the at least one data sample if the memory is full, and controlling the informing of the empty memory.

10. An apparatus, comprising

an interface configured to receive at least one data sample over a predetermined number of clock cycles; the apparatus further comprising a processor configured to:

write the received at least one data sample to a memory comprising one or more memory slots during the last clock cycle of each predetermined number of clock cycles such that first parts of a predetermined one or more memory slots are filled in an ascending order of addresses and, after the predetermined one or more memory slots are filled in respect of the first part, second parts of the predetermined one or more memory slots are filled in a descending order of addresses, wherein a part of a memory slot stores the at least one data sample received over the predetermined number of clock cycles; and to

read the written data samples from the predetermined one or more memory slots in a descending order of addresses once the first part and the second part of at least one memory slot are written, wherein the reading takes place during the clock cycles when data is not being written to the memory; and the interface is further configured to:

forward the read data samples from the predetermined one or more memory slots.

11. The apparatus of claim 10 , wherein the at least one data sample corresponds to a part of a code block.

12. The apparatus of claim 11 , wherein the processor is further configured to:

write the received at least one data sample to the first part of a specific memory slot at the last clock cycle of each predetermined number of clock cycles;

increment an address of the specific memory slot in which the received at least one data sample is written during the last clock cycle of each predetermined number of clock cycles until the number of write operations reaches a predetermined threshold; and

decrement the address of the specific memory slot in which the received at least one data sample is written during the last clock cycle of each predetermined number of clock cycles after the predetermined threshold is reached and until the data samples corresponding to the current code block are written.

13. The apparatus of claim 11 , wherein the processor is further configured to:

read the written data samples from at least one memory slot starting with the memory slot having an address corresponding to the predetermined threshold while at least one second part of the predetermined one or more memory slots is empty; and

decrement the address of the memory slot which is read until the data samples corresponding to the current code block are read.

14. The apparatus of claim 11 , wherein the first interface is further configured to:

receive at least one data sample relating to another code block; and the processor is further configured to:

perform write and read operations for the code block such that writing is started from a memory slot with an address which corresponds to the predetermined threshold in the last code block and is incremented by one.

15. The apparatus of claim 11 , wherein the processor is further configured to:

write the first received at least one data sample to the first part of the memory slot with the second lowest address among the addresses used for the data samples corresponding to the current code block; and the interface is further configured to:

receive at least one tail data sample corresponding to the current code block; and the processor is further configured to:

write the received at least one tail data sample to the second part of the memory slot with the lowest address among the addresses used for the current code block.

16. The apparatus of claim 10 , wherein the at least one data sample comprises at least one of the following: at least one systematic bit and at least one parity bit.

17. The apparatus of claim 10 , wherein the processor is further configured to:

store to a temporary register the at least one data sample received over the predetermined number of clock cycles minus one.

18. The apparatus of claim 10 , wherein the processor is further configured to:

count the number of write operations and read operations;

obtain knowledge of a code block size;

determine if at least one of the following takes place: there is a full memory slot to be read, the memory is full, and the memory is empty; and to

perform at least one of the following: controlling the reading of the full memory slot if there is one, restraining from receiving the at least one data sample if the memory is full, and controlling the informing of the empty memory.

19. An apparatus, comprising:

interfacing means for receiving at least one data sample over a predetermined number of clock cycles;

processing means for writing the received at least one data sample to a memory comprising one or more memory slots during the last clock cycle of each predetermined number of clock cycles such that first parts of a predetermined one or more memory slots are filled in an ascending order of addresses and, after the predetermined one or more memory slots are filled in respect of the first part, second parts of the predetermined one or more memory slots are filled in a descending order of addresses, wherein a part of a memory slot stores the at least one data sample received over the predetermined number of clock cycles;

processing means for reading the written data samples from the predetermined one or more memory slots in descending order of addresses once the first part and the second part of at least one memory slot are written, wherein the reading takes place during the clock cycles when data is not being written to the memory; and

interfacing means for forwarding the read data samples from the predetermined one or more memory slots.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 1, 2015
From: NOKIA CORPORATION
To: NOKIA TECHNOLOGIES OY
Reel/Frame 035543/0141 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 7, 2011
From: OIKONOMAKOS, PETROS
To: NOKIA CORPORATION
Reel/Frame 027184/0336 →