Modificar el código CORDIC verilog para -360 a 360 grados

0

Estoy aprendiendo sobre CORDIC y lo estoy implementando en Verilog. Encontré este ejemplo que puede calcular el pecado y el cos para los ángulos en el primer cuadrante (0-90). enlace

¿Cómo modificaría este código para calcular sin y cos para -360 a 360 grados? ¿Sería con sentencias if-else en la entrada de ángulo? ¿Dónde se colocaría eso para este código?

Entiendo que necesito restar o agregar un múltiplo de 90 grados para obtener el ángulo en el primer cuadrante. Dependiendo de qué cuadrante roté, cambio el valor de sin & cos y / o cambiar el signo del resultado

    
pregunta kidkoshi

1 respuesta

3

Quieres usar las identidades

$$ \ sin - \ theta = - \ sin \ theta $$ $$ \ cos - \ theta = \ cos \ theta $$ $$ \ sin (\ theta + 90 ^ \ circ) = \ cos \ theta $$ $$ \ cos (\ theta + 90 ^ \ circ) = - \ sin \ theta $$ $$ \ sin (\ theta + 180 ^ \ circ) = - \ sin \ theta $$ $$ \ cos (\ theta + 180 ^ \ circ) = - \ cos \ theta $$

De los comentarios en el código que has vinculado:

This code is for the first quadrant, but is easily extended to the full
circle by first doing a coarse rotation.  For example, to compute the
arctan of -y/x, in the second quadrant, feed the cordic function y/x and
then add 90 degrees (or pi/2 if using radian mode) to the result.  When
computing sin and cos of an angle, coarse rotate the angle into the first quadrant
by subtracting the appropriate number of 90 (or pi/2) increments to get the angle in
the first quadrant, keep track of this value, feed the cordic the angle.  Then
simply change the sign of the results based on this stored number.

En la lógica digital, la forma de recurso más bajo para hacer la "rotación aproximada" es probablemente restar 90 grados de forma iterativa, manteniendo un registro del número de restas, hasta que obtenga un ángulo inferior a 90. Si necesita hacerlo en un solo ciclo, necesitarás varios restadores para hacer esos cálculos en paralelo.

    
respondido por el The Photon

Lea otras preguntas en las etiquetas