IP Library Granted Patent US 6,883,021
Granted Patent B2
US 6,883,021 · App. 09/951,348 · Granted Apr 19, 2005

Programmable and multiplierless Viterbi accelerator

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 6,883,021
App. No.
09/951,348
Granted
Apr 19, 2005
Kind
B2
Abstract

The invention is related to methods and apparatus that decode convolutionally encoded data, including trellis-coded modulation (TCM) systems. One embodiment of the invention shares a memory device with a main processor, such as a microprocessor or a DSP, and advantageously relieves the main processor of the relatively time-consuming task of decoding the convolutionally encoded data. This frees up the main processor to execute other tasks. One embodiment of the invention includes a micro-coded state machine that can be programmed to control the decoding of the convolutional codes.

Claims (54)

1. A communications peripheral adapted to transfer data received from a first system to a second system, the communications peripheral comprising:

a local interface to the second system;

a remote interface to the first system;

a codec coupled to the remote interface, wherein the codec is adapted to convert an analog representation of a first data from the first system to a first digital data;

a shared memory adapted to temporarily store the first digital data retrieved by a host processor;

a Viterbi Accelerator adapted to retrieve the first digital data from the shared memory, the Viterbi Accelerator further adapted to decode the first digital data to a second digital data by application of a Viterbi algorithm, the Viterbi Accelerator further adapted to store the second digital data in the shared memory; and

the host processor coupled to the codec and to the shared memory, wherein the host processor is configured to retrieve the first digital data from the codec and to move the first digital data to the shared memory, where the host processor is further configured to retrieve the second digital data from the shared memory and to provide the second digital data to the second system via the local interface.

2. The communications peripheral as defined in claim 1 , wherein:

the Viterbi Accelerator is further configured to retrieve a third digital data from the shared memory end to convolutionally encode the third digital data to a fourth digital data; and

the host processor is further configured to receive a third digital data from the second system via the local interface, to transfer the third digital data to the shared memory, to move the fourth digital data from the shared memory to the codec to enable the second system to transfer data to the first system.

3. The communications peripheral as defined in claim 1 , wherein the host processor is a digital signal processor.

4. The communications peripheral as defined in claim 1 , wherein the communications peripheral is a telephone modem.

5. The communications peripheral as defined in claim 1 , wherein the communications peripheral transfers data from the first system to the second system with a wireless connection.

6. The communications peripheral as defined in claim 1 , wherein the communications peripheral further includes a bus arbiter that manages access to the shared memory, wherein the bus arbiter provides the host processor with higher priority access to the shared memory than the Viterbi Accelerator.

7. The communications peripheral as defined in claim 1 , wherein the Viterbi Accelerator is configured to interrupt the host processor in response to an availability of the second digital data in the shared memory.

8. A decoder for decoding convolutionally encoded data comprising:

an interface circuit adapted to share a memory device with a host processor, where the interface circuit is further configured to read encoded data from the memory device, and configured to write decoded data to the memory device;

a decoding circuit configured to decode convolutionally encoded data by application of a Viterbi algorithm; and

configuration registers adapted to receive initialization parameters from the host processor, and to determine the decoding parameters of the decoder circuit.

9. The decoder as defined in claim 8 , further comprising an algorithmic state machine that controls the operation of the decoders wherein the algorithmic state machine is configurable by loading configuration parameters in registers.

10. The decoder as defined in claim 8 , wherein the decoding circuit is multiplierless.

11. The decoder as defined in claim 8 , wherein the interface circuit accesses the memory device over an address bus and a data bus that is shared with a host processor.

12. A method of decoding convolutionally encoded data, the method comprising:

receiving the convolutionally encoded data into a main processor from a remote computer;

arranging and storing the convolutionally encoded data in a memory device;

instructing a coprocessor to decode the convolutionally encoded data stored in the memory device;

retrieving the convolutionally encoded data from the memory device to the coprocessor;

decoding the convolutionally encoded data to a decoded data; and

