Digital Signal Processing Device
20220374201 · 2022-11-24
Inventors
Cpc classification
International classification
Abstract
A digital signal processor includes K first electronic circuits. The first inputs receive K groups of G successive coefficients of a polynomial. The polynomial are of degree N with N+1 coefficients, where K is a sub-multiple of N+1 greater than or equal to two and G is equal to (N+1)/K. The first electronic circuits are configured to simultaneously implement K respective Homer methods and deliver K output results. A second electronic circuit includes a first input configured to successively receive the output results of the first electronic circuits starting with the output result of the first electronic circuit having processed the highest rank coefficient of the coefficients. A second input is configured to receive a variable X and the second electronic circuit is configured to implement a Homer method and deliver a value of the polynomial for the variable X on the output of the second electronic circuit.
Claims
1. A digital signal processor comprising: K first electronic circuits comprising K first inputs, K second inputs, and K outputs, wherein the first inputs are configured to receive K groups of G successive coefficients of a polynomial, the polynomial being of degree N with N+1 coefficients, K being a sub-multiple of N+1 greater than or equal to two, G being equal to (N+1)/K, ranks of the coefficients within each group being mutually offset by K starting with the highest rank coefficient in said group, the ranks of the coefficients received simultaneously on the first inputs being mutually offset by one, wherein the second inputs are respectively configured to receive a variable X.sup.K, and wherein the first electronic circuits are configured to simultaneously implement K respective Homer methods and deliver K output results on the outputs; and a second electronic circuit comprising a first input, a second input, and an output, wherein the first input is configured to successively receive the output results of the first electronic circuits starting with the output result of the first electronic circuit having processed the highest rank coefficient of the coefficients, wherein the second input is configured to receive a variable X, wherein the second electronic circuit is configured to implement a Homer method and deliver a value of the polynomial for the variable X on the output of the second electronic circuit.
2. The digital signal processor of claim 1, wherein each first corresponding circuit of the first electronic circuits comprises: a first multiplier comprising a first input, a second input, and an output, the first input of the first multiplier connected to the second input of the first corresponding circuit; and a first adder comprising a first input, a second input, and an output, the first input of the first adder connected to the first input of the first corresponding circuit, the second input of the first adder connected to the output of the first multiplier, the output of the first adder connected to the output of the first corresponding circuit and looped back onto the second input of the first multiplier.
3. The digital signal processor of claim 2, wherein the second electronic circuit comprises: a second multiplier comprising a first input, a second input, and an output, the first input of the second multiplier connected to the second input of the second electronic circuit; and a second adder comprising a first input, a second input, and an output, the first input of the second adder connected to the first input of the second electronic circuit, the second input of the second adder connected to the output of the second multiplier, the output of the second adder connected to the output of the second electronic circuit and looped back onto the second input of the second multiplier.
4. The digital signal processor of claim 1, wherein the second electronic circuit is one of the first electronic circuits.
5. The digital signal processor of claim 1, wherein the second electronic circuit is different from each of the first electronic circuits.
6. A servo-control system comprising: a servo-control loop integrating the digital signal processor of claim 1; and an electric motor connected to the servo-control loop.
7. The servo-control system of claim 6, wherein the servo-control loop is configured to evaluate a polynomial approximation of a sine function, and to control an angle of rotation of the electric motor.
8. The digital signal processor of claim 1, wherein K is two.
9. The digital signal processor of claim 1, wherein K is four.
10. A digital signal processor comprising: a first circuit configured to receive a first sub-polynomial of an input polynomial, evaluate the first sub-polynomial with a first Homer method, and output a first intermediate result of evaluating the first sub-polynomial; a second circuit configured to receive a second sub-polynomial of the input polynomial, evaluate the second sub-polynomial with a second Homer method, and output a second intermediate result of evaluating the second sub-polynomial, wherein the first Homer method and the second Homer method are simultaneously implemented; and a third circuit configured to receive the first intermediate result and the second intermediate result, evaluate the first intermediate result and the second intermediate result with a third Homer method to produce a final result of evaluating the input polynomial, and output the final result.
11. The digital signal processor of claim 10, wherein the final result is a result of evaluating the input polynomial for a value, and the first sub-polynomial and the second sub-polynomial are of degree one for the value squared.
12. The digital signal processor of claim 10, wherein the first circuit is configured to receive the first sub-polynomial by receiving first coefficients in a first input register for the first circuit, the second circuit is configured to receive the second sub-polynomial by receiving second coefficients in a second input register for the second circuit, and the first coefficients and the second coefficients have ranks that are mutually offset by two.
13. The digital signal processor of claim 12 further comprising: a control circuit configured to load the first coefficients in the first input register during a first iteration, load the second coefficients in the second input register during a second iteration, and load the first intermediate result and the second intermediate result in a third input register for the third circuit during a third iteration.
14. The digital signal processor of claim 10, wherein the first circuit comprises a first adder and a first multiplier, and the second circuit comprises a second adder and a second multiplier.
15. The digital signal processor of claim 14, wherein the third circuit comprises a third adder and a third multiplier.
16. The digital signal processor of claim 14, wherein the third circuit comprises the second adder and the second multiplier.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0041] Other advantages and features will become apparent on examining the detailed description of embodiments and implementations, which are in no way limiting, and of the appended drawings in which:
[0042]
[0043]
[0044]
[0045]
DETAILED DESCRIPTION OF ILLUSTRATIVE EMBODIMENTS
[0046]
[0047] The device DIS comprises GEN_CLK clock generator configured to generate a clock signal CLK clocking the first two circuits C1_K1, C1_K2, the second circuit C2 and the controller MC.
[0048] The device DIS comprises in relation to the first circuits C1_K1, C1_K2, a first input register RE1_K1, a second input register RE1_K2, a first output register RS_K1, a second output register RS_K2, and a first shared register RX_C1.
[0049] The device DIS also comprises, in relation to the second circuit C2, a third input register RE1_C2, a third output register RS_C2, and a second shared register RX_C2.
[0050] The device DIS is configured to evaluate the value of a polynomial of degree N and variable X, for a value of the variable X.
[0051] In the illustrated example, the polynomial to be evaluated is a polynomial of degree three (N=3) having a general form of the type P(X)=a.sub.0+a.sub.1X+a.sub.2X.sup.2+a.sub.3X.sup.3.
[0052] This polynomial therefore comprises four coefficients (N+1=4) which are distinguished by their ranks. The index of a coefficient which is equal to the degree of the variable with which it is associated is called “rank of a coefficient”.
[0053] For the sake of simplicity and brevity, the polynomial selected in the example of
[0054] Some coefficients of the polynomial can be zero.
[0055] The first two circuits C1_K1, C1_K2 are configured to simultaneously implement two Horner methods for two sub-polynomials of variable X.sup.2 so as to deliver two output results corresponding to the evaluation values of the two sub-polynomials for the value of the variable X.sup.2.
[0056] Each of the sub-polynomials comprises a group of G (G=(N+1)/K) coefficients of the polynomial. Within a group of coefficients of a sub-polynomial, the coefficients have ranks which are mutually offset by two. Each group comprises herein two coefficients (G=2). Each sub-polynomial is herein of degree one for the variable X.sup.2.
[0057] The first circuit C1_K1, on the left in the Figure, is configured to evaluate a sub-polynomia A(t)=a.sub.0+a.sub.2t for the variable t=X.sup.2, i.e. to deliver the result of the evaluation of A(X.sup.2).
[0058] The first circuit C1_K2, on the right in the Figure, is configured to evaluate a sub-polynomial B(t)=a.sub.1+a.sub.3t for the variable t=X.sup.2, i.e. to deliver the result of the evaluation of B(X.sup.2).
[0059] To this end, the first left circuit C1_K1 has a first input E1_K1 intended to receive a first group of two coefficients a.sub.0, a.sub.2 of the polynomial P(X), a second input E2_K1 intended to receive the value of the variable X.sup.2, and an output S_K1 on which the result of the evaluation of the sub-polynomial A(X.sup.2) is intended to be delivered.
[0060] In parallel, the first right circuit C1_K2 has a first input E1_K2 intended to receive a second group of two coefficients a.sub.1, a.sub.3 of the polynomial P(X), a second input E2_K2 intended to receive the value of the variable X.sup.2, and an output S_K2 on which the result of the evaluation of the second sub-polynomial B(X.sup.2) is intended to be delivered.
[0061] The first input register RE1_K1 is connected to the first input E1_K1 of the first left circuit C1_K1 and the second input register RE1_K2 is connected to the first input E1_K2 of the first right circuit C1_K2.
[0062] The first output register RS_K1 is connected to the output S_K1 of the first left circuit C1_K1 and the second output register RS_K2 is connected to the output S_K2 of the first right circuit C1_K2.
[0063] The first shared register RX_C1 is connected to the second inputs E2_K1 and E2_K2 of the first two circuits C1_K1, C1_K2.
[0064] Each first circuit C1_K2, C1_K2, comprises a first adder AK_1, AK_2 and a first multiplier M_K1, M_K2.
[0065] Each first adder A_K1, AK2 has a first input E1A_1, E1A_K2 connected to the first input E1_K1, E1_K2 of the first corresponding circuit.
[0066] Each first adder A_K1, AK2 comprises an output SA_K1, SA_K2 connected to the output S_K1, S_K2 of the first corresponding circuit.
[0067] This output S_K1, S_K2 is looped back onto a first input E1M_K1, E1M_K2 of one of the first multipliers M_K1, M_K2.
[0068] Each first multiplier M_K1, M_K2 has a second input E2M_K1, E2M_K2 connected to the second input E2_K1, E2_K2 of the first corresponding circuit.
[0069] Each first multiplier M_K1, M_K2 comprises an output SM_K1, SM_K2 connected to the second input E2A_K1, E2A_K2 of the first adder A_K1, A_K2.
[0070] The evaluation of the sub-polynomials by the first circuits C1_K1, C2_K2 is simultaneously performed by successive iterations.
[0071] The term “iteration” means a step of calculating the first circuits C1_K1, C1_K2 comprising a number of cycles of the clock signal CLK sufficient to obtain a new result on all outputs S_K1, S_K2 of the first circuits C1_K1, C2_K2. For example, all iterations can comprise the same number of cycles of the clock signal CLK. Each iteration can, for example, comprise a single cycle of the clock signal CLK.
[0072] During the evaluation of the sub-polynomials, the first inputs of the first adders A_K1, A_K2 simultaneously receive the values of the coefficients of the sub-polynomials by decreasing ranks at each iteration, and the second inputs of the first multipliers M_K1, M_K2 receive the variable X.sup.K, herein X.sup.2.
[0073] All values of the coefficients of the polynomial to be evaluated are known in advance and for example stored in a memory. If for a given rank the value of a coefficient is zero, then a zero value is received at the input of the first corresponding adder A_K1. or A_K2.
[0074] The operation of the device of
[0075] The first inputs of the first adders A_K1, A_K2, and the inputs of the first multipliers M_K1, M_K2 are initialized to zero.
[0076] A first iteration then begins on a first edge of the clock signal CLK.
[0077] The controller MC loads the coefficient a.sub.2 in the first input register RE1_K1, the coefficient a.sub.3 in the second input register RE1_K2, and the value of the variable X.sup.2 in the first shared register RX_C1.
[0078] The first input E1_K1 of the first left circuit C1_K1 receives the coefficient a.sub.2, the first input E1_K1. of the first right circuit C1_K2 receives the coefficient a.sub.3, and the second inputs E2_K1, E2_K2 of the first corresponding circuits C1_K1, C1_K2 receive the variable X.sup.2.
[0079] The outputs SM_K1, SM K2 of the first multipliers M_K1, M_K2 give zero and the outputs SA_K1, SA_K2 of the first adders A_K1, A_K2 give respectively the value of the coefficient a.sub.2 and the value of the coefficient a.sub.3.
[0080] At the end of the first iteration, the first adders A_K1, A_K2 deliver intermediate output results from the first circuits C1_K1, C1_K2. The value of the coefficient a.sub.2 is delivered on the output S_K1 of the first left circuit C1_K1 and the value of the coefficient a.sub.3 is delivered on the output S_K2 of the first right circuit C1_K2.
[0081] A second iteration begins on a second edge of the clock signal CLK, the controller MC loads the coefficient a.sub.0 into the first input register RE1_K1, the coefficient a.sub.1 into the second input register RE1_K2, and the value of the variable X.sup.2 in the first shared register RX_C1.
[0082] The first input E1_K1. of the first left circuit C1_K1 receives the coefficient α.sub.0, the first input E1_K1. of the first right circuit C1_K2 receives the coefficient a.sub.1 and the second inputs E2_K1, E2_K2 of the first corresponding circuits C1_K1, C1_K2 receive the variable X.sup.2.
[0083] The first inputs E1M_K1, E1M_K1. of the first multipliers M_K1, M_K2 receive the intermediate output results of the corresponding first circuits C1_K1, C1_K2.
[0084] Thus the first input E1M_K1 of the first multiplier M_K1 of the first left circuit C1_K1 receives the value a.sub.2 and the first input E1M_K1 of the first multiplier M_K1 of the first circuit on the right C1_K2 receives the value a.sub.3.
[0085] The outputs SM_K1, SM_K2 of the first multipliers M_K1, M_K2 give respectively the value a.sub.2X.sup.2 and the value a.sub.3X.sup.2, and the outputs SA_K1, SA_K2 of the first adders A_K1, A_K2 give respectively the value A(X.sup.2) and the value B(X.sup.2).
[0086] At the end of the second iteration, the first adders A_K1, A_K2 deliver the output results of the first circuits C1_K, C2_K on the corresponding outputs S_K1, S_K2. The first left circuit C1_K1 delivers the value of A(X.sup.2) on the associated output S_K1 and the first right circuit C1_K2 delivers the value of B(X.sup.2) on the associated output S_K2.
[0087] The controller MC is configured to transfer the output results from the output registers of the first circuits C1_K1, C1_K2 to the input register RE1_C2 of the second circuit C2.
[0088] The second circuit C2 is configured to process the two output results A(X.sup.2), B(X.sup.2) of the first circuits C1_K1, C1_K2 so as to deliver the value of the polynomial P(X).
[0089] In particular, the second circuit C2 is configured to implement a Homer method to evaluate a reformulation of the expression of the initial polynomial by noting that P(X)=A(X.sup.2)+XB(X.sup.2).
[0090] To this end, the second circuit C2 has a first input E1_C2 to successively receive the output results of the first two circuits, starting with the output result B(X.sup.2) of the first right circuit C1_K2 (which processed the highest rank coefficient a.sub.3) then by the output result A (X.sup.2) of the first left circuit C1_K1.
[0091] The second circuit C2 also comprises a second input E2_C2 to receive the variable X, and an output S_C2 to deliver the value of the polynomial.
[0092] The third input register RE1_C2 is connected to the first input E1_C2 of the second circuit C2.
[0093] The third output register RS_C2 is connected to the output S_C2 of the second circuit C2.
[0094] The second shared register RX_C2 is connected to the second input E2_K1 of the second circuit C2.
[0095] The second circuit C2 further comprises a second adder A_C2 having a first input E1A_C2 connected to the first input E1_C2 of the second circuit.
[0096] The second adder A_C2 comprises an output SA_C2 connected to the output S_C2 of the second circuit.
[0097] The output of the second adder A_C2 is looped back onto a first input E1M_C2 of a second multiplier M_C2.
[0098] The second multiplier M_C2 has a second input E2M_C2 connected to the second input E2_C2 of the second circuit C2.
[0099] An output SA_C2 of the second multiplier M_C2 is connected to a second input E2A_C2 of the second adder A_C2.
[0100] The second circuit C2 delivers the value of the polynomial in two successive iterations after the second iteration of the first circuits C1_K1, C2_K2.
[0101] The first inputs of the second adder A_C2 and the inputs of the second multiplier M_C2 are initialized to zero.
[0102] A third iteration begins on a third edge of the clock signal CLK, the controller MC loads the output result B(X.sup.2) of the first right circuit C1_K2 into the third input register RE1_C2, and the value of the variable X in the second shared register RX_C2.
[0103] The first input E1_C2 of the second circuit C2 receives the output result B(X.sup.2) of the first right circuit C1_K2, and the second input E2_C2 of the second circuit C2 receives the variable X.
[0104] At the end of the third iteration, the second adder A_C2 delivers the value B(X.sup.2) on the output S_C2 of the second circuit C2.
[0105] A fourth iteration begins on a fourth edge of the clock signal CLK, the controller MC loads the output result A(X.sup.2) of the first left circuit C1_K1 into the third input register RE1_C2, and the value of the variable X in the second shared register RX_C2.
[0106] The first input E1_C2 of the second circuit C2 receives the output result A(X.sup.2) from the first left circuit and the second input E2_C2 of the second circuit C2 receives the variable X.
[0107] At the end of the fourth iteration, the second adder A_C2 delivers a value of the polynomial P(X)=A(X.sup.2)+XB(X.sup.2) on the output S_C2 of the second circuit C2.
[0108] Although the first circuits C1_K1, C1_K2 and the second circuit C2 have been described above as being distinct circuits, nevertheless it is advantageously possible to use one of the first circuits to carry out the functions of the second circuit C2, for example when the device DIS is incorporated into a signal processing processor DSP (
[0109] Indeed, the second circuit C2 advantageously has a structure similar to the structure of each first circuit C1_K1, C1_K2.
[0110] In addition, as previously described above, the iterations implemented by the second circuit C2 to obtain the value of the polynomial are carried out only after the end of the iterations implemented by the first circuits C1 to obtain the output results.
[0111] When the second circuit C2 is one of the first circuits C1_K1, C1_K2, the controller MC are configured to handle contents stored in the output registers of the first circuits C1_K1, C1_K2, such that during the third and fourth iterations the output results of the first circuits are fed back into the first input register connected to the first input of the first circuit acting as a second circuit C2.
[0112] Likewise, when the second circuit C2 is one of the first circuits, the first shared register RX_C1 is the second shared register RX_C2.
[0113] The first shared register then stores the value of the variable X.sup.2 during the first and second iteration and stores the variable X during the third and fourth iteration.
[0114]
[0115] Again, although the second circuit C2 has been represented separately, it is advantageously functionally formed by one of the first four circuits C1_Ki.
[0116] The signal processing processor DSP in
[0117] Indeed, the greater the number K of first circuits, the more a high degree polynomial is subdivided into a large number K of sub-polynomials, which is advantageous in order to accelerate the calculation of the value of the polynomial P.
[0118] In the example of
[0119] The first four circuits C1_K1, C1_K2, C1_K3, C1_K4 are configured to simultaneously implement four Homer methods for four sub-polynomials and deliver four evaluation output results of these four sub-polynomials.
[0120] The first circuit C1_K1, on the left in the Figure, is configured to evaluate a sub-polynomial A(t)=a.sub.0+a.sub.4t+a.sub.8t.sup.2 for the variable t=X.sup.4, i.e. to deliver the result of the evaluation of A(X.sup.4).
[0121] The first circuit C1_K2, in the middle on the left in the Figure, is configured to evaluate a sub-polynomial B (t)=a.sub.1+a.sub.5t+a.sub.9t.sup.2 for the variable t=X.sup.4, i.e. to deliver the result of the evaluation of B (X.sup.4).
[0122] The first circuit C1_K3, in the middle on the right in the Figure, is configured to evaluate a sub-polynomial C(t)=a.sub.2+a.sub.6t+a.sub.10t.sup.2 for the variable t=X.sup.4, i.e. to deliver the result of the evaluation of C(X.sup.4).
[0123] The first circuit C1_K4, on the right in the Figure, is configured to evaluate a sub-polynomial D(t)=a.sub.3+a.sub.7t+a.sub.11t.sup.2 for the variable t=X.sup.4, i.e. to deliver the result of the evaluation of D(X.sup.4).
[0124] The second circuit C2 is configured to process the output results A(X.sup.4), B(X.sup.4), C(X.sup.4), D(X.sup.4) of the first circuits C1_K1, C1_K2, C1_K3, C1_K4 so as to deliver the value of the polynomial P(X).
[0125] In particular, the second circuit C2 is configured to implement a Homer method to evaluate a reformulation of the expression of the initial polynomial by noting that P(X)=A(X.sup.4)+XB(X.sup.4)+X.sup.2C(X.sup.4)+X.sup.3C(X.sup.4).
[0126] The device DIS comprises for each of the first circuits a first input register RE1_K1, RE1_K2, RE1_K3, RE1_K4 intended to successively store the coefficients of the polynomial P(X) and an output register RS_K1, RS_K2, RS_K3, RS_K4 to store the output results A(X.sup.4), B(X.sup.4), C(X.sup.4), D(X.sup.4).
[0127] Each of the first circuits comprises a second input connected with the same shared register RX_C1 in particular adapted to store the value of the variable X.sup.K, herein X.sup.4.
[0128] The second circuit C2 comprises a first input connected to a third input register RE1_C2 intended to successively store the output results D(X.sup.4), C(X.sup.4), B(X.sup.4), A(X.sup.4)d in the reverse order of the first circuits, that is to say starting with the output result D(X.sup.4) of the first right circuit C1_K4 which processed the highest rank coefficient a.sub.11.
[0129] The second circuit C2 comprises a second input connected to a fourth input register RX_C2 intended to store the value of the variable X.
[0130] The operation of the first circuits C1_K1, C1_K2, C1_K3, C1_K4 is analogous to the operation described in relation to
[0131] At the end of the iterative calculation performed by the device DIS, the value of the polynomial P(X) is contained in the output register RS_C2.
[0132]
[0133] The control unit UC comprises a processing unit CPU and a signal processing processor DSP incorporating the device DIS described above to implement a servo-control of the electric motor M.
[0134] For the servo-control of the motor, it may for example be advantageous to evaluate a sine or cosine function, in particular in the case of a servo-control of the angle of rotation of the electric motor M.
[0135] A polynomial approximating a sine function is for example sin(X)≈P(X)=X(1+X.sup.2(s.sub.1+X.sup.2(s.sub.2+X.sup.2(s.sub.3+X.sup.2(s.sub.4+X.sup.2(s.sub.5+s.sub.6X.sup.2)))))).
[0136] A polynomial approximating a cosine function is for example cos(X)≈P(X)=1+X.sup.2(c.sub.1+X.sup.2(c.sub.2+X.sup.2(c.sub.3+X.sup.2(c.sub.4+X.sup.2(c.sub.5+c.sub.6X.sup.2))))).
[0137] Thus, it is therefore advantageous for the servo-control loop to implement the device DIS as described above in order to quickly evaluate the trigonometric function whose value is sought.