Xilinx CORDIC 4.0 Pregunta sobre los parámetros de traducción

0

Estoy desarrollando un modelo SysGen utilizando un núcleo CORDIC 4.0 Translate para pasar de coordenadas rectangulares a coordenadas polares.

Necesito entender las opciones Rotación gruesa y Escalado de compensación .

Acerca de Rotación aproximada , el manual del usuario dice que la entrada debe ubicarse en el primer cuadrante entre pi / 4 y -pi / 4 . Qué significa eso? El primer cuadrante es de 0 a pi / 2 radianes, ¿no?

Por último, ¿cuál es el propósito de compensación de escala ? Simplemente no entiendo el manual del usuario sobre este parámetro.

Espero que al optimizar estos parámetros, el cordón sea lo suficientemente ligero como para quejarse de los tiempos del sistema.

¡Gracias por tu ayuda!

    
pregunta David Quiñones

1 respuesta

3

En primer lugar, declaro que nunca usé el núcleo CORDIC de Xilinx, pero conozco Xilinx y sé CORDIC ... Además, los invito a visitar Wikipedia para tener una mejor comprensión de lo que hace el núcleo.

La rotación aproximada es un punto confuso de la documentación de Xilinx Cordic 4.0. De hecho, el primer cuadrante es 0 a pi / 2, pero Xilinx ha modificado el algoritmo, probablemente porque prefirieron tener un ángulo con signo. Para Xilinx Cordic 4.0 en modo de traducción sin rotación aproximada, las coordenadas de entrada deben estar ubicadas entre pi / 4 y -pi / 4 (verificadas con simulaciones por David Quiñones).

El algoritmo CORDIC original opera en un vector con positivos X e Y. Si un vector está fuera de ese rango, debe ingresar los valores absolutos al algoritmo y modificar la salida en consecuencia. Por ejemplo, si X > 0 y Y < 0 , entonces calcule (r, theta) of (X, abs(Y)) y la salida (r, -theta) . El módulo de rotación aproximada debe ocuparse de eso por usted y permitirle ingresar cualquier vector. Le sugiero que si elimina el módulo de rotación gruesa, verifique qué valores puede ingresar ya que la documentación es confusa.

La escala de compensación se refiere al hecho de que el algoritmo CORDIC escala la amplitud del vector con cada iteración. Cada iteración se escala en sqrt(1+2^(-2i)) , donde i es el número de iteración. Entonces, si la longitud de tu vector es 1 y tienes infinitas iteraciones, el CORDIC te dará una longitud de aproximadamente 1.65. El módulo de escala de compensación lo reducirá a 1. Como nota al margen, la documentación de Xilinx escribe el factor de escala como 1/cos(atan(2^-i)) , que se reduce al sqrt que di.

    
respondido por el Jonathan Drolet

Lea otras preguntas en las etiquetas