IP Library Granted Patent US 9,015,375
Granted Patent B2
US 9,015,375 · App. 11/402,648 · Granted Apr 21, 2015

Buffer controller, codec and methods for use therewith

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 9,015,375
App. No.
11/402,648
Granted
Apr 21, 2015
Kind
B2
Abstract

A buffer controller includes a first write pointer generation module for generating a first write pointer that points to a first sequence of write locations in a buffer memory, that directs an input module to store a sequence of samples of a real-time signal in a buffer memory. A read pointer generation module generates a plurality of read pointers for a corresponding plurality of output modules, wherein each of the plurality of read pointers points to a sequence of read locations in the buffer memory, in a buffer order, that contain the sequence of samples.

Claims (53)

1. A method comprising:

incrementing a first write pointer of a first pointer module a plurality of times to store a first sequence of samples of a first real-time signal in a buffer order at a first sequence of locations of a buffer memory based on the first write pointer;

incrementing a second write pointer of a second pointer module a plurality of times to store a second sequence of samples of a second real-time signal in buffer order at a second sequence of locations of the buffer memory based on the second write pointer;

generating a first read pointer by the first pointer module for use by a first output module, wherein, when generated, the first read pointer points to an initial location of the first sequence of locations that stores the first sequence of samples;

generating a second read pointer by the first pointer module for use by a second output module, wherein, when generated, the second read pointer points to the initial location of the first sequence of locations that stores the first sequence of samples;

generating a third read pointer by the second pointer module for use by the first output module, wherein, when generated, the third read pointer points to an initial location of the second sequence of locations that stores the second sequence of samples;

generating a fourth read pointer by the second pointer module for use by the second output module, wherein, when generated, the fourth read pointer points to the initial location of the second sequence of locations that stores the second sequence of samples;

in response to receiving at the first pointer module a first read enable signal from the first output module, enabling the first pointer module to provide read pointers to the first output module, including the first read pointer;

in response to receiving at the first pointer module a first read signal from the first output module subsequent to providing the first read pointer to the first pointer module, incrementing the first read pointer;

in response to receiving at the first pointer module a second read enable signal from the second output module, enabling the first pointer module to provide read pointers to the second output module, including the second pointer;

in response to receiving at the second pointer module a second read signal from the second output module subsequent to providing the second read pointer, incrementing the second read pointer;

in response to receiving at the second pointer module a third read enable signal from the first output module, enabling the second pointer module to provide read pointers to the first output module, including the third read pointer;

in response to receiving at the second pointer module a third read signal from the first output module subsequent to providing the third read pointer, incrementing the third read pointer;

in response to receiving at the second pointer module a fourth read enable signal from the second output module, enabling the second pointer module to provide read pointers to the first output module, including the fourth read pointer; and

in response to receiving at the second pointer module a fourth read signal from the second output module subsequent to providing the fourth read pointer, incrementing the fourth read pointer.

2. A method comprising:

incrementing a first write pointer of a first pointer module a plurality of times to store a first sequence of samples of a first real-time signal in a buffer order at a first sequence of locations of a buffer memory based on the first write pointer;

incrementing a second write pointer of a second pointer module a plurality of times to store a second sequence of samples of a second real-time signal in buffer order at a second sequence of locations of the buffer memory based on the second write pointer;

generating a first read pointer by the first pointer module for use by a first output module, wherein, when generated, the first read pointer points to an initial location of the first sequence of locations that stores the first sequence of samples;

generating a second read pointer by the first pointer module for use by a second output module, wherein, when generated, the second read pointer points to the initial location of the first sequence of locations that stores the first sequence of samples;

generating a third read pointer by the second pointer module for use by the first output module, wherein, when generated, the third read pointer points to an initial location of the second sequence of locations that stores the second sequence of samples;

generating a fourth read pointer by the second pointer module for use by the second output module, wherein, when generated, the fourth read pointer points to the initial location of the second sequence of locations that stores the second sequence of samples;

in response to receiving a read signal at the first pointer module from the first output module subsequent to providing the first read pointer to the first output module, incrementing the first read pointer and providing the updated first read pointer to the first output module, otherwise not incrementing the first read pointer;

in response to receiving a read signal at the first pointer module from the second output module subsequent to providing the first read pointer to the second output module, incrementing the second read pointer and providing the updated second read pointer to the second output module, otherwise not incrementing the first read pointer;

in response to receiving a read signal at the second pointer module from the first output module subsequent to providing the third read pointer to the first output module, incrementing the third read pointer and providing the updated third read pointer to the first output module, otherwise not incrementing the first read pointer; and

in response to receiving a read signal at the second pointer module from the second output module subsequent to providing the fourth read pointer to the second output module, incrementing the fourth read pointer and providing the updated fourth read pointer to the second output module, otherwise not incrementing the first read pointer.

3. The method of claim 2 further comprising:

determining, at a first status generation module, a first status, from a plurality of possible statuses, for the first output module and a second status, from the plurality of possible statuses, for the second output module, wherein the plurality of possible statuses includes a ready state that indicates a sample of the sequence of samples is available to be read by an output buffer.

4. The method of claim 3 further comprising:

in response to determining that a read enable signal has been received at a first read enable generation module from the first output module, providing the first status from the first status generation module to the first output module, otherwise not providing the first status to the first output module; and

