Descargar

Oscilador Controlado Numéricamente (PPT) (página 2)

Enviado por Pablo Turmero


Partes: 1, 2, 3
edu.red

architecture BEH of Acum_Fase is

signal mod_reg: unsigned(N-1 downto 0) := (others => '0'); signal rem_nc: unsigned(N-1 downto 0) := (others => '0'); signal term_add: unsigned(N-1 downto 0) := (others => '0');

begin

rem_nc <= to_unsigned(Q,N) – mod_reg; term_add <= to_unsigned(P,N);

Modular_Addition: process(clk) is begin if rising_edge(clk) then if (rem_nc<=to_unsigned(P,N)) then mod_reg <= to_unsigned(P,N) – rem_nc; else mod_reg <= mod_reg + term_add; end if; end if; end process Modular_Addition;

acum_reg <= std_logic_vector(mod_reg);

end architecture BEH; Ejemplo de implementación en VHDL y simulación Sistemas Digitales – UBA

edu.red

Fue descripto por primera vez en 1959 por Jack E. Volder

Desarrollado en el departamento de aeroelectrónica de Convair

Más tarde John Stephen Walther, en Hewlett-Packard, generalizó el algoritmo

Originalmente fue implementado usando el sistema binario. En los 70’s su variante decimal se empezó a usar fuertemente en calculadoras de mano

Introducción CORDIC

edu.red

Es utilizado sobre todo en dispositivos en los que no hay disponibilidad de multiplicadores, por ejemplo en microcontroladores y FPGA's pequeñas

Sólo utiliza las operaciones de suma, resta y desplazamiento

Se lo utiliza para la rotación de vectores, el cálculo de funciones trigonométricas (sen, cos, tan, etc), la transformación de coordenadas, etc

Introducción

edu.red

1 2 Ecuaciones

edu.red

Desarrollando el coseno y el seno de la ecuación 2: 3 Ecuaciones

edu.red

Sacando cos(b) como factor común en la ecuación 3: 4 Ecuaciones

edu.red

4 Sustituyendo la ecuación 1 en 4: x1 Ecuaciones

edu.red

4 Sustituyendo la ecuación 1 en 4: y1 Ecuaciones

edu.red

Sustituyendo la ecuación 1 en 4: (Gp:)

Givens

Ecuaciones

edu.red

Hasta este momento no hemos llegado a nada interesante. Ahora, pensemos por un momento qué pasaría si los ángulos en los que puede rotar el vector se restringen de tal manera que: (Gp:) ¿Se lograría algún beneficio con esto?

(Gp:) i (Gp:) tg (Gp:) – (Gp:) ± (Gp:) = (Gp:) 2 (Gp:) ) (Gp:) ( (Gp:) b

(Gp:) ¡La multiplicación en el término que incluye la tangente se reduce a una simple operación de desplazamiento!

Ecuaciones

edu.red

Por lo dicho:

(Gp:) )] (Gp:) . (Gp:) d (Gp:) .( (Gp:) x (Gp:) y (Gp:) .[ (Gp:) y (Gp:) )] (Gp:) . (Gp:) d (Gp:) .( (Gp:) y (Gp:) x (Gp:) .[ (Gp:) x (Gp:) i (Gp:) i (Gp:) i (Gp:) i (Gp:) i (Gp:) i (Gp:) i (Gp:) i (Gp:) i (Gp:) i (Gp:) i (Gp:) i (Gp:) K (Gp:) K (Gp:) – (Gp:) + (Gp:) – (Gp:) + (Gp:) + (Gp:) = (Gp:) – (Gp:) = (Gp:) 2 (Gp:) 2 (Gp:) 1 (Gp:) 1

Ecuaciones Luego, reemplazando en las ecuaciones de Givens: El producto de los Ki’s se puede tratar como una ganancia del sistema. La ganancia exacta depende de la cantidad de iteraciones y es aproximadamente igual a 1,647:

edu.red

Por lo dicho: Ecuaciones Luego, reemplazando en las ecuaciones de Givens:

El valor de di será ±1 (Gp:) )] (Gp:) . (Gp:) d (Gp:) .( (Gp:) x (Gp:) y (Gp:) .[ (Gp:) y (Gp:) )] (Gp:) . (Gp:) d (Gp:) .( (Gp:) y (Gp:) x (Gp:) .[ (Gp:) x (Gp:) i (Gp:) i (Gp:) i (Gp:) i (Gp:) i (Gp:) i (Gp:) i (Gp:) i (Gp:) i (Gp:) i (Gp:) i (Gp:) i (Gp:) K (Gp:) K (Gp:) – (Gp:) + (Gp:) – (Gp:) + (Gp:) + (Gp:) = (Gp:) – (Gp:) = (Gp:) 2 (Gp:) 2 (Gp:) 1 (Gp:) 1

edu.red

El algoritmo incluye una tercera ecuación que describe el acumulador angular:

Ecuaciones

edu.red

El algoritmo puede operar en dos modos diferentes: Modo rotación – Rota un vector en un ángulo especificado – El acumulador angular se inicializa con el ángulo a rotar – La decisión de rotación en cada iteración se lleva a cabo de tal manera de disminuir el ángulo residual en el acumulador angular (se utiliza su signo)

Modo vector – Rota un vector hacia el eje de coordenadas x, guardando los ángulos requeridos para lograrlo – Busca minimizar la componente y del vector residual – La dirección de rotación se decide por el signo de la componente y residual

Modos de operación

edu.red

Modo rotación

Modos de operación Donde: di = -1 si zi < 0, en otro caso +1 Finalmente se tiene:

edu.red

Modo vector

Modos de operación Donde: di = +1 si yi < 0, en otro caso -1 Finalmente se tiene:

edu.red

Ángulo a rotar: 20º Ángulo inicial: 33º Ejemplo

edu.red

Iteración 1 Ejemplo atan = 45º ang acum = 20 – 45 = -25

edu.red

Iteración 2 Ejemplo atan = 26,56º ang acum = -25 + 26,56 = 1,56

edu.red

Iteración 3 Ejemplo atan = 14,03º ang acum = 1,56 – 14,03 = -12,47

edu.red

Iteración 4 Ejemplo atan = 7,12º ang acum = -12,47 + 7,12 = -5,35

edu.red

Iteración 5 Ejemplo atan = 3,57º ang acum = -5,35 + 3,57 = -1,78

edu.red

Iteración 6 atan = 1,78º ang acum = -1,78 + 1,78 = 0 Ejemplo

edu.red

Iterativa Unrolled Pipeline unrolled Arquitecturas

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente