Coded data generation or conversion – Digital code to digital code converters – Coding by table look-up techniques
Reexamination Certificate
1999-08-03
2002-09-17
JeanPierre, Peguy (Department: 2819)
Coded data generation or conversion
Digital code to digital code converters
Coding by table look-up techniques
C704S200000
Reexamination Certificate
active
06452517
ABSTRACT:
FIELD OF THE INVENTION
The present invention relates to digital signal processing (DSP) in general, and speech coding using DSP in particular.
BACKGROUND OF THE INVENTION
A DSP (digital signal processor) is a processor that has a special architecture so that serial processes, namely multiply and accumulate, are faster than those same processes in other processors, such as a CPU (central processing unit). Digital signal processors are used in applications such as cellular phones, fax machines and modems. The architecture of different digital signal processors is customized for use in a particular application. The application includes a software program that calls the specific commands of a particular DSP.
One of the applications for which a DSP could be used is speech coding, in which an analog speech signal is converted to a compressed digital signal. There are several speech-coding techniques available. The technique of code-excited linear predictive (CELP) speech coding is well known in the art, as discussed in the chapter 12, section 10.3 of the
TMS
320
C
54
x Preliminary User's Guide
from Texas Instruments Incorporated of Dallas,
Texas
, USA.
Reference is now made to
FIG. 1
, which is a schematic block diagram illustration of a prior art CELP-based speech coder. An input speech signal
10
is compared to pre-determined, compressed digital signals, which are stored in a dynamic array, known as a codebook
12
. The codebook
12
can be likened to dictionary of sounds, where each sound is digitized, compressed and stored as a code vector
14
. The optimum vector
16
, which best matches the input speech signal
10
according to a certain criterion, is selected in what is known as a “codebook search”. An application using the CELP speech coding technique then transmits the compressed digital signal of the optimum vector
16
instead of the input analog speech signal
10
.
Samples of a subframe of the input speech signal
10
are passed through a weighting filter
18
, thereby producing N weighted input speech samples p(n), n=0, . . . , N−1, where N is the number of samples in the subframe.
In order that the transmitted signal sound as close as possible to real speech, the signal transmitted is actually an amplified, weighted, and synthesized version of the optimum vector
16
. It is customary in the art to represent the codebook
12
by a collection of shape vectors s
i
(n) and a collection of gain factors g
j
, where i is the index of the shape vector and j is the index of the gain factor in the codebook
12
. Prior to comparison with p(n), the shape vector s
i
(n) is passed through the amplifier
20
, and then through a synthesis and weighting filter
22
, the output of which is g
j
v
i
(n), where g
j
is the j
th
gain factor, and v
i
(n) is the weighted, synthesized version of the shape vector s
i
(n).
When p(n) is compared to g
j
v
i
(n), then the error in substituting the amplified, weighted, synthesized code vector for the input speech is minimized for the optimum vector
16
which maximizes the expression given in Equation (1):
c
i
2
/G
i
, (1)
where c
i
is a cross-correlation variable of the weighted, synthesized code vector with the weighted input speech, given by
c
i
=
∑
n
=
0
N
-
1
⁢
⁢
p
⁢
⁢
(
n
)
·
v
i
⁢
⁢
(
n
)
,
and G
i
is an energy variable given by
G
i
=
∑
n
=
0
N
-
1
⁢
⁢
v
i
2
⁢
⁢
(
n
)
.
Then for the optimum vector
16
whose index i has the value opt, the gain factor is given by
g
opt
=
∑
n
=
0
N
-
1
⁢
⁢
p
⁢
⁢
(
n
)
·
v
opt
⁢
⁢
(
n
)
/
∑
n
=
0
N
-
1
⁢
⁢
v
opt
2
⁢
⁢
(
n
)
.
The criterion for choosing the optimum vector
16
can be written as in Equation 2:
c
i
2
·G
opt
≦e
opt
2
·G
i
, (2)
where c
i
and c
opt
are the cross-correlation variables of the i
th
code vector and the optimum vector
16
, respectively, with the weighted input speech, and G
i
and G
opt
are the energy variables of the i
th
code vector and the optimum vector
16
, respectively. The variables c
i
2
and G
i
are the parameters of the i
th
code vector upon which a 1-dimensional codebook search is based.
Reference is now made to
FIG. 2
, which is a schematic flowchart illustration of a prior art method for a standard codebook search, to be used with any processor. In the initialization step
100
, the index i in the codebook is set to
1
, c
opt
2
is set to c
0
2
, G
opt
is set to G
0
, and the index opt of the optimum vector is set to 0. Then a loop
102
of the codebook search begins. There are three multiplication steps: G
i
by c
opt
2
(step
104
), then c
i
by c
i
(step
106
), then c
i
2
by G
opt
(step
108
). Then there is an accumulation step, in which c
opt
2
·G
i
is subtracted (step
110
) from c
i
2
·G
opt
. The condition c
i
2
·G
opt
−c
opt
2
·G
i
≦0 is tested (step
112
), and if satisfied, then a new optimum vector has been found, and an inner loop
114
entered. In that case, the index opt is set (step
116
) to the current value of i, the value c
i
2
is stored (step
118
) as the new c
opt
2
, and the value G
i
is stored (step
120
) as the new G
opt
. Note that the inner loop
114
is executed only when a new optimum vector has been found. When the inner loop
114
is completed, or when the condition c
i
2
·G
opt
−c
opt
2
·G
i
≦0 of step
112
is not satisfied, then it is checked (step
122
) whether the index i is the last index of the codebook. If it is, then loop
102
is exited, and the optimum vector has the index opt. If the index i is not the last index of the codebook, then the index i is moved (step
124
) to the next vector in the codebook before the loop
102
is resumed.
As described hereinabove, the method shown in
FIG. 2
is appropriate for a 1-dimensional codebook search, in which the application performing the codebook search uses the following method:
Repeat {
codebook search on code vector i
}
However, the method shown in
FIG. 2
is also appropriate for 2-dimensional codebook searches, in which the application performing the codebook search uses the following method:
Block Repeat {
various other calculations
codebook search on code vector i
}
where the various other calculations are shown as step
126
in FIG.
2
. In the case of a 2-dimensional codebook search, the output of the various other calculations are used in place of the parameters c
i
and G
i
.
In a typical DSP with one multiplier and one arithmetic logic unit (ALU), the method of loop
102
, schematically illustrated in
FIG. 2
, would require at least four clock cycles, and as many as eight clock cycles if a new optimum vector were found. In a DSP with two multipliers and one ALU, the method of loop
102
, would require at least three clock cycles, and as many as seven clock cycles if a new optimum vector were found.
SUMMARY OF THE INVENTION
An object of the present invention is to provide a digital signal processor (DSP) capable of executing codebook searches, such that the calculation and comparison for each code vector takes two clock cycles only.
There is therefore provided in accordance with a preferred embodiment of the present invention a device for performing a search for the optimum code vector in a codebook having N code vectors indexed by i. The device includes a controller which considers each ith code vector, and a processor which determines in two clock cycles whether the ith code vector is the current optimal code vector.
Moreover, in accordance with a preferred embodiment of the present invention, the processor includes an arithmetic logic unit, and two multipliers.
Furthermore, in accordance with a preferred embodiment of the present invention, the processor further includes a register for storing half of the product of one of the two multipliers.
Additionally, in accordance with a preferred embodiment of the present invention, the processor includes first clock cycle means for generating a first produ
DSP Group Ltd.
Eitan Pearl Latzer & Cohen-Zedek
Jean-Pierre Peguy
LandOfFree
DSP for two clock cycle codebook search does not yet have a rating. At this time, there are no reviews or comments for this patent.
If you have personal experience with DSP for two clock cycle codebook search, we encourage you to share that experience with our LandOfFree.com community. Your opinion is very important and DSP for two clock cycle codebook search will most certainly appreciate the feedback.
Profile ID: LFUS-PAI-O-2899807