IP Library Granted Patent US 9,621,130
Granted Patent B2
US 9,621,130 · App. 14/318,938 · Granted Apr 11, 2017

Configurable generic filter hardware block and methods

Inventors: Parakalan Venkataraghavan (Allentown, PA); Sanal Cheruvathery (Bangalore, IN); Meng-Lin M. Yu (Morganville, NJ); Joseph Williams (San Jose, CA)
Assignee: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
H03H17/0294H03H17/0223H03H2017/0298
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,621,130
App. No.
14/318,938
Granted
Apr 11, 2017
Kind
B2
Abstract

A configurable generic filter hardware block and corresponding methods are provided. A configurable generic filter hardware block includes a plurality of multipliers; a plurality of adders; and one or more multiplexers. The, configurable generic filter hardware block is configured using a header data structure, and the header data structure includes a pointer to a memory location storing a plurality of input samples, a pointer to a memory location storing a plurality of output samples and a coefficient selection control value. The configurable generic filter hardware block is optionally invoked by a convolution instruction in one or more of a vector processor and a state machine. An exemplary Generic Filter Iteration loads input samples; selects coefficients; convolves the input samples and the selected coefficients and stores output samples. The header data structures are optionally stored sequentially in memory and processed in a single loop.

Claims (36)

1. A configurable filter hardware block, comprising:

a plurality of multipliers;

a plurality of adders connected to the plurality of multipliers; and

one or more multiplexers connected to at least one of the plurality of adders, wherein said configurable filter hardware block is configured using a header data structure, said header data structure comprises a pointer to a memory location storing a plurality of input samples, a pointer to a memory location storing a plurality of output samples and a coefficient selection control value.

2. The configurable filter hardware block of claim 1 , wherein said header data structure further comprises one or more of an accumulation control value and an input/output data selection value.

3. The configurable filter hardware block of claim 1 , wherein said configurable filter hardware block is invoked by a convolution instruction in one or more of a vector processor and a state machine.

4. The configurable filter hardware block of claim 1 , further comprising a Generic Filter Iteration to perform the following steps: loading said plurality of input samples; selecting a plurality of coefficients; convolving said plurality of input samples and said plurality of selected coefficients and storing a plurality of output samples.

5. The configurable filter hardware block of claim 4 , wherein said configurable filter hardware block is invoked by said convolving step in said Generic Filter Iteration a plurality of times in a single loop for a plurality of filters.

6. The configurable filter hardware block of claim 4 , wherein each of said Generic Filter Iterations has a corresponding one of said header data structures.

7. The configurable filter hardware block of claim 6 , wherein said header data structures are stored sequentially in memory and processed in a single loop.

8. The configurable filter hardware block of claim 7 , wherein said header data structures are sequenced to reduce dependencies.

9. The configurable filter hardware block of claim 6 , wherein said header data structures are precomputed off-line.

10. A method for performing a plurality of filter operations, said method comprising:

providing a configurable filter hardware block comprising a plurality of multipliers, a plurality of adders and one or more multiplexers, wherein the plurality of multipliers are connected to the plurality of adders and the one or more multiplexers are connected to at least one of the plurality of adders, wherein said configurable filter hardware block is configured using a header data structure, wherein said header data structure comprises a pointer to a memory location storing a plurality of input samples, a pointer to a memory location storing a plurality of output samples and a coefficient selection control value; and

performing a Generic Filter Iteration routine comprising the following steps to configure said configurable filter hardware block based on one of said header data structures for a given one of said plurality of filter operations:

loading a plurality of input samples based on said one of said header data structures;

selecting a plurality of coefficients based on said one of said header data structures;

convolving said plurality of input samples and said plurality of selected coefficients; and

storing a plurality of output samples based on said pointer to a memory location storing a plurality of output samples in said one of said header data structures.

11. The method of claim 10 , wherein said step of selecting a plurality of coefficients further comprises the step of loading said plurality of coefficients from a memory based on said one of said header data structures.

12. The method of claim 10 , wherein said convolving step is performed in response to a vector convolve software instruction keyword to invoke said configurable filter hardware block.

13. The method of claim 12 , wherein said vector convolve software instruction keyword is part of an instruction set of one or more of a vector processor and a state machine.

14. The method of claim 10 , wherein said method is invoked by said convolving step in said Generic Filter Iteration a plurality of times in a single loop for a plurality of filters.

15. The method of claim 10 , wherein each of said Generic Filter Iterations has a corresponding one of said header data structures.

16. The method of claim 15 , wherein said header data structures are stored sequentially in memory and processed in a single loop.

17. An apparatus that performs a plurality of filter operations, comprising:

a configurable filter hardware block comprising a plurality of multipliers, a plurality of adders and one or more multiplexers, wherein the plurality of multipliers are connected to the plurality of adders and the one or more multiplexers are connected to at least one of the plurality of adders, wherein said configurable filter hardware block is configured using a header data structure; and

at least one hardware device operative to:

perform a Generic Filter Iteration routine comprising the following steps to configure said configurable filter hardware block based on one of said header data structures for a given one of said plurality of filter operations:

load a plurality of input samples based on said one of said header data structures; select a plurality of coefficients based on said one of said header data structures; convolve said plurality of input samples and said plurality of selected coefficients; and

store a plurality of output samples based on said pointer to a memory location storing a plurality of output samples in said one of said header data structures.

18. The apparatus of claim 17 , wherein said step of selecting a plurality of coefficients further comprises the step of loading said plurality of coefficients from a memory based on said one of said header data structures.

19. The apparatus of claim 17 , wherein said convolve operation is performed in response to a vector convolve software instruction keyword to invoke said configurable filter hardware block.

20. The apparatus of claim 17 , wherein said at least one hardware device comprises one or more of a vector processor and a state machine.

21. The apparatus of claim 17 , wherein each of said Generic Filter Iterations has a corresponding one of said header data structures.

22. The apparatus of claim 21 , wherein said header data structures are stored sequentially in memory and processed in a single loop.

Assignments (7)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047422 FRAME: 0464. 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 048883/0702 →
MERGER Recorded Oct 5, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047422/0464 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 22, 2016
From: LSI CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 038062/0967 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 24, 2014
From: VENKATARAGHAVAN, PARAKALAN; CHERUVATHERY, SANAL; YU, MENG-LIN M.; WILLIAMS, JOSEPH
To: LSI CORPORATION
Reel/Frame 033808/0195 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 28, 2014
From: VENKATARAGHAVAN, PARAKALAN; CHERUVATHERY, SANAL; YU, MENG-LIN M.; WILLIAMS, JOSEPH
To: LSI CORPORATION
Reel/Frame 033628/0562 →
Continuity (1)
Related Publication 20150381147A1 · Dec 31, 2015