in response to determining that a read enable signal has been received at the first read enable generation module from the second output module, providing the second status from the first status generation module to the second output module, otherwise not providing the second status to the second output module.

5. The method of claim 4 further comprising:

determining, at a second status generation module, a third status, from the plurality of possible statuses, for the first output module, and a fourth status, from the plurality of possible statuses, for the second output module;

in response to determining that a read enable signal has been received at a second read enable generation module from the first output module, providing the third status from the second status generation module to the first output module, otherwise not providing the third status to the first output module; and

in response to determining that read enable signal has been received at the second read enable module from the second output module, providing the fourth status from the second status generation module to the second output module, otherwise not providing the fourth status to the second output module

6. The method of claim 5 wherein determining the first status is based upon the first write pointer and the first read pointer, the second status is based upon the first write pointer and the second read pointer, the third status is based upon the second write pointer and the third read pointer, and the fourth status is based upon the second write pointer and the fourth read pointer.

7. The method of claim 5 , wherein the plurality of statuses includes an underflow state that indicates the pointer of an output buffer points to location that does not include a valid sample.

8. The method of claim 7 further comprising:

determining, at the first output module, the first status;

in response to the first status being the ready state, the first output module retrieves a sample of the first real-time signal from the buffer memory based upon the first read pointer, and provides a read signal to the first pointer module to request an updated first pointer, wherein the first output module provides one of an audio signal or a video signal based upon the retrieved sample.

9. The method of claim 8 further comprising:

in response to the first status being the underflow state, the first output module produces a muted output signal.

10. The method of claim 5 , wherein the plurality of statuses includes an overflow state that indicates that a sample at one of the first sequence of locations was overwritten by a new sample before being accessed by the first output module.

11. The method of claim 10 further comprising:

determining, at the first output module, a the first status;

in response to the first status being the ready state, the first output module retrieves a sample of the first real-time signal from the buffer memory based upon the first read pointer, and provides a read signal to the first pointer module to request an updated first pointer, wherein the first output module produces and output signal that is one of an audio signal or a video signal based upon the retrieved sample; and

in response to the first status being the overflow state, the first output module produces a muted output signal.

12. The method of claim 11 , wherein the plurality of statuses includes a full state that indicates that indicates the first sequence of locations is full; and

in response to the first status being the full state, the first output module accelerates read operations from the first sequence of locations.

13. The method of claim 11 , wherein the plurality of statuses includes an empty state that indicates that indicates the first sequence of locations is empty; and

in response to the first status being the empty state, the first output module produces a muted output signal.

14. The method of claim 2 , wherein the first sequence of samples is stored in a first-in-first-out memory.

15. The method of claim 2 , each of the first pointer is stored at a first register and a base address of the first pointer is stored at a most-significant-bit portion of the first register, the second pointer is stored at a second register and a base address of the second pointer is stored at a most-significant-bit portion of the second register, the third pointer is stored at a third register and a base address of the third pointer is stored at a most-significant-bit portion of the third register, the fourth pointer is stored at a fourth register and a base address of the fourth pointer is stored at a most-significant-bit portion of the fourth register.

Assignments (16)
CHANGE OF NAME Recorded Aug 31, 2017
From: SIGMATEL, INC.
To: SIGMATEL, LLC
Reel/Frame 043735/0306 →
MERGER Recorded Jul 26, 2017
From: SIGMATEL, LLC
To: NXP USA, INC.
Reel/Frame 043328/0351 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE NAME PREVIOUSLY RECORDED AT REEL: 037354 FRAME: 0773. ASSIGNOR(S) HEREBY CONFIRMS THE PATENT RELEASE. Recorded Aug 15, 2016
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: SIGMATEL, LLC
Reel/Frame 039723/0777 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: SIGMATEL, INC.
Reel/Frame 037354/0773 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: SIGMATEL, INC.
Reel/Frame 037355/0838 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0143 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 037356/0553 →
PATENT RELEASE Recorded Dec 21, 2015
From: CITIBANK, N.A., AS COLLATERAL AGENT
To: SIGMATEL, INC.
Reel/Frame 037354/0734 →
SECURITY AGREEMENT Recorded Nov 12, 2013
From: SIGMATEL, LLC
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 031626/0218 →
SECURITY AGREEMENT Recorded Jun 17, 2013
From: SIGMATEL, LLC
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 030628/0636 →
SECURITY AGREEMENT Recorded May 13, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 024397/0001 →
SECURITY AGREEMENT Recorded May 10, 2010
From: SIGMATEL, LLC
To: CITIBANK, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 024358/0439 →
SECURITY AGREEMENT Recorded Mar 16, 2010
From: SIGMATEL, LLC
To: CITIBANK, N.A.
Reel/Frame 024079/0406 →
SECURITY AGREEMENT Recorded Mar 15, 2010
From: FREESCALE SEMICONDUCTOR, INC.
To: CITIBANK, N.A.
Reel/Frame 024085/0001 →
SECURITY AGREEMENT Recorded Jul 9, 2008
From: SIGMATEL, INC.
To: CITIBANK, N.A.
Reel/Frame 021212/0372 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 11, 2006
From: HOLLEY, II, RODERICK; VARGAS, RAYMOND L.; FERRARA, JOHN GREGORY
To: SIGMATEL, INC., A DELAWARE CORPORATION
Reel/Frame 018092/0015 →