Signal Processing - November 2017 - 169
LUT Contents (°)
4
2
Diff (LUT Contents) (°)
0
0
0.2
|fr |
(a)
0.10
0.4
Conclusions
These Points
Set the
Worst Case
0.05
0
0
0.2
|fr |
(b)
On the contrary, [4, (eq. 18)] achieves
better accuracy than [2, (eq. 2)], but when
a second-stage LUT is added, their accuracy is similar. That's because, in this case,
they have similar maximum values of
the first derivative of their error curves.
An important lesson learned is that atan2
approximations with smaller first derivative error values are better suited for the
addition of a second-stage LUT.
0.4
FIGURE 6. LUT characteristics: (a) LUT contents and (b) absolute value for the derivatives
of the LUT contents for our proposal (solid
line) and [6, eq. (12)] (dashed line).
computed, using a modified -version of
the "errorLUTcontents" function, and
the maximum atan2 error was measured
for several LUT sizes. The results are
shown in Figure 5. When a second-stage
LUT is used, the accuracy is improved
significantly. As can be seen, the maximum error is halved (i.e., one exact bit
more is achieved) when the size of the
LUT is doubled.
Another interesting observation is that,
when the second stage is added, the atan2
maximum error depends on the maximum first derivative of the error curve
stored in the LUT. This explains why, for
example, for the same atan2 accuracy, [6,
(eq. 12)] would require a LUT twice as
large as ours. Figure 6(a) shows the LUT
contents for both approaches: ours with a
solid line and [6, eq. 12)]'s with a dashed
line. Figure 6(b) shows the absolute value
of the difference between consecutive
values in the LUT, for the specific case
of an LUT with 256 words. As can be
seen in those figures, our approach has a
smaller maximum of the absolute value
of the first derivative of the error curve.
We propose a full-quadrant algorithm for
the computation of the arctangent of a
complex number c = b + ja, particularly
suitable for implementations in hardware,
e.g., FPGA, ASIC, etc., where there is no
penalty incurred when accessing a LUT.
The second stage of the method we propose could be applied to other low-complexity algorithms for the approximation
of the atan2 function, but for a given
accuracy there is a tradeoff between the
complexity of the approximation used for
the first stage and the required storage
resources used in the second stage. As
we have shown, algorithms with a smaller first derivative of their error curve are
best suited for improving the accuracy
by the addition of a second-stage LUT.
Because our proposed method can be
easily improved by increasing the size
of a memory when higher accuracy is
needed, it is an attractive arctan method
in high-speed applications where moderate accuracy is required (e.g., in systems
where the precision of the measured a
and b variables is, say, 14 bits or fewer).
Acknowledgments
This work is funded by the Spanish
Ministerio de Economía y Competitividad and FEDER under grant TEC201570858-C2-2-R.
Authors
Vicente Torres (vtorres@eln.upv.es)
received a telecommunications engineering degree from the Universitat
Politecnica de Valencia (UPV) in 1994
and received the Ph.D. degree in telecommunication engineering from the
same university in 2001. He is an associate professor at UPV. He is currently a member of the Institute for
Telecommunications and Multimedia
IEEE SIGNAL PROCESSING MAGAZINE
|
November 2017
|
Applications. His research work is
focused on digital signal processing in
electronic devices. He has contributed
to more than 50 papers in renowned
technical journals and conferences and
has been an active member of several
financially aided research projects.
Javier Valls (jvalls@eln.upv.es)
received the telecommunication engineering degree from the Universitat
Politecnica de Catalunya, Spain, and the
Ph.D. degree in telecommunication
engineering from the Universitat
Politecnica de Valencia, Spain, in 1993
and 1999, respectively. He has been with
the Department of Electronics at the
Universitat Politecnica de Valencia since
1993, where he is an associate professor.
His current research interests include the
design of field-programmable gate
array-based systems, computer arithmetic, very-large-scale integration signal
processing, and digital communications.
Richard Lyons (R.Lyons@ieee.org)
is a consulting signal processing engineer. Winner of the IEEE 2012 Education
Award, he is the author of Understanding
Digital Signal Processing 3/E (Prentice
Hall, 2010). He is the editor of, and contributor to, Streamlining Digital Signal
Processing, A Tricks of the Trade
Guidebook (IEEE Press/Wiley, 2007)
and the coauthor of The Essential Guide
to Digital Signal Processing (Prentice
Hall, 2014).
References
[1] J.-M. Muller, Elementary Functions: Algorithms
and Implementation. Cambridge, MA: Birkhäuser,
1997.
[2] R. G. Lyons, "Another contender in the arctangent
race," IEEE Signal Process. Mag., vol. 21, no. 1, pp.
109-110, Jan. 2004.
[3] S. Rajan, S. Wang, R. Inkol, and A. Joyal, "Efficient
approximations for the arctangent function," IEEE
Signal Process. Mag., vol. 23, no. 3, pp. 108-111, May
2006.
[4] X. Girones, C. Julia, and D. Puig, "Full quadrant
approximations for the arctangent function," IEEE
Signal Process. Mag., vol. 30, no. 1, pp. 130-135, Jan.
2013.
[5] J. M. Shima, "FM demodulation using a digital
radio and digital signal processing," M.S. thesis, Univ.
Florida, Gainesville, 1995.
[6] S. Winitzki, Uniform Approximations for
Transcendental Functions. Berlin, Heidelberg:
Springer, 2003, pp. 780-789.
[7] R. Gutierrez and J. Valls, "Implementation on
FPGA of a LUT-based atan(y/x) operator suitable for
synchronization algorithms," in Proc. Int. Conf. Field
Programmable Logic and Applications, 2007, pp.
472-475.
SP
169
Table of Contents for the Digital Edition of Signal Processing - November 2017
Signal Processing - November 2017 - Cover1
Signal Processing - November 2017 - Cover2
Signal Processing - November 2017 - 1
Signal Processing - November 2017 - 2
Signal Processing - November 2017 - 3
Signal Processing - November 2017 - 4
Signal Processing - November 2017 - 5
Signal Processing - November 2017 - 6
Signal Processing - November 2017 - 7
Signal Processing - November 2017 - 8
Signal Processing - November 2017 - 9
Signal Processing - November 2017 - 10
Signal Processing - November 2017 - 11
Signal Processing - November 2017 - 12
Signal Processing - November 2017 - 13
Signal Processing - November 2017 - 14
Signal Processing - November 2017 - 15
Signal Processing - November 2017 - 16
Signal Processing - November 2017 - 17
Signal Processing - November 2017 - 18
Signal Processing - November 2017 - 19
Signal Processing - November 2017 - 20
Signal Processing - November 2017 - 21
Signal Processing - November 2017 - 22
Signal Processing - November 2017 - 23
Signal Processing - November 2017 - 24
Signal Processing - November 2017 - 25
Signal Processing - November 2017 - 26
Signal Processing - November 2017 - 27
Signal Processing - November 2017 - 28
Signal Processing - November 2017 - 29
Signal Processing - November 2017 - 30
Signal Processing - November 2017 - 31
Signal Processing - November 2017 - 32
Signal Processing - November 2017 - 33
Signal Processing - November 2017 - 34
Signal Processing - November 2017 - 35
Signal Processing - November 2017 - 36
Signal Processing - November 2017 - 37
Signal Processing - November 2017 - 38
Signal Processing - November 2017 - 39
Signal Processing - November 2017 - 40
Signal Processing - November 2017 - 41
Signal Processing - November 2017 - 42
Signal Processing - November 2017 - 43
Signal Processing - November 2017 - 44
Signal Processing - November 2017 - 45
Signal Processing - November 2017 - 46
Signal Processing - November 2017 - 47
Signal Processing - November 2017 - 48
Signal Processing - November 2017 - 49
Signal Processing - November 2017 - 50
Signal Processing - November 2017 - 51
Signal Processing - November 2017 - 52
Signal Processing - November 2017 - 53
Signal Processing - November 2017 - 54
Signal Processing - November 2017 - 55
Signal Processing - November 2017 - 56
Signal Processing - November 2017 - 57
Signal Processing - November 2017 - 58
Signal Processing - November 2017 - 59
Signal Processing - November 2017 - 60
Signal Processing - November 2017 - 61
Signal Processing - November 2017 - 62
Signal Processing - November 2017 - 63
Signal Processing - November 2017 - 64
Signal Processing - November 2017 - 65
Signal Processing - November 2017 - 66
Signal Processing - November 2017 - 67
Signal Processing - November 2017 - 68
Signal Processing - November 2017 - 69
Signal Processing - November 2017 - 70
Signal Processing - November 2017 - 71
Signal Processing - November 2017 - 72
Signal Processing - November 2017 - 73
Signal Processing - November 2017 - 74
Signal Processing - November 2017 - 75
Signal Processing - November 2017 - 76
Signal Processing - November 2017 - 77
Signal Processing - November 2017 - 78
Signal Processing - November 2017 - 79
Signal Processing - November 2017 - 80
Signal Processing - November 2017 - 81
Signal Processing - November 2017 - 82
Signal Processing - November 2017 - 83
Signal Processing - November 2017 - 84
Signal Processing - November 2017 - 85
Signal Processing - November 2017 - 86
Signal Processing - November 2017 - 87
Signal Processing - November 2017 - 88
Signal Processing - November 2017 - 89
Signal Processing - November 2017 - 90
Signal Processing - November 2017 - 91
Signal Processing - November 2017 - 92
Signal Processing - November 2017 - 93
Signal Processing - November 2017 - 94
Signal Processing - November 2017 - 95
Signal Processing - November 2017 - 96
Signal Processing - November 2017 - 97
Signal Processing - November 2017 - 98
Signal Processing - November 2017 - 99
Signal Processing - November 2017 - 100
Signal Processing - November 2017 - 101
Signal Processing - November 2017 - 102
Signal Processing - November 2017 - 103
Signal Processing - November 2017 - 104
Signal Processing - November 2017 - 105
Signal Processing - November 2017 - 106
Signal Processing - November 2017 - 107
Signal Processing - November 2017 - 108
Signal Processing - November 2017 - 109
Signal Processing - November 2017 - 110
Signal Processing - November 2017 - 111
Signal Processing - November 2017 - 112
Signal Processing - November 2017 - 113
Signal Processing - November 2017 - 114
Signal Processing - November 2017 - 115
Signal Processing - November 2017 - 116
Signal Processing - November 2017 - 117
Signal Processing - November 2017 - 118
Signal Processing - November 2017 - 119
Signal Processing - November 2017 - 120
Signal Processing - November 2017 - 121
Signal Processing - November 2017 - 122
Signal Processing - November 2017 - 123
Signal Processing - November 2017 - 124
Signal Processing - November 2017 - 125
Signal Processing - November 2017 - 126
Signal Processing - November 2017 - 127
Signal Processing - November 2017 - 128
Signal Processing - November 2017 - 129
Signal Processing - November 2017 - 130
Signal Processing - November 2017 - 131
Signal Processing - November 2017 - 132
Signal Processing - November 2017 - 133
Signal Processing - November 2017 - 134
Signal Processing - November 2017 - 135
Signal Processing - November 2017 - 136
Signal Processing - November 2017 - 137
Signal Processing - November 2017 - 138
Signal Processing - November 2017 - 139
Signal Processing - November 2017 - 140
Signal Processing - November 2017 - 141
Signal Processing - November 2017 - 142
Signal Processing - November 2017 - 143
Signal Processing - November 2017 - 144
Signal Processing - November 2017 - 145
Signal Processing - November 2017 - 146
Signal Processing - November 2017 - 147
Signal Processing - November 2017 - 148
Signal Processing - November 2017 - 149
Signal Processing - November 2017 - 150
Signal Processing - November 2017 - 151
Signal Processing - November 2017 - 152
Signal Processing - November 2017 - 153
Signal Processing - November 2017 - 154
Signal Processing - November 2017 - 155
Signal Processing - November 2017 - 156
Signal Processing - November 2017 - 157
Signal Processing - November 2017 - 158
Signal Processing - November 2017 - 159
Signal Processing - November 2017 - 160
Signal Processing - November 2017 - 161
Signal Processing - November 2017 - 162
Signal Processing - November 2017 - 163
Signal Processing - November 2017 - 164
Signal Processing - November 2017 - 165
Signal Processing - November 2017 - 166
Signal Processing - November 2017 - 167
Signal Processing - November 2017 - 168
Signal Processing - November 2017 - 169
Signal Processing - November 2017 - 170
Signal Processing - November 2017 - 171
Signal Processing - November 2017 - 172
Signal Processing - November 2017 - 173
Signal Processing - November 2017 - 174
Signal Processing - November 2017 - 175
Signal Processing - November 2017 - 176
Signal Processing - November 2017 - Cover3
Signal Processing - November 2017 - Cover4
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_201809
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_201807
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_201805
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_201803
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_201801
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_1117
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0917
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0717
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0517
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0317
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0117
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_1116
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0916
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0716
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0516
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0316
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0116
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_1115
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0915
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0715
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0515
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0315
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0115
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_1114
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0914
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0714
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0514
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0314
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0114
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_1113
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0913
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0713
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0513
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0313
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0113
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_1112
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0912
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0712
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0512
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0312
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0112
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_1111
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0911
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0711
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0511
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0311
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0111
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_1110
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0910
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0710
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0510
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0310
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0110
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_1109
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0909
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0709
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0509
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0309
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0109
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_1108
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0908
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0708
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0508
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0308
https://www.nxtbook.com/nxtbooks/ieee/signalprocessing_0108
https://www.nxtbookmedia.com