SlideShare uma empresa Scribd logo
1 de 17
Baixar para ler offline
Algoritmo CORDIC
Cairo P. Cheble Caplan
CBPF - Linguagem de Programa¸c˜ao
Prof. Pablo Diniz Batista
21/08/2013
Introdu¸c˜ao
CORDIC - COordinate Rotation DIgital Computer
Computador digital de rota¸c˜ao coordenada
Figura 1 : ”A necessidade ´e a m˜ae da inven¸c˜ao”. Bombardeiro
supersˆonico B-58 que motivou a cria¸c˜ao do CORDIC
Introdu¸c˜ao
• No in´ıcio de 1956 o departamento de Aeroeletrˆonica da
Convair, em Fort Worth, foi encarregado de determinar a
possibilidade de substitui¸c˜ao do sistema de navega¸c˜ao
anal´ogico do bombardeiro B-58 por um computador digital.
Esta substitui¸c˜ao foi necess´aria pela baixa precis˜ao dos
elementos anal´ogicos de c´alculo do sistema.
• Eletrˆonica digital era bastante limitada na ´epoca, transistores
eram novidade e trabalhavam a uma baixa velocidade e havia
a necessidade do sistema obter resultados em tempo real.
• Publicado por Jack E. Volder em mar¸co de 1959, o algoritmo
e computador digital CORDIC podia realizar c´alculos de
rota¸c˜ao, magnitude a ˆangulo de vetores.
• Neste trabalho ser´a apresentado o algoritmo do CORDIC
iteratico para c´alculo de cossenos e senos e um ˆangulo de
entrada.
Vantagens do CORDIC
Vantagens do algoritmo CORDIC em rela¸c˜ao aos dois m´etodos
tradicionais de fun¸c˜oes trancedentais como armazenamento em
tabela de valores e por s´erie de Taylor:
• Alta precis˜ao dos resultados, em oposi¸c˜ao ao m´etodo de
tabela de valores.
• N˜ao h´a necessidade de uso de unidades de multipli¸c˜ao ou
divis˜ao, em oposi¸c˜ao ao m´etodo por s´erie de Taylor
• Opera¸c˜ao com n´umeros reais em formato de ponto fixo.
Permitindo seu uso em microcontroladores ou CPUs simples e
diminuindo o custos de circuitos em hardware dedicado.
Implementa¸c˜oes do CORDIC
O projeto da CORDIC pode ser usado em duas base formas
diferentes
• Software - Podendo ser escrito em liguagens de program¸c˜ao
tradicionais como C ou assembly, destinado `a execuc˜ao de
microcontroladores ou CPUs.
• Hardware - Podendo ser escritos em linguagens de descri¸c˜ao
de hardware, como VHDL ou Verilog, destinado `a
implementa¸c˜ao em circuitos digitais dedicados como em
Circuitos Integrados, ASICs e FPGAs. Uma implemena¸c˜ao em
VHDL para FPGA foi feita para este trabalho.
Matem´atica da Rota¸c˜ao
0.5 1 1.5 2 2.5
0.5
1
1.5
2
2.5
0
v’ (x’,y’)
v (x,y)
Θ
φ
Matem´atica da Rota¸c˜ao
• {x= v .cos(φ)
{y= v .sin(φ) [1]
• x’= v’ .cos(φ+θ)
y’= v’ .sin(φ+θ)
v’ = v [2]
• sin(φ+θ) = sinφ.cosθ + sinθ.cosφ
cos(φ+θ) = cosφ.cosθ - sinθ.sinφ [3]
• x’ = v .cos(φ+θ) = v .cosφ.cosθ - v .sinθ.sinφ
y’ = v .sin(φ+θ) = v .sinφ.cosθ + v .sinθ.cosφ [4]
Matem´atica da Rota¸c˜ao
• Aplicando [1] em [4] Temos:
x’ = x.cosθ - y.sinθ
y’ = y.cosθ + x.sinθ [5]
• Rearranjando a express˜ao anterior colocando o cosseno em
evidˆencia:
x’ = cos(θ).(x - y.tanθ)
y’ = cos(θ).(y + x.tanθ) [6]
• A raz˜ao entre x’ e y’ permanece a mesma pois ambos s˜ao
multiplicados por cos(θ).
• Ainda s˜ao necess´arias as opera¸c˜oes de multiplica¸c˜ao e fun¸c˜ao
tangente.
Algoritmo CORDIC iterativo
Ideias chaves da proposta do algoritmo:
• Rotacionar o vetor gradualmente com passos de ˆangulos bem
definidos, onde seus valores s˜ao tabelados.
• tan(θi) = ±2−i
| i={0,1,2,... n} [7]
• Substituindo as express˜oes originais em [6] por uma forma
iterativa temos:
x[i+1] = Ki(x[i] - y[i].tanθi)
y[i+1] = Ki(y[i] + x[i].tanθi) [8]
Onde θi pode ser positivo ou negativo dependendo do sentido
necess´ario da rota¸c˜ao e Ki = cos(θi) = cos(-θi).
• Como tan(θi) = - tan(- θi) ent˜ao podemos reduzir o n´umero
de valores da express˜ao [7] pela metade adicionando o
parˆametro di, definindo o sinal o ˆangulo.
tan(±θi)= di.2−i
| i={0,1,2,... n} ∧ di = 1 se rota¸c˜ao
positiva ou -1 se negativa [9]
• Logo, substituindo [9] em [8]:
x[i+1] = Ki(x[i] - y[i].di.2−i
)
y[i+1] = Ki(y[i] + x[i].di.2−i
) [10]
Algoritmo CORDIC iterativo
• Pr´e-c´alculo dos cossenos das intera¸c˜oes, as constantes Ki
• Lembrando que Ki = cos(θi)
• Ao final das n itera¸c˜oes as constantes multiplicativas Ki
podem ser sintetizadas em uma ´unica Kpn.
Kpn = K0.K1..Kn
Kpn =
n
i=0Ki [11]
• Discretizando θi por θi =arctan(2−i
) Temos:
Ki = cos(tan−1
(2−i
))
∴ Ki = 1/
√
1 + 2−2i [12]
• Aplicando [12] em [11]
Kpn =
n
i=0(1/
√
1 + 2−2i) [13]
• O valor do produt´orio Kpn converge para um valor finito:
K=Kp∞ = limn→∞(
n
i=0(1/
√
1 + 2−2i))
K≈0,670252935008881256194... [14]
Algoritmo CORDIC iterativo
Sintetizando:
• Partindo da express˜ao [10] e assumindo que se queira obter
rota¸c˜ao de um vetor unit´ario partindo do ˆangulo zero, pode-se
aplicar a constante final K [14] no in´ıcio das itera¸c˜oes,
extinguindo a ´ultima opera¸c˜ao de multiplica¸c˜ao das itera¸c˜oes
de [10].
x[0] = (1)*K e y[0] = (0)*K
x[i+1] = (x[i] - y[i].di.2−i)
y[i+1] = (y[i] + x[i].di.2−i)
• Os valores de di s˜ao decididos de acordo com o ˆangulo teste
atual, chamado de zi, criado para medir a distˆancia angular
do resultante das itera¸c˜oes com o ˆangulo dado.
z[0] = ˆAngulo desejado
e z[i+1] = z[i] - θi
∴ z[i+1] = z[i] - di. arctan(2−i)
Onde d[i] = -1 se z[i]<0 ou 1 se ≥0
Algoritmo CORDIC iterativo
Ao final das N itera¸c˜oes temos:
• X como cosseno do ˆangulo.
• Y como seno do ˆangulo
• Z como diferen¸ca ˆangular dos ˆangulos da sa´ıdas X e Y em
rela¸c˜ao ao ˆAngulo dado. Servindo como parˆametro de
precis˜ao.
• O ˆAngulo de entrada deve estar compreendido entre 0 e 90
graus.
Algoritmo CORDIC iterativo
Figura 2 : Exemplo gr´afico de itera¸c˜oes
Algoritmo CORDIC iterativo
Tabela de arcotangentes
Tabela 1 : Exemplo de tabela de arcotangentes com 8 bits, sendo um
bit inteiro
i tan(2−i) θ = arctan(2−i) θ em graus θ em bin´ario
0 1,000000000 0,785398163 45 0,1100100
1 0,500000000 0,463647609 26,56505118 0,0111011
2 0,250000000 0,244978663 14,03624347 0,0011111
3 0,125000000 0,124354995 7,125016349 0,0001111
4 0,062500000 0,062418810 3,576334375 0,0000111
5 0,031250000 0,031239833 1,789910608 0,0000011
6 0,015625000 0,015623729 0,89517371 0,0000001
Arquitetura do circuito digital
Figura 3 : Arquitetura abstrata do circuito
Simula¸c˜ao do circuito digital
Figura 4 : Formas de onda dos sinais do projeto em VHDL
Referˆencias Bibliogr´aficas
• ”The Birth of CORDIC”, Jack E. Volder, Journal of VLSI
Signal Processing 25, 101–105, 2000.
• ”FPGA Implementation of Sine and Cosine Value Generators
using Cordic Algorithm for Satellite Attitude Determination
and Calculators”, Shoaib Bhuria, Student Member, IEEE, and
P.Muralidhar, Member, IEEE.
• ”A survey of CORDIC algorithms for FPGA based
computers”, Ray Andraka, Andraka Consulting Group Inc.

Mais conteúdo relacionado

Semelhante a Algoritmo CORDIC: uma solução iterativa para cálculo de funções trigonométricas

Prova de aptidão tecnológica
Prova de aptidão tecnológicaProva de aptidão tecnológica
Prova de aptidão tecnológicaokashi24
 
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".Filipo Mór
 
Webinar_ Julho 2023 - Embarcados.pdf
Webinar_ Julho 2023 - Embarcados.pdfWebinar_ Julho 2023 - Embarcados.pdf
Webinar_ Julho 2023 - Embarcados.pdfEmbarcados
 
Relatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadoresRelatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadoresFlavio Oliveira Rodrigues
 
CAP 375 - Aula 1 - Introdução - Eduardo Luz
CAP 375 - Aula 1 - Introdução - Eduardo LuzCAP 375 - Aula 1 - Introdução - Eduardo Luz
CAP 375 - Aula 1 - Introdução - Eduardo LuzEduardo Luz
 
Projeto de máquinas
Projeto de máquinasProjeto de máquinas
Projeto de máquinasRobert Scheer
 
Treinamento Para Competições de Programação - All Pairs Shortest Paths - O Al...
Treinamento Para Competições de Programação - All Pairs Shortest Paths - O Al...Treinamento Para Competições de Programação - All Pairs Shortest Paths - O Al...
Treinamento Para Competições de Programação - All Pairs Shortest Paths - O Al...Murilo Adriano Vasconcelos
 
Arduino - Parte 3.pdf
Arduino - Parte 3.pdfArduino - Parte 3.pdf
Arduino - Parte 3.pdfprofwtelles
 
Projeto e desenvolvimento de um robô antropomórfico didático.
Projeto e desenvolvimento de um robô antropomórfico didático.Projeto e desenvolvimento de um robô antropomórfico didático.
Projeto e desenvolvimento de um robô antropomórfico didático.Renan Louzada
 
Vetorização e Otimização de Código - Intel Software Conference 2013
Vetorização e Otimização de Código - Intel Software Conference 2013Vetorização e Otimização de Código - Intel Software Conference 2013
Vetorização e Otimização de Código - Intel Software Conference 2013Intel Software Brasil
 
Codificação segura em C para sistemas embarcados
Codificação segura em C para sistemas embarcadosCodificação segura em C para sistemas embarcados
Codificação segura em C para sistemas embarcadoshenriqueprossi
 
Apostilatcncfanuc21i
Apostilatcncfanuc21i Apostilatcncfanuc21i
Apostilatcncfanuc21i Lucas Lira
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Cláudio Alves
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicampFrancisco Fambrini
 
Procedural Solar System Generation in Real -Time
Procedural Solar System Generation in Real -TimeProcedural Solar System Generation in Real -Time
Procedural Solar System Generation in Real -TimeCassiano Honorio da Silva
 
Principais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorizaçãoPrincipais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorizaçãoIntel Software Brasil
 

Semelhante a Algoritmo CORDIC: uma solução iterativa para cálculo de funções trigonométricas (20)

kNN
kNNkNN
kNN
 
Prova de aptidão tecnológica
Prova de aptidão tecnológicaProva de aptidão tecnológica
Prova de aptidão tecnológica
 
26-aula26.pdf
26-aula26.pdf26-aula26.pdf
26-aula26.pdf
 
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
Curso "Desenvolvendo aplicações de uso geral para GPU com CUDA".
 
Webinar_ Julho 2023 - Embarcados.pdf
Webinar_ Julho 2023 - Embarcados.pdfWebinar_ Julho 2023 - Embarcados.pdf
Webinar_ Julho 2023 - Embarcados.pdf
 
Relatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadoresRelatório multiplexadores e decodificadores
Relatório multiplexadores e decodificadores
 
Trabalho01
Trabalho01Trabalho01
Trabalho01
 
CAP 375 - Aula 1 - Introdução - Eduardo Luz
CAP 375 - Aula 1 - Introdução - Eduardo LuzCAP 375 - Aula 1 - Introdução - Eduardo Luz
CAP 375 - Aula 1 - Introdução - Eduardo Luz
 
Projeto de máquinas
Projeto de máquinasProjeto de máquinas
Projeto de máquinas
 
Treinamento Para Competições de Programação - All Pairs Shortest Paths - O Al...
Treinamento Para Competições de Programação - All Pairs Shortest Paths - O Al...Treinamento Para Competições de Programação - All Pairs Shortest Paths - O Al...
Treinamento Para Competições de Programação - All Pairs Shortest Paths - O Al...
 
Arduino - Parte 3.pdf
Arduino - Parte 3.pdfArduino - Parte 3.pdf
Arduino - Parte 3.pdf
 
Projeto e desenvolvimento de um robô antropomórfico didático.
Projeto e desenvolvimento de um robô antropomórfico didático.Projeto e desenvolvimento de um robô antropomórfico didático.
Projeto e desenvolvimento de um robô antropomórfico didático.
 
Vetorização e Otimização de Código - Intel Software Conference 2013
Vetorização e Otimização de Código - Intel Software Conference 2013Vetorização e Otimização de Código - Intel Software Conference 2013
Vetorização e Otimização de Código - Intel Software Conference 2013
 
Codificação segura em C para sistemas embarcados
Codificação segura em C para sistemas embarcadosCodificação segura em C para sistemas embarcados
Codificação segura em C para sistemas embarcados
 
Apostilatcncfanuc21i
Apostilatcncfanuc21i Apostilatcncfanuc21i
Apostilatcncfanuc21i
 
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
Microcontroladores pic lingc unicamp-150206140414-conversion-gate02
 
Microcontroladores pic ling c unicamp
Microcontroladores pic ling c unicampMicrocontroladores pic ling c unicamp
Microcontroladores pic ling c unicamp
 
Procedural Solar System Generation in Real -Time
Procedural Solar System Generation in Real -TimeProcedural Solar System Generation in Real -Time
Procedural Solar System Generation in Real -Time
 
Principais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorizaçãoPrincipais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorização
 
Aula1.pdf
Aula1.pdfAula1.pdf
Aula1.pdf
 

Algoritmo CORDIC: uma solução iterativa para cálculo de funções trigonométricas

  • 1. Algoritmo CORDIC Cairo P. Cheble Caplan CBPF - Linguagem de Programa¸c˜ao Prof. Pablo Diniz Batista 21/08/2013
  • 2. Introdu¸c˜ao CORDIC - COordinate Rotation DIgital Computer Computador digital de rota¸c˜ao coordenada Figura 1 : ”A necessidade ´e a m˜ae da inven¸c˜ao”. Bombardeiro supersˆonico B-58 que motivou a cria¸c˜ao do CORDIC
  • 3. Introdu¸c˜ao • No in´ıcio de 1956 o departamento de Aeroeletrˆonica da Convair, em Fort Worth, foi encarregado de determinar a possibilidade de substitui¸c˜ao do sistema de navega¸c˜ao anal´ogico do bombardeiro B-58 por um computador digital. Esta substitui¸c˜ao foi necess´aria pela baixa precis˜ao dos elementos anal´ogicos de c´alculo do sistema. • Eletrˆonica digital era bastante limitada na ´epoca, transistores eram novidade e trabalhavam a uma baixa velocidade e havia a necessidade do sistema obter resultados em tempo real. • Publicado por Jack E. Volder em mar¸co de 1959, o algoritmo e computador digital CORDIC podia realizar c´alculos de rota¸c˜ao, magnitude a ˆangulo de vetores. • Neste trabalho ser´a apresentado o algoritmo do CORDIC iteratico para c´alculo de cossenos e senos e um ˆangulo de entrada.
  • 4. Vantagens do CORDIC Vantagens do algoritmo CORDIC em rela¸c˜ao aos dois m´etodos tradicionais de fun¸c˜oes trancedentais como armazenamento em tabela de valores e por s´erie de Taylor: • Alta precis˜ao dos resultados, em oposi¸c˜ao ao m´etodo de tabela de valores. • N˜ao h´a necessidade de uso de unidades de multipli¸c˜ao ou divis˜ao, em oposi¸c˜ao ao m´etodo por s´erie de Taylor • Opera¸c˜ao com n´umeros reais em formato de ponto fixo. Permitindo seu uso em microcontroladores ou CPUs simples e diminuindo o custos de circuitos em hardware dedicado.
  • 5. Implementa¸c˜oes do CORDIC O projeto da CORDIC pode ser usado em duas base formas diferentes • Software - Podendo ser escrito em liguagens de program¸c˜ao tradicionais como C ou assembly, destinado `a execuc˜ao de microcontroladores ou CPUs. • Hardware - Podendo ser escritos em linguagens de descri¸c˜ao de hardware, como VHDL ou Verilog, destinado `a implementa¸c˜ao em circuitos digitais dedicados como em Circuitos Integrados, ASICs e FPGAs. Uma implemena¸c˜ao em VHDL para FPGA foi feita para este trabalho.
  • 6. Matem´atica da Rota¸c˜ao 0.5 1 1.5 2 2.5 0.5 1 1.5 2 2.5 0 v’ (x’,y’) v (x,y) Θ φ
  • 7. Matem´atica da Rota¸c˜ao • {x= v .cos(φ) {y= v .sin(φ) [1] • x’= v’ .cos(φ+θ) y’= v’ .sin(φ+θ) v’ = v [2] • sin(φ+θ) = sinφ.cosθ + sinθ.cosφ cos(φ+θ) = cosφ.cosθ - sinθ.sinφ [3] • x’ = v .cos(φ+θ) = v .cosφ.cosθ - v .sinθ.sinφ y’ = v .sin(φ+θ) = v .sinφ.cosθ + v .sinθ.cosφ [4]
  • 8. Matem´atica da Rota¸c˜ao • Aplicando [1] em [4] Temos: x’ = x.cosθ - y.sinθ y’ = y.cosθ + x.sinθ [5] • Rearranjando a express˜ao anterior colocando o cosseno em evidˆencia: x’ = cos(θ).(x - y.tanθ) y’ = cos(θ).(y + x.tanθ) [6] • A raz˜ao entre x’ e y’ permanece a mesma pois ambos s˜ao multiplicados por cos(θ). • Ainda s˜ao necess´arias as opera¸c˜oes de multiplica¸c˜ao e fun¸c˜ao tangente.
  • 9. Algoritmo CORDIC iterativo Ideias chaves da proposta do algoritmo: • Rotacionar o vetor gradualmente com passos de ˆangulos bem definidos, onde seus valores s˜ao tabelados. • tan(θi) = ±2−i | i={0,1,2,... n} [7] • Substituindo as express˜oes originais em [6] por uma forma iterativa temos: x[i+1] = Ki(x[i] - y[i].tanθi) y[i+1] = Ki(y[i] + x[i].tanθi) [8] Onde θi pode ser positivo ou negativo dependendo do sentido necess´ario da rota¸c˜ao e Ki = cos(θi) = cos(-θi). • Como tan(θi) = - tan(- θi) ent˜ao podemos reduzir o n´umero de valores da express˜ao [7] pela metade adicionando o parˆametro di, definindo o sinal o ˆangulo. tan(±θi)= di.2−i | i={0,1,2,... n} ∧ di = 1 se rota¸c˜ao positiva ou -1 se negativa [9] • Logo, substituindo [9] em [8]: x[i+1] = Ki(x[i] - y[i].di.2−i ) y[i+1] = Ki(y[i] + x[i].di.2−i ) [10]
  • 10. Algoritmo CORDIC iterativo • Pr´e-c´alculo dos cossenos das intera¸c˜oes, as constantes Ki • Lembrando que Ki = cos(θi) • Ao final das n itera¸c˜oes as constantes multiplicativas Ki podem ser sintetizadas em uma ´unica Kpn. Kpn = K0.K1..Kn Kpn = n i=0Ki [11] • Discretizando θi por θi =arctan(2−i ) Temos: Ki = cos(tan−1 (2−i )) ∴ Ki = 1/ √ 1 + 2−2i [12] • Aplicando [12] em [11] Kpn = n i=0(1/ √ 1 + 2−2i) [13] • O valor do produt´orio Kpn converge para um valor finito: K=Kp∞ = limn→∞( n i=0(1/ √ 1 + 2−2i)) K≈0,670252935008881256194... [14]
  • 11. Algoritmo CORDIC iterativo Sintetizando: • Partindo da express˜ao [10] e assumindo que se queira obter rota¸c˜ao de um vetor unit´ario partindo do ˆangulo zero, pode-se aplicar a constante final K [14] no in´ıcio das itera¸c˜oes, extinguindo a ´ultima opera¸c˜ao de multiplica¸c˜ao das itera¸c˜oes de [10]. x[0] = (1)*K e y[0] = (0)*K x[i+1] = (x[i] - y[i].di.2−i) y[i+1] = (y[i] + x[i].di.2−i) • Os valores de di s˜ao decididos de acordo com o ˆangulo teste atual, chamado de zi, criado para medir a distˆancia angular do resultante das itera¸c˜oes com o ˆangulo dado. z[0] = ˆAngulo desejado e z[i+1] = z[i] - θi ∴ z[i+1] = z[i] - di. arctan(2−i) Onde d[i] = -1 se z[i]<0 ou 1 se ≥0
  • 12. Algoritmo CORDIC iterativo Ao final das N itera¸c˜oes temos: • X como cosseno do ˆangulo. • Y como seno do ˆangulo • Z como diferen¸ca ˆangular dos ˆangulos da sa´ıdas X e Y em rela¸c˜ao ao ˆAngulo dado. Servindo como parˆametro de precis˜ao. • O ˆAngulo de entrada deve estar compreendido entre 0 e 90 graus.
  • 13. Algoritmo CORDIC iterativo Figura 2 : Exemplo gr´afico de itera¸c˜oes
  • 14. Algoritmo CORDIC iterativo Tabela de arcotangentes Tabela 1 : Exemplo de tabela de arcotangentes com 8 bits, sendo um bit inteiro i tan(2−i) θ = arctan(2−i) θ em graus θ em bin´ario 0 1,000000000 0,785398163 45 0,1100100 1 0,500000000 0,463647609 26,56505118 0,0111011 2 0,250000000 0,244978663 14,03624347 0,0011111 3 0,125000000 0,124354995 7,125016349 0,0001111 4 0,062500000 0,062418810 3,576334375 0,0000111 5 0,031250000 0,031239833 1,789910608 0,0000011 6 0,015625000 0,015623729 0,89517371 0,0000001
  • 15. Arquitetura do circuito digital Figura 3 : Arquitetura abstrata do circuito
  • 16. Simula¸c˜ao do circuito digital Figura 4 : Formas de onda dos sinais do projeto em VHDL
  • 17. Referˆencias Bibliogr´aficas • ”The Birth of CORDIC”, Jack E. Volder, Journal of VLSI Signal Processing 25, 101–105, 2000. • ”FPGA Implementation of Sine and Cosine Value Generators using Cordic Algorithm for Satellite Attitude Determination and Calculators”, Shoaib Bhuria, Student Member, IEEE, and P.Muralidhar, Member, IEEE. • ”A survey of CORDIC algorithms for FPGA based computers”, Ray Andraka, Andraka Consulting Group Inc.