storing the decoded data in the memory device to make the decoded data available to the main processor.

13. The method as defined in claim 12 , further comprising applying a Viterbi algorithm to decode the convolutionally encoded data.

14. The method as defined in claim 12 , further comprising setting an interrupt to the main processor in response to decoding at least a portion of the convolutionally encoded data to inform the main processor of the availability of the decoded data.

15. The method as defined in claim 12 , further comprising:

selecting coefficients of an encoder polynomial;

storing unencoded data in the memory device;

instructing the coprocessor to encode the unencoded data;

providing a memory location of the unencoded data;

retrieving the unencoded data from the memory device to the coprocessor;

applying the encoder polynomial to the unencoded data to generate a second encoded data; and

storing the second encoded data to the memory device.

16. The method as defined in claim 15 , further comprising: selecting a puncturing pattern; and applying the puncturing pattern to the second encoded to increase a code rate of the second encoded data.

17. A method of providing data decoded from convolutionally encoded data comprising:

receiving an indication of a memory location of convolutionally encoded data;

retrieving the convolutionally encoded data;

applying a Viterbi algorithm to decode the convolutionally encoded data; storing the decoded data; and

setting an interrupt to indicate a readiness of the decoded data.

18. The method as defined in claim 17 , wherein the indication of the memory location comprises a pointer to a memory address.

19. The method as defined in claim 17 , further comprising: receiving a depuncturing pattern; and inserting null characters to the convolutionally encoded data in response to the depuncturing pattern.

20. The method as defined in claim 17 , further comprising:

receiving a depuncturing pattern; and

inserting low value numbers to the convolutionally encoded data in response to the depuncturing pattern, wherein the low value numbers alternate from positive to negative.

21. The method as defined in claim 20 , wherein the low value numbers are the lowest value numbers that are supported by the computing hardware.

22. A method of configuring a decoder that decodes convolutionally decoded data, the method comprising:

receiving an indication of a code rate, a constraint length, and a puncturing pattern of the convolutionally decoded data; and

programing a micro-coded state machine that controls a Viterbi algorithm implemented by the decoder in response to the code rate, the constraint length, and the puncturing pattern.

Assignments (7)
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Apr 16, 2012
From: QUARTICS, INC.
To: AUGUSTUS VENTURES LIMITED; HERIOT HOLDINGS LIMITED; CASTLE HILL INVESTMENT HOLDINGS LIMITED; SIENA HOLDINGS LIMITED; SEVEN HILLS GROUP USA, LLC
Reel/Frame 028054/0791 →
SECURITY AGREEMENT Recorded Apr 10, 2012
From: QUARTICS, INC.
To: MEYYAPPAN-KANNAPPAN FAMILY TRUST; GREEN SEQUOIA LP
Reel/Frame 028024/0001 →
SECURITY AGREEMENT Recorded Sep 16, 2011
From: QUARTICS, INC.
To: GIRISH PATEL AND PRAGATI PATEL, TRUSTEE OF THE GIRISH PATEL AND PRAGATI PATEL FAMILY TRUST DATED MAY 29, 1991
Reel/Frame 026923/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 25, 2011
From: CMA BUSINESS CREDIT SERVICES ON BEHALF OF AVAZ NETWORKS, INC.
To: QUARTICS, INC.
Reel/Frame 026177/0210 →
TERMINATION OF SECURITY INTEREST Recorded Apr 25, 2011
From: KNOBBE, MARTENS, OLSON & BEAR, LLP
To: AVAZ NETWORKS
Reel/Frame 026177/0900 →
SECURITY INTEREST Recorded Sep 16, 2002
From: AVAZ NETWORKS
To: KNOBBE, MARTENS, OLSON & BEAR, LLP
Reel/Frame 013591/0337 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 14, 2002
From: AHMED, ZAHEER; KHAN, DR. SHOAB A.
To: AVAZ NETWORKS
Reel/Frame 012438/0114 →