IP Library Granted Patent US 10,210,089
Granted Patent B2
US 10,210,089 · App. 14/743,448 · Granted Feb 19, 2019

Shared buffer management for variable length encoded data

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 10,210,089
App. No.
14/743,448
Granted
Feb 19, 2019
Kind
B2
Abstract

A method and apparatus are provided for controlling data flow by storing variable length encoded information bits in a circular buffer in a write operation to a virtual write address comprising a first wrap bit value appended by a current write address within the buffer address range and generating an interrupt alarm if the virtual write address crosses a virtual alarm address comprising a second wrap bit value appended by an alarm address within the buffer address range, where the first and second wrap bit values each toggle between first and second values every time the current write address or alarm address, respectively, wraps around the circular buffer, thereby synchronizing data flow in the circular buffer and/or preventing buffer overflow.

Claims (41)

1. A method of controlling data flow in a circular buffer defined by an address range between a start address and end address, comprising:

configuring the circular buffer in memory by storing the start address in a first register, storing the end address in a second register, storing an alarm address in a third register, and storing a second wrap bit value in a fourth register;

storing encoded information bits in the circular buffer in a write operation to a virtual write address comprising a first wrap bit value appended by a current write address within the address range;

generating an interrupt alarm if the virtual write address crosses a virtual alarm address comprising the second wrap bit value appended by an alarm address within the address range; and

generating an overflow alarm if the first wrap bit and second wrap bit are not equal and the write address crosses the alarm address;

where the first wrap bit value toggles between first and second values every time the current write address wraps around the circular buffer, and

where the second wrap bit value toggles between first and second values every time alarm address wraps around the circular buffer.

2. The method of claim 1 , where storing encoded information bits comprises storing variable length encoded information bits generated by a video encoder for storage in the circular buffer.

3. The method of claim 1 , further comprising initializing the circular buffer prior to storing encoded information bits by configuring a set of registers in a variable length hardware encoder with a software-programmed start address, end address, initial alarm address, and second wrap bit value.

4. The method of claim 1 , where generating the interrupt alarm comprises:

subtracting the virtual write address from the virtual alarm address to generate a difference value; and

issuing an alarm interrupt if the difference value is non-negative.

5. The method of claim 1 , further comprising servicing the interrupt alarm by:

initiating transfer of stored encoded information bits from the circular buffer up to the virtual alarm address; and

rewriting the virtual a address to an incremented virtual alarm address.

6. The method of claim 1 , further comprising transferring stored encoded information bits from the circular buffer via direct memory access transfer to an Ethernet interface in response to the interrupt alarm.

7. The method of claim 1 , where the first wrap bit value is maintained by a variable length hardware encoder and the second wrap bit value is maintained in software.

8. The method of claim 1 , where the alarm address is programmed by software.

9. The method of claim 1 , further comprising generating an overflow interrupt if (1) the second wrap bit value is not equal to the first wrap bit value, and (2) the current write address is greater than a previous alarm address associated with any pending, unserviced interrupt alarm.

10. A method, comprising:

configuring a ring buffer in memory by setting a hardware wrap bit to a first value and storing a start address in a first register, an end address in a second register, an alarm address A in a third register, and a software wrap bit value having a first value in a fourth register;

receiving data for storage at a write address W in the ring buffer;

generating an interrupt alarm if a virtual write address comprising the hardware wrap bit crosses a virtual alarm address comprising the software wrap bit;

generating an overflow alarm if the hardware wrap bit and software wrap bit are not equal and the write address W crosses the alarm address A;

toggling the hardware wrap bit between first and second values any time the write address W wraps around the ring buffer;

toggling the software wrap bit between first and second values any time the alarm address A wraps around the ring buffer; and

transferring stored data from the ring buffer via direct memory access transfer to an Ethernet interface in response to the interrupt alarm.

11. The method of claim 10 , where generating the interrupt alarm comprises performing a signed subtraction of the virtual alarm address from the virtual write address, where the virtual alarm address comprises the software wrap bit concatenated with the alarm address A in a most significant bit position, and where the virtual write address comprises the hardware wrap bit concatenated with the write address W in a most significant bit position.

12. The method of claim 11 , where the interrupt alarm is generated if (1) the signed subtraction generates a non-negative value and (2) the hardware wrap bit and software wrap bit both have the same value.

13. The method of claim 11 , further comprising generating a ring buffer overflow interrupt if (1) the hardware wrap bit and software wrap bit do not both have the same value, and (2) the current write address W is greater than an alarm address A.

14. The method of claim 10 , where receiving data comprises receiving variable length encoded information bits generated by a video encoder for storage in the ring buffer.

15. The method of claim 10 , where configuring the ring buffer comprises configuring a set of registers in a variable length hardware encoder with a software-programmed start address, software-programmed end address, software-programmed alarm address A, hardware wrap bit having a first value, and software wrap bit value having a first value.

16. The method of claim 10 , further comprising servicing the interrupt alarm by (1) initiating transfer of stored data from the ring buffer up to the alarm address A, and (2) rewriting the alarm address to an incremented alarm address.

17. The method of claim 10 , where the hardware wrap bit value is maintained by a variable length hardware encoder and the software wrap bit value is maintained by software.

18. The method of claim 10 , where the alarm address is programmed by software.

19. A communications controller comprising:

a first register to store a circular buffer start address value indicating a starting address for a circular buffer defined in memory;

a second register to store a circular buffer end address value indicating an ending address for the circular buffer defined in memory;

a third register to store a circular buffer alarm address value indicating an alarm address in the ring buffer for issuing an interrupt alert if a write address to the circular buffer crosses the alarm address;

a fourth register to store a software wrap bit value indicating whether the alarm address has wrapped around the circular buffer; and

output address decoding logic comprising an interrupt generator for toggling a hardware wrap bit between first and second values any time a write address for storing data in the ring buffer crosses the circular buffer end address, where the interrupt generator is configured (1) to generate an interrupt alarm if the virtual write address comprising the hardware wrap bit appended by a current write address crosses a virtual alarm address comprising the software wrap bit value appended by the alarm address, and (2) to generate an overflow alarm if the hardware wrap bit and software wrap bit are not equal and the write address crosses the alarm address.

Assignments (7)
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040925 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Feb 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V. F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 052917/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REMOVE APPLICATION 11759915 AND REPLACE IT WITH APPLICATION 11759935 PREVIOUSLY RECORDED ON REEL 040928 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Jan 17, 2020
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 052915/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 10, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 050744/0097 →
CORRECTIVE ASSIGNMENT TO CORRECT THE NATURE OF CONVEYANCE PREVIOUSLY RECORDED AT REEL: 040626 FRAME: 0683. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER AND CHANGE OF NAME EFFECTIVE NOVEMBER 7, 2016. Recorded Jan 12, 2017
From: NXP SEMICONDUCTORS USA, INC. (MERGED INTO); FREESCALE SEMICONDUCTOR, INC. (UNDER)
To: NXP USA, INC.
Reel/Frame 041414/0883 →
CHANGE OF NAME Recorded Nov 16, 2016
From: FREESCALE SEMICONDUCTOR INC.
To: NXP USA, INC.
Reel/Frame 040626/0683 →
RELEASE OF SECURITY INTEREST Recorded Nov 7, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP B.V.
Reel/Frame 040928/0001 →
RELEASE OF SECURITY INTEREST Recorded Sep 21, 2016
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: NXP, B.V., F/K/A FREESCALE SEMICONDUCTOR, INC.
Reel/Frame 040925/0001 →