[comp.arch] Cordic chips

grunwald@uiucdcsm.UUCP (03/30/87)

In the discussion on str* & friends, someone mentioned using the CORDIC
routines for determining sin & cos at the same time.

This reminded me of a chip that a friend designed for a class project: a
general CORDIC processor, allowing you to set all the registers, turn the
crank and then extract the results.

	The wonderful thing was, not only do you get sin and cos for the
cost of a single function, several graphics applications can be sped up
dramatically by realising that CORDIC is simply rotating vectors.

	Instead of doing vector rotation by computing sin and cos, and then
doing all the multiplication by the rotation arrays, you simply put your
vector in the CORDIC unit, plug in the theta and out pops the rotated
vector. Rotating in 2 dimensions is as simple, you just rotate in X-Y plane
first and then the Y-Z plane.
	If I recall, addition of a few bells provides a way to determine
normal/tangent vectors rather quickly (which would seem useful for shading)

	Do any common FPU's use the CORDIC method for builtins? Are there any
ways to access the CORDIC registers directly?

Dirk Grunwald
Univ. of Illinois
grunwald@m.cs.uiuc.edu

nelsn@houxj.UUCP (04/02/87)

In article <3300001@uiucdcsm>, grunwald@uiucdcsm.cs.uiuc.edu writes:
> 
> 	Do any common FPU's use the CORDIC method for builtins? Are there any
> ways to access the CORDIC registers directly?
> 
> Dirk Grunwald
> Univ. of Illinois
> grunwald@m.cs.uiuc.edu

The WE32206 MAU from AT&T, and as far as I know, Motorola's 68881
and Intel's 80x87, all use CORDIC for their transcendental functions.
It stands for COordinate Rotational DIgital Computer. For a good reference,
see "A Unified Algorithm for Elementary Functions", J.S. Walther,
Spring Joint Computer Conference, 1971.
-- 
Matthew Nelson
AT&T Information Systems
ihnp4!houxj!nelsn
nelsn@houxj.ATT.COM