mahdi3999
Member level 2
Hi,
I am looking for the details and proof of the CORDIC multiplier. I found a paper and a pdf which summarize the algorithms of the elementary functions but the linear mode of CORDIC is only briefly discussed. They mention that for multiplying x0 by z0 (actually to obtain y0 + x0 * z0) we need to perform the following:
and
However, I don't get y0 + x0 * z0 unless, according to another thread, the initial value of y is zero ( y0=0 ) and x0 and z0 are less than or equal to 1.
I tried to prove the above equation ( y_{n} = y0 + x0 * z0 ) but it seems to be true only under the condition 2^{-i} * y{i} / x_{i} << 1. This condition is almost satisfied when y0=0 because after a few elementary rotations 2^{-i} will become very small but I need a reliable reference to make sure that I have a good insight into this algorithm.
I would appreciate any comment or a detailed reference for the above algorithm.
I am looking for the details and proof of the CORDIC multiplier. I found a paper and a pdf which summarize the algorithms of the elementary functions but the linear mode of CORDIC is only briefly discussed. They mention that for multiplying x0 by z0 (actually to obtain y0 + x0 * z0) we need to perform the following:
Code:
x_{i+1} = x0
y_{i+1} = y_{i} + x_{i} * d_{i} * 2^{-i}
z_{i+1} = z_{i} - d_{i} * 2^{-i}
and
Code:
d_{i} = sign( z_{i} )
However, I don't get y0 + x0 * z0 unless, according to another thread, the initial value of y is zero ( y0=0 ) and x0 and z0 are less than or equal to 1.
I tried to prove the above equation ( y_{n} = y0 + x0 * z0 ) but it seems to be true only under the condition 2^{-i} * y{i} / x_{i} << 1. This condition is almost satisfied when y0=0 because after a few elementary rotations 2^{-i} will become very small but I need a reliable reference to make sure that I have a good insight into this algorithm.
I would appreciate any comment or a detailed reference for the above algorithm.