Digital Signal Processing 21 (2011) 354–366 Contents lists available at ScienceDirect Digital Signal Processing www.elsevier.com/locate/dsp Function approximation on decimal operands Jose-Luis Sanchez-Romero , Higinio Mora-Mora, Jeronimo Mora-Pascual, Antonio Jimeno-Morenilla Department of Computer Technology, University of Alicante, 03690 Alicante, Spain article info abstract Article history: Available online 11 July 2010 Keywords: CORDIC Decimal arithmetic Function approximation CORDIC is a well-known method to approximate mathematical functions. It basically works as an iterative algorithm for approximating rotation of a two-dimensional vector using only shift and add operations. The method has been widely applied in the design of digital signal processors and in the computation of typical signal processing functions. It was specifically developed to process data expressed in radix-2. On the other hand, decimal computation has been gaining renewed interest over the last few years, and high performance decimal computation systems are being required on different scopes. In this paper, an improved CORDIC-based method so as to approximate functions on decimal operands is proposed. The algorithm will work with BCD operands, so no conversion to/from radix-2 is needed. An important reduction in the number of iterations in comparison to other CORDIC methods is achieved. The new algorithm is implemented on an FPGA so as to obtain results on delay and hardware resources. The experiments showing the advantages of the new method, with regard to both delay and precision, are described. 2010 Elsevier Inc. All rights reserved. 1. Introduction CORDIC (COordinate Rotation DIgital Computer) is a well-known method to approximate mathematical functions [1]. This method works as an iterative algorithm for approximating rotation of a two-dimensional vector using only shift and add operations. It is particularly suited to hardware implementations due to the fact that it does not require any multiplication. The CORDIC algorithm has been widely applied in the design of digital signal processors [2,3] and in the computation of typical signal processing functions such as the discrete cosine, Hartley, Hough, Fourier, and chirped-Z transforms [4–8]. The method has been also incorporated in signal filtering [9,10], in matrix processing algorithms and in equation systems solvers [11–14]. It has also played a significant role in telecommunications [15–18], specially in the design of processors for wireless modems [19–21]. Moreover, several authors have proposed CORDIC for improving performance in image processing algorithms [22,23]. Originally, CORDIC was specifically applied to radix-2 operands. However, in recent years, a renewed interest in decimal computing has arisen, since it is essential for many applications and scopes [24]. For instance, the need for high performance decimal systems is essential in CAD/CAM. When defining a radix-10 magnitude for an object, the use of radix-2 usually implies loss of precision, since the equivalent binary number is likely to have an infinite amount of fractional digits. On the other hand, there are currently optic and magnetic sensors which directly supply the output in BCD format, so that the user can easily monitor the evolution of certain magnitudes and detect any errors [25]. The same happens with some * Corresponding author. E-mail addresses: sanchez@dtic.ua.es (J.-L. Sanchez-Romero), hmora@dtic.ua.es (H. Mora-Mora), jeronimo@dtic.ua.es (J. Mora-Pascual), jimeno@dtic.ua.es (A. Jimeno-Morenilla). 1051-2004/$ – see front matter 2010 Elsevier Inc. All rights reserved. doi:10.1016/j.dsp.2010.06.013