Claims
- 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 the 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 a 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 and 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 stored 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 block.
- 9. The decoder as defined in claim 8, further comprising an algorithmic state machine that controls the operation of the decoder, 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, further comprising an encoder circuit coupled to the interface circuit, where the encoder circuit is adapted to receive unencoded data and to apply an encoding polynomial to the unencoded data to produce a convolutionally coded data, wherein coefficients of the encoding polynomial are configured by data stored in the configuration registers.
- 12. 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.
- 13. 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.
- 14. The method as defined in claim 13, further comprising applying a Viterbi algorithm to decode the convolutionally encoded data.
- 15. The method as defined in claim 13, 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.
- 16. The method as defined in claim 13, 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.
- 17. The method as defined in claim 16, 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.
- 18. 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.
- 19. The method as defined in claim 18, wherein the indication of the memory location comprises a pointer to a memory address.
- 20. The method as defined in claim 18, further comprising:
receiving a depuncturing pattern; and inserting null characters to the convolutionally encoded data in response to the depuncturing pattern.
- 21. The method as defined in claim 18, 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.
- 22. The method as defined in claim 21, wherein the low value numbers are the lowest value numbers that are supported by the computing hardware.
- 23. 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.
RELATED APPLICATION
[0001] This application claims the benefit under 35 U.S.C. §119(e) of U.S. Provisional Application No. 60/231,255, filed Sep. 8, 2000, the entirety of which is hereby incorporated by reference.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60231255 |
Sep 2000 |
US |