• Nenhum resultado encontrado

Implementação do algoritmo Radix-2 para cálculo da FFT em FPGA

N/A
N/A
Protected

Academic year: 2021

Share "Implementação do algoritmo Radix-2 para cálculo da FFT em FPGA"

Copied!
92
0
0

Texto

(1)

UNIVERSIDADE TECNOL ´OGICA FEDERAL DO PARAN ´A DEPARTAMENTO ACAD ˆEMICO DE EL ´ETRICA

CURSO DE ENGENHARIA EL ´ETRICA

CALLEBE SOARES BARBOSA

IMPLEMENTAC

¸ ˜

AO DO ALGORITMO RADIX-2 PARA

C ´

ALCULO DA FFT EM FPGA

TRABALHO DE CONCLUS ˜AO DE CURSO

PATO BRANCO 2018

(2)

CALLEBE SOARES BARBOSA

IMPLEMENTAC

¸ ˜

AO DO ALGORITMO RADIX-2 PARA

C ´

ALCULO DA FFT EM FPGA

Trabalho de Conclus ˜ao de Curso de graduac¸ ˜ao, apresentado `a disciplina de Trabalho de Conclus ˜ao de Curso 2, do Curso de Engenharia El ´etrica da Coordenac¸ ˜ao de Engenharia El ´etrica - CO-ELT - da Universidade Tecnol ´ogica Federal do Paran ´a - UTFPR, C ˆampus Pato Branco, como requisito parcial para obtenc¸ ˜ao do t´ıtulo de Engenheiro Eletricista.

Orientador: Prof. Dr. F ´abio Luiz Bertotti

PATO BRANCO 2018

(3)

TERMO DE APROVAC¸ ˜AO

O Trabalho de Conclus ˜ao de Curso intitulado IMPLEMENTAC¸ ˜AO DO AL-GORITMO RADIX-2 PARA C ´ALCULO DA FFT EM FPGA do acad ˆemico Callebe Soa-res Barbosa foi considerado APROVADO de acordo com a ata da banca examinadora N216 de 2018.

Fizeram parte da banca examinadora os professores:

Prof. Dr. F ´abio Luiz Bertotti Prof. Dr. Giovanni Alfredo Guarneri

Dr. Jean Patric da Costa

A Ata de Defesa assinada encontra-se na Coordenac¸ ˜ao do Curso de Engenharia El ´etrica

(4)

Se vi mais longe foi por estar de p ´e sobre ombros de gigantes.

(5)

AGRADECIMENTOS

Agradec¸o primeiramente a Deus, por prover a mim os meios pelos quais fui, e sou sustentado todos os dias. E por me conceder a oportunidade, e a capacitac¸ ˜ao para realizac¸ ˜ao deste trabalho.

Agradec¸o a estrutura que formou meu car ´acter, e me deu suporte para a realizac¸ ˜ao de meus mais distantes sonhos; a minha querida fam´ılia, sem o qual jamais teria chegado at ´e aqui. Ao meu pai Jos ´e Geral, a minha m ˜ae Maria Rosa Barbosa e ao meu irm ˜ao Victor E. Soares Barbosa.

Agradec¸o tamb ´em ao meu professor orientador Dr. F ´abio Luiz Bertotti, pela paci ˆencia, dedicac¸ ˜ao e respeito com que me direcionou e ensinou ao longo da realizac¸ ˜ao deste trabalho. Deixo tamb ´em aqui registrado minha gratid ˜ao e reco-nhecimento a toda a Universidade Tecnol ´ogica Federal do Paran ´a (UTFPR). A esta instituic¸ ˜ao que me recebeu como aluno, e me deu a oportunidade de estudar junto a um grupo docente de excel ˆencia, e que me preparou para o nobre exerc´ıcio da enge-nharia.

Por fim, agradec¸o aos meus queridos amigos, que surgiram ao longo de toda a minha jornada, e que de maneira extraordin ´aria contribu´ıram para meu cresci-mento, celebrando com minhas vit ´orias e me sustentando em minha dificuldades.

(6)

RESUMO

BARBOSA, Callebe Soares. Implementac¸ ˜ao do Algoritmo Radix-2 para o C ´alculo da FFT em FPGA. 2018. 104 f. Monografia (Trabalho de Conclus ˜ao de Curso) - Curso de Engenharia El ´etrica, Universidade Tecnol ´ogica Federal do Paran ´a. Pato Branco, 2018.

O presente trabalho aborda o desenvolvimento de um hardware dedicado ao c ´alculo da Transformada R ´apida de Fourier (FFT), a partir da implementac¸ ˜ao do algoritmo Radix-2 em uma FPGA, conferindo paralelismo a fim aumentar a efici ˆencia no c ˆomputo da FFT. Para isso, s ˜ao introduzidos os conceitos principais sobre a FFT, o algoritmo Radix-2, o algoritmo CORDIC, e o projeto de par ˆametros que maximizam o desem-penho desses algoritmos. O dispositivo escolhido para implementac¸ ˜ao ´e o ZynqBerry - TE0726, o qual ´e equipado com a FPGA da fam´ılia Zynq-700. Neste trabalho s ˜ao implementadas duas arquiteturas de FFT. A primeira FFT possui 16 pontos, e ´e compu-tada com apenas 12 ciclos de clock, atingindo um desempenho de SQNR de 52dB. A segunda FFT possui 1024 pontos, e ´e computada com 1728 ciclos clock, atingindo um desempenho SQNR de 41dB. Ao final deste trabalho ´e poss´ıvel compreender como ´e projetado e implementado uma FFT de bom desempenho, em um ambiente vantajoso como a FPGA.

(7)

ABSTRACT

BARBOSA, Callebe Soares. Implementation of the Radix-2 Algorithm for the Calcu-lation of FFT in FPGA. 2018. 104 p. Undergraduate Thesis - Electrical Engineering Course, Universidade Tecnol ´ogica Federal do Paran ´a. Pato Branco, 2018.

The objective of this work is the development of a specific hardware for the calculation of Fast Fourier Transform (FFT), based on the implementation of the Radix-2 algorithm in FPGA, using parallelism to increase the computational efficiency. This work intro-duce the main concepts about FFT, the Radix-2 algorithm, the CORDIC algorithm, and the project of parameters that maximize the performance of these algorithms. The de-vice chosen for FFT implementation is the ZynqBerry - TE0726, which has an FPGA of the Zynq-700 family.0. Two FFT architectures are implemented in this work; the first FFT has 16 points, and is computed with only 12 cycles of textit clock, achieving a SQNR performance of 52dB. The second FFT has 1024 points, and is computed with 1728 clock cycles, achieving a SQNR performance of 41dB. At the end it is possible to understand how an FFT is designed and implemented in an advantageous environ-ment such as the FPGA.

(8)

LISTA DE FIGURAS

Figura 1: Expectro de Fourier do Sinal x(t) = sin(2π15t) + sin(2π40t) . . 17

Figura 2: Butterfly do Fluxo do Sinal . . . 20

Figura 3: FFT de 8 Pontos . . . 21

Figura 4: FFT DIF de 8 Pontos . . . 23

Figura 5: Rotac¸ ˜ao de Hr pelo ˆangulo de 2πr/N0 . . . 24

Figura 6: Angulos Elementares - Cordic Tradicional com N=4 . . . .ˆ 28 Figura 7: EEAS com N=2 e S=4 . . . 31

Figura 8: Exemplo de execuc¸ ˜ao do Algoritmo TBS . . . 34

Figura 9: Exemplo de execuc¸ ˜ao do Algoritmo TBS . . . 35

Figura 10: MSR com I=2, J=1 e N=2 . . . 38

Figura 11: MSR com I=2, J=1 e N=2 . . . 39

Figura 12: Relac¸ ˜ao entre o Pupper e o SQNR para MSR-CORDIC, como Nspt = 3e N = 3 . . . 43

Figura 13: Arquitetura Tipica de uma FPGA . . . 45

Figura 14: Arquitetura de uma CLB com 4 BLEs . . . 46

Figura 15: Arquitetura de uma BLE (Basic Logic Element) . . . 47

Figura 16: Diagrama Geral do Sistema Implementado . . . 49

Figura 17: SoC ZynqBery - TE0726 . . . 50

Figura 18: Arquitetura Simplificada - Zynq-7000 . . . 52

Figura 19: Arquitetura Simplificada de um Sistema Digital . . . 53

Figura 20: Arquitetura Simplificada do um Sistema Digital Mapeado para o Zynq . . . 54

Figura 21: Relac¸ ˜ao entre S e o SQNR M ´edio para MSR Cordic Modo Normal 58 Figura 22: Arquitetura da Iterac¸ ˜ao MSR Cordic Modo Normal Nspt = 3 . . . 61

(9)

Figura 24: Arquitetura Implementada FFT de 16 Pontos . . . 63

Figura 25: Arquitetura FFT 1024 Pontos Implementada . . . 65

Figura 26: Sinal com componentes em 213Hz, 410Hz, e 1403Hz - FFT de 16 Pontos . . . 69

Figura 27: Sinal de Entrada da FFT de 16 Pontos Amostrado a 3200 Hz . . 70

Figura 28: Espectro de Fourier proveniente da FFT de 16 Pontos . . . 71

Figura 29: Espectro de Fourier proveniente do Matlab para 16 Pontos . . . 71

Figura 30: Erro entre o resultado obtido pela FFT de 16 Pontos Implemen-tada e o Matlab . . . 72

Figura 31: Sinal com Componentes em 213Hz, 410Hz, e 1403Hz - FFT de 1024 Pontos . . . 75

Figura 32: Sinal de Entrada da FFT de 1024 Pontos Amostrado a 3200 Hz 75 Figura 33: Espectro de Fourier proveniente da FFT de 1024 Pontos . . . . 76

Figura 34: Espectro de Fourier proveniente do Matlab para 1024 Pontos . 76 Figura 35: Erro entre o resultado obtido pela FFT de 1024 Pontos Imple-mentada e o Matlab . . . 77

Figura 36: Criac¸ ˜ao de um Novo Bloco de Design . . . 83

Figura 37: Criac¸ ˜ao de um Novo Bloco de Design . . . 84

Figura 38: Bloco de Design para FFT 16 Pontos . . . 85

Figura 39: Enderec¸o de Mem ´oria da Interface AXI FFT . . . 86

Figura 40: Caminho at ´e a ferramenta: Tools: Create and Package New IP . 88 Figura 41: Ferramenta de Criac¸ ˜ao e Empacotamento de Novas IPs . . . . 88

Figura 42: Escolha da Opc¸ ˜ao: Create a New Peripheral . . . 89

(10)

LISTA DE TABELAS

Tabela 1: Matriz φ para o dado Exemplo . . . 36

Tabela 2: N´ıvel SQNR entre o Modo Generalizado e Normal, NSP T = 3 . . 59

Tabela 3: Resultado de S´ıntese FFT 16 Pontos . . . 67

Tabela 4: Comparativo de S´ıntese - FFT 16 Pontos . . . 67

Tabela 5: Comparativo N´ıvel de SNQR para FFT de 16 Pontos . . . 68

Tabela 6: Resultado de S´ıntese FFT 1024 Pontos . . . 72

Tabela 7: Comparativo de S´ıntese - FFT 1024 Pontos . . . 73

(11)

SUM ´ARIO 1 INTRODUC¸ ˜AO . . . 11 1.1 OBJETIVOS . . . 12 1.1.1 Objetivo Geral . . . 12 1.1.2 Objetivos Espec´ıficos . . . 12 1.2 ORGANIZAC¸ ˜AO DO TRABALHO . . . 13 2 REVIS ˜AO DE LITERATURA . . . 14

2.1 REPRESENTAC¸ ˜AO DE FOURIER PARA SINAIS . . . 14

2.1.1 S ´erie de Fourier . . . 14

2.1.2 Espectro de Fourier . . . 16

2.2 TRANSFORMADA DISCRETA DE FOURIER . . . 17

2.3 TRANSFORMADA R ´APIDA DE FOURIER . . . 18

2.4 ALGORITMO CORDIC . . . 23 2.4.1 CORDIC Tradicional . . . 25 2.4.2 EEAS-CORDIC . . . 27 2.4.2.1 Algoritmo TBS . . . 31 2.4.3 MSR-CORDIC . . . 36 2.4.3.1 An ´alise do Erro . . . 40 2.5 FPGA . . . 44

2.5.1 Aspectos Construtivos da FPGA . . . 44

3 MATERIAIS E M ´ETODOS . . . 49

3.1 ZYNQBERRY TE0726-03M . . . 50

3.1.1 Zynq-7000 . . . 51

3.2 IMPLEMENTANDO O PROCESSADOR CORDIC . . . 55

3.2.1 Projeto dos Par ˆametros Cordic . . . 55

3.2.2 Arquitetura Cordic Implementada . . . 60

3.3 IMPLEMENTANDO A FFT 16 PONTOS . . . 62

(12)

4 RESULTADOS E DISCUSS ˜AO . . . 67

4.1 FFT DE 16 PONTOS . . . 67

4.2 FFT DE 1024 PONTOS . . . 72

5 CONCLUS ˜AO . . . 78

AP ˆENDICE A - PROGRAMANDO O ZYNQBERRY . . . 83

(13)

11 1 INTRODUC¸ ˜AO

A Transformada Discreta de Fourier ou (DFT) (Discrete Fourier transform), segundo Bingham (1990), ´e um recurso amplamente utilizado em aplicac¸ ˜oes como processamento de imagens, comunicac¸ ˜ao em redes locais sem-fio ou WLAN (Wireless Local Area Network), multiplexac¸ ˜ao por divis ˜ao de frequ ˆencias ortogonais ou OFDM (Orthogonal Frequency Division Multiplexing), e medic¸ ˜oes de diferentes espectros.

O c ´alculo da DFT ´e uma tarefa que exige muitos recursos computacionais e que requer um projeto preciso para uma implementac¸ ˜ao eficiente (WANG et al., 2010). A DFT tem como base a pr ´opria s ´erie trigonom ´etrica de Fourier discretizada. Se-gundo Lathi (2007, p. 719), grac¸as a um algoritmo chamado (FFT) (Fast Fourier trans-form), desenvolvido por Cooley e Tukey (1965), o n ´umero de c ´alculos necess ´arios para executar uma DFT foi drasticamente reduzido, possibilitando um tempo de execuc¸ ˜ao aceit ´avel.

Mesmo reduzindo a complexabilidade de c ´alculo da DFT, a FFT depende basicamente de operac¸ ˜oes de multiplicac¸ ˜oes complexas, as quais consomem mui-tos recursos computacionais, e demandam blocos multiplicadores dedicados. Para solucionar este problema ´e poss´ıvel utilizar o algoritmo CORDIC (COordinate Rota-tion DIgital Computer ), desenvolvido por Jack E. Volder(VOLDER, 1959). Por meio desse algoritmo ´e poss´ıvel tratar as multiplicac¸ ˜oes complexas, semelhantes as pre-sentes no c ´alculo da FFT, como operac¸ ˜oes de rotac¸ ˜ao vetorial, e efetu ´a-las por meio de operac¸ ˜oes de deslocamento de bits (shifters) e somas, de forma e economizar recursos computacionais.

Segundo Zhou et al. (2009), os dispositivos conhecidos como FPGA (Field Programmable Gate Array) s ˜ao cada vez mais usados em implementac¸ ˜ao de hardware para telecomunicac¸ ˜oes, por exemplo, devido a sua capacidade de alcanc¸ar um elevado desempenho, aliado a sua flexibilidade de configurac¸ ˜ao. Desta forma, o uso de FPGA para implementar um hardware espec´ıfico para o c ´alculo da FFT torna-se relevante.

Uma da formas de realizar o c ´alculo da DFT de forma mais eficiente con-siste em dividir o c ´alculo em partes, sendo executados em paralelo por dispositivos de hardware espec´ıficos para esta finalidade. Isto pode ser conseguido a partir de dispo-sitivos que permitem construir elementos de hardware de forma configur ´avel, como as

(14)

1.1 Objetivos 12

FPGAs.

A FPGA ´e uma boa opc¸ ˜ao para a implementac¸ ˜ao do algoritmo da FFT de-vido a grande variedade de recursos de hardware sintetiz ´aveis, al ´em de possuir recur-sos de programac¸ ˜ao paralela que permite o processamento paralelo de sinais, con-ferindo assim uma maior rapidez na execuc¸ ˜ao do algoritmo. Portanto, implementar a FFT em uma plataforma dotada de FPGA ´e mais um fator motivador para a realizac¸ ˜ao deste trabalho (IBRAHIM et al., 2016).

1.1 OBJETIVOS

1.1.1 OBJETIVO GERAL

Utilizando a Linguagem de Descric¸ ˜ao de hardware VHSIC (VHDL), imple-mentar um circuito l ´ogico que, dado um conjunto de dados digitais de entrada, seja capaz de processar a Transformada R ´apida de Fourier (FFT), utilizando a metodolo-gia do algoritmo Radix-2. Buscar na implementac¸ ˜ao alcanc¸ar o melhor desempenho em termos de ciclos de clock necess ´arios para que completar a tarefa de processa-mento da FFT, tendo como restric¸ ˜ao os recursos dispon´ıveis na FPGA utilizada.

1.1.2 OBJETIVOS ESPEC´IFICOS

Ao longo deste trabalho ser ˜ao buscados os seguintes objetivos espec´ıficos:

• Identificar a melhor vers ˜ao do algoritmo CORDIC para a Implementac¸ ˜ao do

c ´alculo da FFT: Tendo em vista as restric¸ ˜oes de recursos da FPGA utilizada,

encontrar o algoritmo que implemente a operac¸ ˜ao de rotac¸ ˜ao vetorial, essencial no c ´alculo da FFT, que reduza o erro da aproximac¸ ˜ao e maximize o desempenho da operac¸ ˜ao.

• Projetar os valores dos par ˆametros CORDIC que maximizem a operac¸ ˜ao de

rotac¸ ˜ao vetorial: Dado a vers ˜ao do Algoritmo CORDIC escolhido, encontrar um

m ´etodo de otimizac¸ ˜ao para a relac¸ ˜ao erro de aproximac¸ ˜ao x desempenho. A partir do m ´etodo escolhido obter o conjunto otimizante de par ˆametros para cada

ˆangulo de rotac¸ ˜ao a ser realizado para o c ´alculo da FFT.

• Implementar o hardware do m ´odulo CORDIC a ser utilizado: Com base na variac¸ ˜ao do algoritmo CORDIC desenvolver em VHDL o hardware necess ´ario

(15)

1.2 Organizac¸ ˜ao do Trabalho 13

para realizar a operac¸ ˜ao de rotac¸ ˜ao vetorial, tamb ´em visando a otimizac¸ ˜ao de recursos.

• Implementar e testar uma FFT de 16 pontos : Implementar uma FFT 16 pontos a partir da arquitetura desenvolvida. Em seguida realizar o testa da implementac¸ ˜ao por meio do envio de diferentes sinais de entrada digitais, re-alizando os devidos testes de desempenho.

• Implementar o hardware da FFT de 1024 pontos: Com base em na arquitetura desenvolvida implementar uma FFT de 1024 pontos. Ao final realizar os devidos testes para a comparac¸ ˜ao de desempenho.

1.2 ORGANIZAC¸ ˜AO DO TRABALHO

A fim de se apresentar de forma clara e organizada, o presente traba-lho se encontra estruturado em quatro etapas: Revis ˜ao de Literatura, Materiais e M ´etodos, Resultados e Discuss ˜ao e Conclus ˜ao. A Revis ˜ao de Literatura presente no Cap´ıtulo 2, aborda todo o embasamento te ´orico necess ´ario para o desenvolvimento e implementac¸ ˜ao deste trabalho. Em seguida, o Cap´ıtulo 3: Materiais e M ´etodos, trata das metodologias e procedimentos realizados para desenvolver a implementac¸ ˜ao do projeto. No Cap´ıtulo 4 ´e ent ˜ao apresentado os Resultados e Discuss ˜oes proveniente da implementac¸ ˜ao e teste do projeto. E por ´ultimo, o Cap´ıtulo 5 trata das conclus ˜oes obtidas com o desenvolvimento deste trabalho.

(16)

14

2 REVIS ˜AO DE LITERATURA

Nos mais diversos campos da ci ˆencia os conceitos de sinais e sistemas possuem um papel importante, sendo utilizados nas aplicac¸ ˜oes mais variadas como ac ´ustica, sismologia, projeto de circuitos, sistemas de gerac¸ ˜ao e distribuic¸ ˜ao de ener-gia, controle de processos qu´ımicos, e engenharia biom ´edica, entre outros. Indiferen-temente da natureza f´ısica de uma aplicac¸ ˜ao, os sinais e sistemas que surgem destas possuem duas caracter´ısticas b ´asicas; os sinais cont ´em informac¸ ˜oes sobre a natureza ou comportamento de um fen ˆomeno, e os sistemas respondem a um sinal especifico produzindo um comportamento desejado (OPPENHEIM; WILLSKY, 2010, Pr ´ologo).

Um sinal ´e um conjunto de dados ou informac¸ ˜oes, que podem descrever di-versos tipos de fen ˆomenos, com a temperatura de um volume de ´agua em um ebulidor controlado, o registro de vendas de uma empresa ou ainda os valores de fechamento de uma bolsa de valores. J ´a os sistemas s ˜ao entidades que processam conjuntos de sinais (ditos entrada), e geram outro conjunto de sinais como resposta (ditos sa´ıdas). Os sistemas podem ser constitu´ıdos de componentes f´ısicos, el ´etricos, mec ˆanicos, hidr ´aulicos ou apenas l ´ogicos (LATHI, 2007, p. 75). O filtro de ´audio, que modifica o sinal de entrada gerando um sinal de ´audio com as caracter´ısticas desejadas, ´e um exemplo de sistema. Assim como o ebulidor controlado que a partir de um sinal de refer ˆencia (entrada) gera um sinal de controle para o atuador da resist ˆencia de aque-cimento, de modo a elevar a temperatura do liquido at ´e a refer ˆencia.

Segundo Oppenheim e Willsky (2010, p. 1), existe uma linguagem ade-quada para descrever sinais e um conjunto poderoso de ferramentas para analis ´a-los, capaz de se aplicar a problemas oriundos de diversos dom´ınios. A s ´erie de Fourier e a Transformada R ´apida de Fourier s ˜ao ambas exemplos dessas ferramentas, e ser ˜ao apresentadas nos pr ´oximos cap´ıtulos.

2.1 REPRESENTAC¸ ˜AO DE FOURIER PARA SINAIS 2.1.1 S ´ERIE DE FOURIER

Segundo Lathi (2007, p. 530), ”Um sinal peri ´odico x(t) com per´ıodo T0pode ser descrito como a soma de senoides de frequ ˆencia f0 e todas as suas harm ˆonicas”,

(17)

2.1 Representac¸ ˜ao de Fourier para Sinais 15

conforme apresentado na seguinte express ˜ao:

x(t) = a0+ ∞ X n=1

ancos(nω0t) + bnsen(nω0t) (1)

Esta ´e a chamada s ´erie de Fourier para sinais peri ´odicos, ou apenas s ´erie de Fourier. Na express ˜ao da Equac¸ ˜ao (1), a s ´erie de Fourier est ´a na forma trigo-nom ´etrica, onde ω0 ´e a frequ ˆencia fundamental de x(t), e a0, an e bns ˜ao os coeficien-tes de amplitude das harm ˆonicas que comp ˜oes x(t), sendo a0a harm ˆonica zero (n´ıvel CC).

Os coeficientes a0, ane bnde (1 ) s ˜ao determinados pelas seguintes equac¸ ˜oes: a0 = 1 T0 Z T0 x(t)dt, (2) an = 2 T0 Z T0 x(t)cos(nω0t)dt, (3) bn = 2 T0 Z T0 x(t)sen(nω0t)dt, (4)

em que T0 representa o per´ıodo relativo a frequ ˆencia fundamental f0.

A s ´erie de Fourier, al ´em da forma trigonom ´etrica, tamb ´em pode ser apre-sentada na forma exponencial, em termos de ejω0t, como apresentado na sec¸ ˜ao ante-rior. A forma exponencial, segundo Lathi (2007, p. 533), ´e dada pela express ˜ao:

x(t) = ∞ X −∞

Cnejnω0t, (5)

em que o coeficiente Cn e an ´alogo aos coeficientes an e bn da serie trigonom ´etrica, sendo obtido por:

Cn = 1 T0 Z T0 x(t)ejnω0tdt. (6)

Tanto a forma trigonom ´etrica quanto a exponencial da s ´erie de Fourier con-sideram x(t)como sendo uma func¸ ˜ao qualquer, real ou complexa. Entretanto na maio-ria das aplicac¸ ˜oes x(t) ´e real, como ´e o caso dos sinais neste trabalho. Segundo Lathi (2007, p. 533), se o sinal de entrada do sistema LTI x(t) ´e real, isso significa que an e bn tamb ´em s ˜ao reais para todos os valores de n, assim a s ´erie de Fourier pode ser representada na forma compacta por:

x(t) = D0+ ∞ X n=1

(18)

2.1 Representac¸ ˜ao de Fourier para Sinais 16 sendo: D0 = a0, (8) Dn= p a2 n+ b2n, (9) θn = tan−1 −bn an . (10) 2.1.2 ESPECTRO DE FOURIER

Por meio da s ´erie de Fourier na forma compacta, conforme (7), conclui-se que um sinal real peri ´odico x(t) pode ser descrito como uma soma de senoides de frequ ˆencias nω0 e amplitudes Dne fases θn. Segundo Lathi (2007, p. 533), o espectro exponencial de Fourier ´e trac¸ado a partir de Dn e θn em func¸ ˜ao das frequ ˆencias nω0. Portanto, s ˜ao tac¸ados dois gr ´aficos para o espectro exponencial de Fourier, um que relaciona Dncom nω0, chamado espectro de magnitude, e outro que relaciona θncom nω0, chamado de espectro de fase.

Tomando como exemplo um sinal x(t) = sin(2π15t) + sin(2π40t), expresso em um per´ıodo igual a 1 segundo, como mostrado na Figura 1. Para este sinal ´e expresso o espectro de Fourier na mesma Figura (1), com o espectro de magnitude e fase.

(19)

2.2 Transformada Discreta de Fourier 17 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Tempo(s) -2 0 2 X(t) Signal Original 0 0.2 0.4 0.6 |FFT(X)| Espectro de Magnitude -50 -40 -30 -20 -10 0 10 20 30 40 50 Frequência (Hz) -50 -40 -30 -20 -10 0 10 20 30 40 50 Frequência (Hz) -2 0 2 FFT(X) ( rad) Espectro de Fase

Figura 1: Expectro de Fourier do Sinal x(t) = sin(2π15t) + sin(2π40t) Fonte: Autoria Pr ´opria

Nota-se que o espectro da Figura (1) aparecem frequ ˆencias negativas, as quais dividem a magnitude com suas frequ ˆencias sim ´etricas. Isso ocorre devido a simetria que o ˆangulo nω0t possui no c ´alculo dos coeficientes da s ´erie de Fourier. Para resolver este problema, basta considerar apenas a parte positiva do espectro e multiplicar por 2 a magnitude das frequ ˆencias no espectro de magnitude.

Para Lathi (2007, p. 533), os dois gr ´aficos de magnitude e fase juntos for-mam o espectro de frequ ˆencia, o qual revela os conte ´udos de frequ ˆencia do sinal x(t), com suas amplitudes e fase. Conhecendo-se este espectro, n ˜ao s ´o ´e poss´ıvel anali-sar o sinal x(t) dentro do dom´ınio da frequ ˆencia, como tamb ´em reconstru´ı-lo de forma f ´acil.

2.2 TRANSFORMADA DISCRETA DE FOURIER

Para ser ´util em uma aplicac¸ ˜ao computacional a transformada de Fourier deve estar na sua forma discreta, conhecida como DFT (Discrete Fourier Transform).

(20)

2.3 Transformada R ´apida de Fourier 18

Segundo HAYKIN e Veen (2001, p. 314), a DFT ´e a ´unica representac¸ ˜ao de Fourier que pode ser calculada por um computador, sendo amplamente usada para manipular sinais.

Segundo Oppenheim e Willsky (2010, p. 125), a transformada discreta de Fourier ´e representada pela seguinte express ˜ao:

Xr = N0−1 X n=0 xnejω0nr, (11) onde: Ω0 = 2π N0 , (12) ω0T = Ω0 = 2pi/N0 (13)

Para compactar a express ˜ao de (11), se faz a substituic¸ ˜ao da express ˜ao exponencial pela vari ´avel W , de modo que WN0 = e−2π/N0 = e−jΩ0 (MEYER-BAESE, 2007, p. 344). Logo a express ˜ao para DFT ´e dada por:

Xr = N0−1 X n=0 xnejω0nr, (14) onde: 0 ≤ k ≤ N0− 1. (15)

2.3 TRANSFORMADA R ´APIDA DE FOURIER

Para se calcular uma DFT de N0 valores usando apenas (14), ´e necess ´ario realizar um total de N2

0 multiplicac¸ ˜oes e N0(N0− 1) somas, utilizando n ´umeros com-plexos. Quando N0 assume um valor elevado, muitos recursos computacionais s ˜ao necess ´arios, at ´e chegar ao ponto de que esse algoritmo se torna impratic ´avel.

A reduc¸ ˜ao do n ´umero de operac¸ ˜oes matem ´aticas necess ´arias para calcular a DFT ´e poss´ıvel a partir do algoritmo criado por J.W. Cooley e John Tukey, conhecido como Transformada R ´apida de Fourier ou FFT (Fast Fourier Transform) Cooley e Tukey (1965). Para reduzir o n ´umero de c ´alculos, a FFT se utiliza da propriedade linear da transformada de Fourier Lathi (2007, p. 719). Segundo Oppenheim e Willsky (2010, p. 119), a transformada de Fourier de um sinal pode ser dada pela combinac¸ ˜ao linear

(21)

2.3 Transformada R ´apida de Fourier 19

da transformada de Fourier de segmentos menores do mesmo sinal. Logo, ´e poss´ıvel aplicar `a DFT o paradigma da divis ˜ao e conquista, o qual ´e um recurso muito utilizado em algoritmos de ordenac¸ ˜ao.

Segundo Cormen et al. (2002, p. 21), um algoritmo de Divis ˜ao e Con-quista realiza o desmembramento de um problema em v ´arios subproblemas que s ˜ao id ˆenticos ao original, por ´em menores em sua faixa de ac¸ ˜ao, o que os torna mais simples de resolver. Em seguida, resolvem-se os subproblemas recursivamente e combinam-se essas soluc¸ ˜oes de modo a obter a soluc¸ ˜ao para o problema original.

De modo muito semelhante, o algoritmo da FFT prev ˆe uma divis ˜ao recur-siva da DFT em dois blocos: bloco par e o bloco ´ımpar, como mostrado abaixo(CHU; GEORGE, 1999, p. 35): Xr = N0 2 −1 X n=0 x2nWN02nr | {z } P arcela P ar + N0 2 −1 X n=0 x2n+1W (2n+1)r N0 | {z } P arcela ´Impar . (16)

Nessa mesma equac¸ ˜oes, os limites dos somat ´orios de ambas as parcelas ´ımpar e par foram redefinidos para englobar apenas metade dos N0pontos, bem como os expoentes de W foram ajustados.

Utilizando algumas das propriedades geom ´etricas de W , j ´a que esse re-presenta um n ´umero complexo, pode-se realizar simplificac¸ ˜oes importantes em 17. Primeiro, nota-se que WN0/2 = WN02 , logo:

Xr = N0 2 −1 X n=0 x2nWN02nr | {z } Gr + N0 2 −1 X n=0 x2n+1W (2n+1)r N0 | {z } Hr . (17)

Como Gre Hrs ˜ao DFTs com N0/2pontos cada, ent ˜ao ambos possuem um per´ıodo de N0/2. Com base na propriedade peri ´odica dessas DFTs, pode-se utilizar as simplificac¸ ˜oes (18) e (19) para reduzir o n ´umero de c ´alculos na DFT (LATHI, 2007, p. 721). Gr+N0 2 = Gr, (18) Hr+N0 2 = Hr, (19)

(22)

2.3 Transformada R ´apida de Fourier 20 Wr+N02 N0 = W N0 2 N0 = e −jπ WN0 = −WN0r . (20)

Al ´em disso, a express ˜ao em (20) pode ser assumida para se reduzir o n ´umero de c ´alculos da FFT. Portanto, usando (21) e (22) se obt ´em, respectivamente, os primeiros N0/2pontos e os ´ultimos N0/2pontos da FFT:

Wr+N02 N0 = W N0 2 N0 = e −jπ WN0 = −WN0r , (21) Wr+N02 N0 = W N0 2 N0 = e −jπ WN0 = −WN0r , (22)

Portanto, uma DFT pode ser calculada combinando duas DFTs de N0/2, tal como mostrado em (21) e (22). E comum na literatura representar o processo´ de c ´alculo de DFT, feito pelo algoritmo da FFT, pelo diagrama da Figura (2). Este diagrama ´e conhecido como Butterfly de Fluxo do Sinal (CHU; GEORGE, 1999, p. 36).

Figura 2: Butterfly do Fluxo do Sinal Fonte: Lathi (2007, p. 721)

Aliando o conceito de divis ˜ao em conquista ao m ´etodo de c ´alculo da DFT, usando o diagrama Butterfly, a representac¸ ˜ao do algoritmo da FFT pode ser facilmente feita pelo diagrama da Figura (3) (LATHI, 2007, p. 722), onde a FFT ´e feita para apenas 8 amostras de sinal X.

(23)

2.3 Transformada R ´apida de Fourier 21 -WN0 0 WN0 0 x0 x4 X0 X1 -WN0 0 WN0 0 x2 x6 X2 X3 -WN0 0 WN0 0 x1 x5 X4 X5 -W0 WN0 0 x3 x7 X6 X7 -WN0 0 WN0 0 WN0 2 -WN 2 -WN0 0 WN0 0 WN0 2 -WN 2 -WN0 2 -WN0 3 -WN0 0 -WN0 1 0 0 WN0 2 WN0 3 WN0 0 WN0 1 DFT - N = 40 DFT - N = 40 DFT - N = 80

Nível 2 Nível 1 Nível 0

DFT - N = 20 DFT - N = 20 DFT - N = 20 DFT - N = 20 Figura 3: FFT de 8 Pontos Fonte: Lathi (2007, p. 722)

Ap ´os se dividir uma DFT de tamanho N0 em duas DTFs de tamanho N0/2, e subdividindo cada uma das DFTs de tamanho N0/2 em duas N0/4 (LATHI, 2007, p. 721). E assim o procedimento continua at ´e que se atinja um n´ıvel em que as DFTs tenham tamanho N0/2n = 2, ou seja, quando se atinge DFTs que possuam um custo de c ´alculo m´ınimo.

Um fato importante sobre o algoritmo da FFT ´e que o valor N0 pode ser escolhido segundo a relac¸ ˜ao N0 = rn, sendo n o numero de n´ıveis necess ´arios para calcular a FFT, e r ´e o m´ınimo tamanho DFT. Os algoritmos de FFT mais usados possuem a base r igual a 2 ou a 4. Consequentemente, esses algoritmos s ˜ao conhe-cidos como Radix-2 e Radix-4, respectivamente (MEYER-BAESE, 2007, p. 365). Nesse trabalho o foco ser ´a o algoritmo com a base r igual a 2, ou seja, o Radix-2.

Na Figura (3) as DFTs est ˜ao agrupadas por n´ıveis, cada n´ıvel abrange as DFTs de mesmo tamanho N0/n, e no ´ultimo n´ıvel a esquerda h ´a quatro DFTs de tamanho 2. O n ´umero de n´ıveis necess ´arios em uma FFT de N0 pontos ´e log2N0. Os valores de X, na Figura (3) `a direita est ˜ao ordenados de forma crescente, por ´em os valores de x `a esquerda est ˜ao ordenados de forma diferente. Est ´a ordenac¸ ˜ao ´e

(24)

2.3 Transformada R ´apida de Fourier 22

conhecida como Bit-Reverse (CHU; GEORGE, 1999, p. 51).

Segundo Chu e George (1999, p. 51), quando se divide o processo de c ´alculo de uma DFT em duas, sendo uma respons ´avel pelos valores pares e a ou-tra pelo valores ´ımpares, conforme as conex ˜oes entres o n´ıveis v ˜ao ocorrendo, h ´a permutac¸ ˜oes entre os sinais. O processo de Bit-Reverse prev ˆe as permutac¸ ˜oes, sendo poss´ıvel saber qual a ordem adequada dos sinais na entrada da FFT. Para aplicar o conceito de Bit-Reverse, basta considerar um elemento xk de ordem n e escrev ˆe-lo na base bin ´aria com log2N0 bits. Em seguida, para determinar a posic¸ ˜ao de xk basta converter novamente para base decimal o n ´umero bin ´ario obtido, lendo esse na ordem inversa dos bits.

Na FFT da Figura (3) a subdivis ˜ao das DFTs ´e feita a partir da sa´ıda, sinal em frequ ˆencia, com DFT de 8 pontos, at ´e a entrada, sinal no tempo, com as DFTs de 2 pontos com custo m´ınimo. Essa subdivis ˜ao ´e conhecida como decimac¸ ˜ao, e no caso da Figura (3), ela ´e feita a partir do sinal no tempo, logo essa estrutura ´e co-nhecida como decimac¸ ˜ao no tempo. Por ´em, existe uma outra forma, a decimac¸ ˜ao na frequ ˆencia. A partir de uma alterac¸ ˜ao em (17), ´e poss´ıvel alterar a ordem da decimac¸ ˜ao, partindo do sinal de entrada no tempo, at ´e a sa´ıda em frequ ˆencia, como pode ser visto na Figura(4) (CHU; GEORGE, 1999, p. 37).

(25)

2.4 Algoritmo CORDIC 23

N0

Figura 4: FFT DIF de 8 Pontos

Fonte: Adaptado de Chu e George (1999, p. 44)

Na decimac¸ ˜ao em frequ ˆencia, a ordem de entrada dos sinais na FFT ficam ordenados de forma crescente, por ´em a sa´ıda passa a estar ordenada no esquema Bit-Reverse. Esse esquema de decimac¸ ˜ao ´e preferencialmente escolhido por dispen-sar a reordenac¸ ˜ao dos dados de entrada. Ao final de todo o processo de simplificac¸ ˜ao

do c ´alculo da DFT, o algoritmo da FFT necessita apenas realizar (N0/2) log2N0multiplicac¸ ˜oes e N0 log2 N0 somas complexas (LATHI, 2007, p. 720). Reduz-se assim a

complexabili-dade do algoritmo, tornando a DFT pratic ´avel at ´e para valores elevados de N0.

2.4 ALGORITMO CORDIC

Na equac¸ ˜ao (21) nota-se que o c ´alculo a FFT depende essencialmente de um multiplicac¸ ˜ao complexa entre Wr

N0 e Hr. Hr representa um vetor complexo qual-quer, e Wr

N0 ´e igual a e 2πr

N0. Essa tarefa pode ser realizada atrav ´es da representac¸ ˜ao de Wr

N0 e Hrna forma retangular, considerando para efeitos de exemplo WN0r = x + iy e Hr = a + ib, logo:

(26)

2.4 Algoritmo CORDIC 24

WN0r = x + iy, (23)

Hr = a + ib, (24)

Hr· WN0r = (x + iy)(a + ib), (25) Hr· WN0r = (xa − yb) + i(xb + ya). (26)

Logo, s ˜ao necess ´arios utilizar 4 multiplicadores e 2 somadores, para com-pletar tal operac¸ ˜ao (DESPAIN, 1974, p. 1). Al ´em disso, multiplicadores s ˜ao mais elabo-rados e em muitos dispositivos FPGA existem apenas algumas dezenas, o que limita a utilizac¸ ˜ao de multiplicadores em paralelo, reduzindo a velocidade de c ´alculo da FFT. Para contornar o problema, considere expressar o vetor Hr na forma polar reθr e manter Wr N0 igual a e 2πr N0, logo: Hr = Re(θr), (27) Hr· WN0r = re (θr)· e  2πr N0  , (28) Hr· WN0r = re  θr+2πr N0  . (29)

Assim Hr · WN0r ´e equivalente a operac¸ ˜ao trigonom ´etrica de rotacionar o vetor complexo Hr pelo ˆangulo de 2πr/N0, como pode ser visto na Figura (5).

Re Im

Figura 5: Rotac¸ ˜ao de Hr pelo ˆangulo

de 2πr/N0

Fonte: Autoria Pr ´opria

(27)

2.4 Algoritmo CORDIC 25

evitar o gargalo que eles possam provocar, parece dif´ıcil, por ´em existe uma t ´ecnica bastante usada no desenvolvimento de circuitos l ´ogicos em FPGA que o possibilita. Com o objetivo de oferecer uma soluc¸ ˜ao para o c ´alculo de func¸ ˜oes trigonom ´etricas mais simples, utilizando o m´ınimo de recursos de tempo e hardware, Jack E. Vol-der(VOLDER, 1959) desenvolveu a t ´ecnica de computac¸ ˜ao trigonom ´etrica CORDIC (COordinate Rotation DIgital Computer ).

2.4.1 CORDIC TRADICIONAL

O algoritmo CORDIC tem como base as microrotac¸ ˜oes do vetor alvo, de tal modo que cada microrotac¸ ˜ao possa ser feita por somas e deslocamentos de bits. Para tal, considere o vetor Hr = x + iy, e a matriz de rotac¸ ˜ao A em func¸ ˜ao do ˆangulo θ. A rotac¸ ˜ao do vetor pode ser dada por (GARRIDO et al., 2016):

" x0 y0 # = " cos(θ) −sin(θ) sin(θ) cos(θ) # " x y # . (30)

Isolando o termo cos(θ) de (30) ´e obtido o seguinte sistema: " x0 y0 # = cos(θ) " 1 −tan(θ) tan(θ) 1 # " x y # , (31)

o qual ´e a base da t ´ecnica CORDIC convencional (EL-MOTAZ et al., 2014).

Segundo (VOLDER, 1959), ao inv ´es de rotacionar completamente o vetor Hr pelo ˆangulo θ, ou pelo ˆangulo 2πr/N0 como mostrado na Figura (5), o algoritmo CORDIC rotaciona Hrpor ˆangulos θnmuito menores, sendo esses frac¸ ˜oes de θ, de tal forma que: θ = N −1 X n=0 µnθn+ ζ (32)

µn representa o sentido da microrotac¸ ˜ao θn, sendo que se for no sentido hor ´ario ´e igual a 1, caso contr ´ario ´e igual a -1, e ζ ´e o erro acumulado da aproximac¸ ˜ao pelo somat ´orio, que ser ´a considerado suficientemente pequeno para ser ignorado.

O primeiro ponto dessa abordagem ´e o fato de que se um ˆangulo θn for suficientemente pequeno ´e poss´ıvel afirmar que:

(28)

2.4 Algoritmo CORDIC 26

Assim ´e poss´ıvel substituir θ no sistema de (31), e obter a seguinte ex-press ˜ao: " x0 y0 # = cos(tan−1θn) " 1 −tan(tan−1θ n) tan(tan−1θn) 1 # " x y # . (34)

O segundo ponto ´e que para satisfazer (32) s ´o ´e necess ´ario que a soma do conjunto de microrotac¸ ˜oes θnresulte no ˆangulo θ, o que abre a possibilidade de se escolher um conjunto de microrotac¸ ˜oes baseadas em deslocamento de bits, como:

θn = tan−12−n (35)

Logo, aplicando a Equac¸ ˜ao(35) em (34) obt ˆem-se a express ˜ao final para CORDIC: " x0 y0 # = N −1 Y n=0 kc " 1 −µ2−n µ2−n 1 # " x y # , (36) kc= cos(tan−1(2−n)) = 1 √ 1 + 2−2n, (37) µ ∈ {−1, 1}. (38)

kc ´e calculado a cada microrotac¸ ˜ao n, assim o valor total do ganho acu-mulado por Hr ao fim da operac¸ ˜ao de rotac¸ ˜ao ´e dado pelo produto de todos os kc. O n ´umero total de microrotac¸ ˜oes (N ) ´e escolhido de acordo com o SQNR (Signal-to-Quantization-Noise Ratio ) admiss´ıvel a cada rotac¸ ˜ao. Segundo (VOLDER, 1959),

considerando N → ∞, Kc passa a ser constate e aproximadamente igual a 0, 6073. O inverso de Kc ´e igual a 1, 647, sendo conhecido como Ganho CORDIC. Tal ganho ´e independe do ˆangulo a ser rotacionado, e em muitos sistemas esse ganho ´e s ´o compensado fora do bloco l ´ogico de c ´alculo do CORDIC.

Como pode ser observado, o algoritmo CORDIC se resume a operac¸ ˜oes de deslocamento de bit e somas. A direc¸ ˜ao das microrotac¸ ˜oes ´e determinada por µ, que depende diretamente do sinal do ˆangulo θn a se rotacionar. Em aplicac¸ ˜oes nas quais o ˆangulo de rotac¸ ˜ao ´e previamente conhecido, que ´e o caso da FFT, as sequ ˆencias de rotac¸ ˜oes µ podem ser armazenado em uma mem ´oria (ROM) Read-Only Memory (EL-MOTAZ et al., 2014). Isso torna as microrotac¸ ˜oes como n iterac¸ ˜oes, armazenando em z os ˆangulos rotacionados a cada iterac¸ ˜ao de θn, sendo o algoritmo

(29)

2.4 Algoritmo CORDIC 27

CORDIC expressado por:

x(n + 1) = x(n) − [µ2−n]y(n), (39) y(n + 1) = y(n) + [µ2−n]x(n), (40) z(n + 1) = z(n) − tan−1[µ2−n], (41) (42) sendo: Hr = x(0) + iy(0), (43) θ = z(0), (44) n = {0, 1, ..., N − 1} , (45) µ = " 1 z (n) ≥ 0, −1 z (n) < 0 # . (46) 2.4.2 EEAS-CORDIC

No algoritmo CORDIC, cada ˆangulo de rotac¸ ˜ao θn ´e necessariamente deter-minado de maneira sequencial ap ´os cada iterac¸ ˜ao n, utilizando o conjunto de ˆangulos elementares definidos como (WU et al., 2003):

S1 = {tan−1(µ2−n)}, (47)

: µ ∈ {−1, 1}, n ∈ {0, 1, . . . , N − 1}. (48)

A partir do ˆangulo inicial de Hr, o algoritmo Cordic realiza as N iterac¸ ˜oes, deslocando o vetor por meio do conjunto de ˆangulos elementares, de forma a reduzir a diferenc¸a entre o ˆangulo atual e o ˆangulo desejado. Para fins de comparac¸ ˜ao a Figura (6) apresenta a densidade combinacional dentro do c´ırculo trigonom ´etrico do conjunto de ˆangulos elementares do algoritmo CORDIC tradicional.

(30)

2.4 Algoritmo CORDIC 28

Figura 6: ˆAngulos Elementares - Cordic Tradicional com N=4

Fonte: (LIN; WU, 2005)

Cada ponto em (6) representa um ˆangulo de rotac¸ ˜ao θn poss´ıvel por meio das diferentes combinac¸ ˜oes do par ˆametro µ, presente em (48). Para o algoritmo COR-DIC tradicional qualquer vetor ap ´os o processo de rotac¸ ˜ao apresentar ´a um m ´odulo 1,63 vezes maior do que seu valor original por conta do ganho kc, apresentado anteri-ormente. Logo, na Figura (6) todos os ˆangulo de rotac¸ ˜ao θn poss´ıveis se apresentam fora do c´ırculo unit ´ario, afim de representar esse ganho.

Segundo Wu e Wu (2001) o maior problema do CORDIC ´e a baixa veloci-dade computacional de c ´alculo desse algoritmo, devido principalmente a necessiveloci-dade de um grade n ´umero de iterac¸ ˜oes N para atingir um erro de aproximac¸ ˜ao ζ aceit ´avel. O error de aproximac¸ ˜ao ζ ´e dado por:

ζ = θ − N −1 X n=0 µθn = θ − N −1 X n=0 µ tan−1(2−n) , (49) µ ∈ {−1, 0, 1} (50)

Em aplicac¸ ˜oes em que os ˆangulos de rotac¸ ˜ao s ˜ao conhecidos, ´e poss´ıvel relaxar as restric¸ ˜oes da Equac¸ ˜ao (6), utilizando o m ´etodo Angle Recoding (AR) (WU; WU, 2001). O AR tem como objetivo reduzir o n ´umero de iterac¸ ˜oes CORDIC e o erro ζ . Para tal, o AR que expande o conjunto de combinac¸ ˜oes lineares em (48),

(31)

2.4 Algoritmo CORDIC 29

adicionando zero ao conjunto de µ. Com isso, obt ´em-se uma melhor aproximac¸ ˜ao para certos valores de θ e uma reduc¸ ˜ao de at ´e 50% no n ´umero de iterac¸ ˜oes (MEHER et al., 2009).

Por outro lado, o m ´etodo Extended Elementary-Angle-Set Recoding (EE-ASR) apresenta um m ´etodo baseado no AR que, al ´em de expandir o conjunto de µ, estende tamb ´em o conjunto de ˆangulos elementares (Elementary-Angle-Set, EAS), visando aumentar a possibilidades de decomposic¸ ˜ao do ˆangulo de rotac¸ ˜ao(WU et al., 2003). Para perceber a modificac¸ ˜ao que o EEASR prop ˜oem, nota-se primeiramente que o conjunto de ˆangulos elementares no CORDIC utilizando AR ´e definido como:

S1 = {tan−1(µ2−s)}, (51)

: µ ∈ {−1, 0, 1}, s ∈ {0, 1, . . . , N − 1}. (52)

Como ´e poss´ıvel notar em (51), os ˆangulos elementares dependem de ape-nas um termo pot ˆencia de dois, ou Signed Power of Two (SPT). Segundo (WU et al.,

2003), para aumentar a precis ˜ao dos ˆangulos elementares e, consequentemente, re-duzir o n ´umero de iterac¸ ˜oes pode-se adicionar mais um termo SPT em (51), resultando em:

S2 = {tan−1(µ02−s0 + µ12−s1)} (53) : µ0, µ1 ∈ {−1, 0, 1}, s0, s1 ∈ {0, 1, . . . , S} (54) S ´e denominado como o n ´umero m ´aximo de deslocamentos de bits a direita que po-dem ser realizados. Esse valor est ´a diretamente relacionado com o quantidade de bits utilizados para representar um n ´umero dentro da arquitetura que implementa o COR-DIC. Por exemplo, em uma aplicac¸ ˜ao em FPGA, em que a palavra bin ´aria utilizada para representar um n ´umero inteiro tenha apenas 16 bits, n ˜ao faz sentido o valor de S ser maior do 15. Portanto, alterando a equac¸ ˜ao (34) com base em (53) ´e obtida a express ˜ao para c ´alculo iterativo CORDIC utilizando o EEASR:

" x(n + 1) y(n + 1) # " 1 µ02−s0(n)+ µ12−s1(n) µ02−s0(n)+ µ12−s1(n) 1 # " x(n) y(n) # , (55) : µi, µj ∈ {−1, 0, 1}, s0, s1 ∈ {0, 1, . . . , S}, (56)

(32)

2.4 Algoritmo CORDIC 30

θn = tan−1 µ02−s0(n)+ µ12−s1(n) , (57)

z(n + 1) = z(n − 1) + θn, (58)

´

E importante notar que ao adicionar mais termos a S1, o ganho Kctamb ´em ´e modificado, passando a ser definido por:

Kn =

1 p

1 + [µ02−s0(n)+ µ12−s1(n)]2

. (59)

Com a alterac¸ ˜ao de Kc, o ganho passa a n ˜ao ser mais constante, e varia de acordo com cada iterac¸ ˜ao N . Sendo assim necess ´ario calcular o ganho Kcpara cada iterac¸ ˜ao afim de realizar a compensac¸ ˜ao. O valor de Kcao final de cada operac¸ ˜ao de c ´alculo CORDIC passa a ser definido por:

Kc = N −1

Y n=0

Kn. (60)

Para casos em que o ˆangulo θ a ser rotacionado ´e conhecido, como ´e o caso da FFT, ´e poss´ıvel escolher previamente o conjunto de valores µ0, µ1, s0 e s1, e con-sequentemente atrav ´es da Equac¸ ˜ao (59) determinar o valor de Kc a ser compensado a cada iterac¸ ˜ao, e por meio de (60) determinar a compensac¸ ˜ao de Kc a ser realizada ap ´os cada operac¸ ˜ao de rotac¸ ˜ao. Para tal ´e realizado, ap ´os as iterac¸ ˜oes de rotac¸ ˜ao do algoritmo, uma correc¸ ˜ao no m ´odulo do vetor resultante por meio da seguinte operac¸ ˜ao de rotac¸ ˜ao modificada:

x(n + 1) = x(n) − [µ02−s0(n)+ µ12−s1(n)]x(n), (61) y(n + 1) = y(n) − [µ02−s0(n)+ µ12−s1(n)]y(n), (62)

z(n + 1) = z(n), (63)

em que µ0, µ1, s0 e s1 para essa operac¸ ˜ao s ˜ao escolhidos de modo a minimizar o erro de compensac¸ ˜ao de Kc.

Com a relaxac¸ ˜ao das restric¸ ˜oes introduzidas pelo m ´etodo AR e pelo EE-ASR, a densidade combinacional dentro do circulo unit ´ario do conjunto de ˆangulos elementares do Algoritmo CORDIC aumenta, se comparado ao CORDIC tradicional, como pode ser visto na Figura (7).

(33)

2.4 Algoritmo CORDIC 31

Figura 7: EEAS com N=2 e S=4 Fonte: Lin e Wu (2005)

Os pontos marcados na Figura (7) representam os conjuntos dos ˆangulos θn poss´ıveis de se obter em (57), utilizando diferentes combinac¸ ˜ao de par ˆametros µ0, µ1, s0 e s1. Diferente do algoritmo CORDIC tradicional, no EEAS o ganho do vetor ap ´os o rotacionamento realizado pelo algoritmo varia de acordo com a equac¸ ˜ao (59).

2.4.2.1 ALGORITMO TBS

A relaxac¸ ˜ao das restric¸ ˜oes feita pelos m ´etodos AR e EEASR tornaram o algoritmo iterativo CORDIC mais eficiente. Por ´em o EEASR abre uma quest ˜ao crucial: a determinac¸ ˜ao dos conjuntos µ e s. No algoritmo CORDIC tradicional, o valor de µ estava contido no conjunto {−1, 1} e era determinado com base no sinal de z(n) a cada iterac¸ ˜ao. No entanto, no m ´etodo AR µ passa a estar contido no conjunto {−1, 0, 1}. Logo, determinar o valor de µ a cada iterac¸ ˜ao torna-se uma tarefa de otimizac¸ ˜ao, em relac¸ ˜ao a minimizar o erro ζ, na forma (WU et al., 2003):

min ζ = θ − N −1 X n=0 µ tan−1(2−n) , (64) µ ∈ {−1, 0, 1}. (65)

(34)

2.4 Algoritmo CORDIC 32

elementares ´e definido por S1 em (48), e a cada iterac¸ ˜ao o deslocamento do vetor ´e feito com base no elemento n desse conjunto. O m ´etodo EEASR adiciona mais um termo SPT a express ˜ao do conjunto dos ˆangulos elementares S2, definido em (53), o que possibilita a escolha de qualquer termo s0 e s1. Dessa forma, al ´em de agre-gar a mesma necessidade de determinar o conjunto otimizado µ0 e µ1 de AR, o EE-ASR tamb ´em requer a determinac¸ ˜ao do conjunto otimizado s0 e s1, visando minimizar tamb ´em o erro ζ. Portanto, a func¸ ˜ao de minimizac¸ ˜ao do erro  ´e dada pela seguinte express ˜ao: min ζ = θ − N −1 X n=0 tan−1(µ02−s0 + µ12−s1) , (66) : µ0, µ1 ∈ {−1, 0, 1}, s0, s1 ∈ {0, 1, . . . , S}. (67)

Para otimizar a Func¸ ˜ao (66) ´e poss´ıvel utilizar uma variedade de algoritmos heur´ısticos ou n ˜ao heur´ıstico a fim de determinar um conjunto de par ˆametros que minimize o erro ζ, como por exemplo Dijkstra, Caminhos M´ınimos ou o mais comum Algoritmo Greedy. Wu et al. (2003) prop ˜oe um m ´etodo de otimizac¸ ˜ao para par ˆametros EEAS chamado Trellis-Based Search(TBS).

A partir do n ´umero m ´aximo de iterac¸ ˜oes N , do ˆangulo de rotac¸ ˜ao θ e de W, que representa o n ´umero de bits de θ, o TBS emprega um m ´etodo de otimizac¸ ˜ao para encontrar os melhores par ˆametros s0(n), s1(n), µ

0 e µ1 (WU et al., 2003). TBS ´e baseado no efeito que os diferentes arranjos dos ˆangulos elementares S2 poss´ıveis tem sobre ζ. O algoritmo segue o seguintes passos:

1. Inicializac¸ ˜ao: Inicialmente ´e definido o vetor r(k), o qual representa o conjunto de ˆangulos elementares presentes na Equac¸ ˜ao (66), obtidos atrav ´es das poss´ıveis combinac¸ ˜ao n ˜ao redundantes de µ0, µ1, s0 e s1. Em seguida, ´e definida a ma-triz φ(n, k) para (1 ≤ n ≤ N ) e (1 ≤ k ≤ z(S2)), representando a estrutura de acumulac¸ ˜ao do algoritmo utilizada para alcanc¸ar o melhor resultado. N ´e o n ´umero de iterac¸ ˜oes desejadas, enquanto z(S2) representa o n ´umero de ele-mentos do vetor r(k). Para ent ˜ao iniciar o algoritmo, φ(1, k) ´e preenchido com o vetor r(k).

2. Acumulac¸ ˜ao: Em cada iterac¸ ˜ao n o algoritmo percorre os elementos k do vetor φ(n+1, k∗), atribuindo a cada valor k o menor resultado encontrado da express ˜ao kφ(n, k∗) + r(k) − θk. O ´ındice i varia 1 ≤ i ≤ N − 1, e k varia de 1 ≤ k ≤ Z(S

(35)

2.4 Algoritmo CORDIC 33

3. Determinac¸ ˜ao do ´Otimo Global: Ao final do processo de acumulac¸ ˜ao, os ele-mento da coluna φ(N, ) apresentam os resultados globais. Logo, dentro dessa coluna ´e determinado o valor que mais se aproxima de θ, defini-se esse como θT BS.

4. Determinac¸ ˜ao do Caminho Soluc¸ ˜ao: A partir do elemento θT BS da coluna φ(N, ) ´e trac¸ado o caminho reverso at ´e a coluna φ(1, ). A comec¸ar por (k0 = θ

T BS) e (i = N ) ´e escolhido o valor da coluna (i − 1) que minimiza kφ(1 : z(S2), i − 1) + r(k0) − θk. Em seguida se atribui a k0 a posic¸ ˜ao k do valor minimizante. Os valores k0 s ˜ao armazenados em um vetor e representam as combinac¸ ˜oes de

ˆangulos elementares que minimizam o erro .

Segue abaixo o pseudo-c ´odigo que implementa o algoritmo TBS.

1 % I n i c i a l i z a c¸ ˜a o 2 φ(1, k) = r(k) para todo k , 3 4 %Acumulac¸ ˜ao 5 F OR i = 1 to N − 1 6 F OR k = 1 to Z(S2)

7 φ(i + 1, k) = min {| φ(i, k∗) + r(k) − θ |: 1 ≤ k∗≤ Z(S2)}

8 EN D

9 EN D 10

11 %Determinac¸ ˜ao do ´Otimo G l o b a l

12 θT BS = min {| φ(Rm, k∗) − θ |: 1 ≤ k∗≤ Z(S2)}

13 Result(N ) = k∗ 14

15 %Determinac¸ ˜ao do Caminho Soluc¸ ˜ao 16 F OR i = N to 2

17 Encontra k0tal que φ(i, k∗) = min {| φ(i − 1, k0) + r(k∗) − θ |: 1 ≤ k0≤ Z(S2)}

18 k∗= k0 19 Result(i − 1) = k0 20 EN D 21 C ´odigo 2.1: Algoritmo TBS Fonte : Wu et al. (2003)

Nos trabalhos de Wu et al. (2003), os autores utilizam um exemplo base para explicar o algoritmo TBS, o qual tamb ´em ser ´a usado aqui. Para esse exemplo, o

(36)

2.4 Algoritmo CORDIC 34

ˆangulo de rotac¸ ˜ao θ ser ´a π/3, o n ´umero m ´aximo de iterac¸ ˜oes ser ´a N = 4 e a resoluc¸ ˜ao de θ ser ´a de W = 4 bits.

A primeira etapa do algoritmo ent ˜ao inicia com a definic¸ ˜ao do vetor r(k), e o preenchimento da primeira coluna da matriz φ(1, ), como pode ser visto na Figura (8). Na segunda etapa do algoritmo ´e realizada a acumulac¸ ˜ao, para cada elemento das colunas 2, 3 e 4 s ˜ao preenchidos com base na coluna anterior a partir da express ˜ao kφ(n, k∗) + r(k) − θk. Na Figura (8) o elemento φ(2, 15) representa essa etapa, e o valor do elemento φ(2, 15) ´e definido a partir da soma do ˆangulo representante da linha 15 (r(15)), com o elemento da coluna 1 que minimiza o erro de aproximac¸ ˜ao do resultado dessa soma com θ, que nesse caso ´e π/3. Esse processo se estende at ´e completar a coluna 4 da matriz φ. -1,107 -0,982 -0,896 -0,785 -0,643 -0,463 -0,245 -0 0,245 0,785 1,107 0,643 0,463 0,982 0,896 1.141 i=1 i=2 k=1 k=2 k=3 k=4 k=5 k=6 k=7 k=8 k=9 k=10 k=11 k=12 k=13 k=14 k=15

Figura 8: Exemplo de execuc¸ ˜ao do Algoritmo TBS Fonte: Autoria Pr ´opria

Ap ´os a etapa de acumulac¸ ˜ao, a ´ultima coluna de φ apresenta os resultados globais da acumulac¸ ˜ao. Logo, para determinar o valor ´otimo global ´e escolhido na co-luna φ(4, ) o valor θT BS, que mais se aproxima de θ ou π/3. Ap ´os essa etapa ´e iniciada a determinac¸ ˜ao do vetor Result, o qual deve conter o caminho soluc¸ ˜ao necess ´ario para

(37)

2.4 Algoritmo CORDIC 35

atingir o valor de ´otimo global θT BS. Na Figura (9) ´e apresentado os caminhos m´ınimos para cada coluna da matriz φ, consequentemente, o melhor caminho encontrado pelo algoritmo. -1,107 -0,982 -0,896 -0,785 -0,643 -0,463 -0,245 -0 0,245 0,785 1,107 0,643 0,463 0,982 0,896 i=1 i=2 k=1 k=2 k=3 k=4 k=5 k=6 k=7 k=8 k=9 k=10 k=11 k=12 k=13 k=14 k=15 i=3 i=4 0 0,124 0,211 0,321 0,463 0,643 0,862 1,030 1,141 1.030 1,131 0,999 0,961 1,016 1,054

Figura 9: Exemplo de execuc¸ ˜ao do Algoritmo TBS Fonte: Autoria Pr ´opria

A tabela (1) apresenta os valores encontrados para φ na execuc¸ ˜ao do exem-plo apresentado. Em destaque est ˜ao os valores do caminho soluc¸ ˜ao, que s ˜ao arma-zenados em Result.

(38)

2.4 Algoritmo CORDIC 36

i=1 i=2 i=3 i=4

k=1 -1.1071 0 0.0339 0 k=2 -0.9828 0.1244 0.1582 0.1244 k=3 -0.8961 0.2111 0.2450 0.2111 k=4 -0.7854 0.3218 0.3556 0.3218 k=5 -0.6435 0.4636 0.4975 0.4636 k=6 -0.4636 0.6435 0.6774 0.6435 k=7 -0.2450 0.8622 0.8961 0.8622 k=8 0 1.1071 1.0304 1.0304 k=9 0.4636 1.1071 1.1071 0.9612 k=10 0.6435 1.1071 1.1071 0.9991 k=11 0.2450 1.0304 1.1071 1.1410 k=12 0.7854 1.0304 0.9965 1.0304 k=13 1.1071 1.1071 1.1071 1.1410 k=14 0.9828 0.9828 1.1071 1.0167 k=15 0.8961 1.1410 1.0204 1.0543

Tabela 1: Matriz φ para o dado Exemplo

Fonte: Autoria Pr ´opria

2.4.3 MSR-CORDIC

Como pode ser visto na Sec¸ ˜ao (2.4.1), o Algoritmo Cordic Tradicional possui a necessidade de realizar a correc¸ ˜ao do ganho kc ap ´os o processo de rotac¸ ˜ao do vetor, al ´em de requisitar um n ´umero elevado de iterac¸ ˜oes a fim de reduzir o erro de aproximac¸ ˜ao do vetor. Para reduzir o n ´umero de iterac¸ ˜oes CORDIC, o EEAS aumenta o n ´umero de termos SPT, por ´em acaba por impactar o ganho Kc, que passa a n ˜ao ser mais constante e necessita ser compensado a cada iterac¸ ˜ao. Tanto no algoritmo tradicional quanto o EEAS a correc¸ ˜ao final de Kc, que se estabelece sempre abaixo da unidade, provoca uma degradac¸ ˜ao do SQNR.

Segundo Lin e Wu (2005), para evitar a degradac¸ ˜ao do SQNR ´e necess ´ario manter o m ´odulo do vetor de entrada o mais perto da unidade a cada iterac¸ ˜ao. Assim, Lin e Wu (2005) reformulam o algoritmo Cordic para um novo esquema que passa a distribuir os termos SPT de forma diferente do EEAS, com o intuito de dar mais liberdade ao ganho Kc e reduzir o n ´umero de iterac¸ ˜oes necess ´arias para atingir um erro de aproximac¸ ˜ao admiss´ıvel. Tal algoritmo pode ser expressado por:

(39)

2.4 Algoritmo CORDIC 37 " x(n + 1) y(n + 1) # " PI i=1µi2−si(n) − PJ j=1µj2−sj(n) PJ j=1µj2 −sj(n) PI i=1µi2 −si(n) # " x(n) y(n) # , (68) z(n + 1) = z(n − 1) + θn, (69) : µi, µj ∈ {−1, 0, 1}, si, sj ∈ {0, 1, . . . , S}, (70) : I + J = Nspt. (71)

A reformulac¸ ˜ao apresentada por Lin e Wu (2005) incrementa termos SPT nas parcelas x(n) de x(n + 1) e y(n) de y(n + 1), a fim de possibilitar o ganho Kc se tornar maior ou menor do que a unidade, dependendo da escolha dos par ˆametros Cordic. Assim ´e poss´ıvel realizar a operac¸ ˜ao de microrotac¸ ˜ao e a compensac¸ ˜ao do ga-nho Kc simultaneamente. Por tais motivos, esse algoritmo CORDIC ´e denominado de Mixed Scaling Rotation (MSR). Consequentemente, ao inserir mais termos na func¸ ˜ao CORDIC, tanto θn quanto Kc precisam ser corrigidos (KUO et al., 2003). Portanto θn e Kc passam a definidos por:

θn = tan−1 PJ j=1µj2 −sj(n) PI i=1µi2−si(n) ! , (72) Kn = 1 r  PI i=12−si(n) 2 +PJ j=12 −sj(n)2 , (73) Kc = N −1 Y n=0 K(n). (74)

Como pode ser percebido em (73) e (72), com a escolha adequada dos conjuntos de termos µi, µj, Si e Sj, e dos valores de I e J ´e poss´ıvel aproximar Kc da unidade a cada iterac¸ ˜ao ao mesmo tempo em que o erro ζ ´e reduzido. No MSR o conjunto de ˆangulos elementares ´e definidor por:

S3 = {tan−1 PJ j=1µj2−sj(n) PI i=1µi2−si(n) ! }, (75) : µi, µj ∈ {−1, 0, 1}, si, sj ∈ {0, 1, . . . , S}, (76)

(40)

2.4 Algoritmo CORDIC 38

sendo o erro ζ ´e definido por:

min ζ = θ − N −1 X n=0 tan−1 PJ j=1µj2−sj(n) PI i=1µi2−si(n) ! , (77) : µi, µj ∈ {−1, 0, 1}, s0, s1 ∈ {0, 1, . . . , S}. (78)

Com mais graus de liberdade o MSR possui uma densidade combinacio-nal dentro do circulo trigonom ´etrico maior do que o CORDIC tradiciocombinacio-nal e o EEAS-CORDIC (KUO et al., 2003), como pode ser visto na Figura (10). Assim como no EEAS, o ganho do vetor ap ´os o rotacionamento, mostrado em (73), depende da escolha dos par ˆametros CORDIC. Por ´em no caso do MSR este ganho pode ser menor, maior ou igual a 1, como pode ser visto na Figura (10).

Figura 10: MSR com I=2, J=1 e N=2 Fonte: (LIN; WU, 2005)

O incremento de mais termos SPT na definic¸ ˜ao do ˆangulo de rotac¸ ˜ao θn acaba por dar ao conjunto dos ˆangulos elementares mais liberdade combinacional dentro do c´ırculo unit ´ario. No algoritmo CORDIC tradicional e no EEAS havia uma dificuldade de realizar rotac¸ ˜oes maiores que π/4, devido a distribuic¸ ˜ao dos ˆangulos elementares, como pode ser visto nas Figura (6) e (7). Devido a essa dificuldade era necess ´ario realizar uma pr ´e-rotac¸ ˜ao no vetor de entrada, quando o ˆangulo de rotac¸ ˜ao era maior que π/4, a fim de reduzir o ˆangulo para uma faixa mais aceit ´avel de rotac¸ ˜ao, o que aumenta o custo computacional do algoritmo, e demandava mais recursos de

(41)

2.4 Algoritmo CORDIC 39

hardware. No algoritmo MSR o conjunto dos ˆangulos elementares no circulo unit ´ario ´e maior e melhor distribu´ıdos como visto na Figura (10). Isso possibilita ao MSR alcanc¸ar ˆangulos de rotac¸ ˜ao de 0 ´a 2π, varrendo todo o circulo unit ´ario.

O desempenho do algoritmo EEAS, como mostrado na sec¸ ˜ao anterior, ´e diretamente relacionado com a escolha dos par ˆametros CORDIC µ0, µ1, s0 e s1. De maneira an ´aloga ´e a determinac¸ ˜ao dos par ˆametros CORDIC J , I, µi, µj, si e sj que garante a converg ˆencia e efici ˆencia do algoritmo.

Para determinar os par ˆametros Cordic do algoritmo MSR, Lin e Wu (2005) utiliza a an ´alise do erro entre o vetor idealmente rotacionado, e o vetor que na pr ´atica do Algoritmo MSR consegue alcanc¸ar no rotacionamento. Para exemplificar, consi-dere que se deseja rotacionar um vetor OD pelo ˆangulo θ at ´e a posic¸ ˜ao do ponto A, formando assim um novo vetor rotacionado OA. Considerando que o MSR n ˜ao con-siga rotacionar o vetor OD por exatamente θ, e que devido ao ganho Cordic o m ´odulo do vetor rotacionado seja diferente do vetor OD. Logo, a nova posic¸ ˜ao do vetor rotaci-onado ´e OB, como mostrado na Figura (11)(LIN; WU, 2005).

O

C

A B D

Figura 11: MSR com I=2, J=1 e N=2 Fonte: (LIN; WU, 2005)

Analisando a Figura (11), o erro de aproximac¸ ˜ao  do algoritmo MSR ´e representado pelo trecho OB, denominado ∆l0. J ´a o erro angular ´e representado por ∆θ, e o erro do m ´odulo ´e representado pelo trecho OC, denominado ∆l0. Segundo Lin e Wu (2005), quando ∆θ ´e suficientemente pequeno ´e poss´ıvel obter a seguinte express ˜ao:

(42)

2.4 Algoritmo CORDIC 40

∆l02 = OA2+ OB2− 2OA × OBcos(∆θ), (79) ∆l02 = 1 + (1 + ∆l)2− 2 × 1 × (1 + ∆l) ×p1 − sin2(∆θ), (80) ∆l02 ≈ ∆l2+ ∆θ2. (81)

Por meio de (81) ´e poss´ıvel concluir que o erro angular ∆θ, e o erro modular ∆l possuem o mesmo impacto no erro de aproximac¸ ˜ao do algoritmo MSR. Portanto, afim de otimizar o desempenho do algoritmo MSR ´e necess ´ario escolher um conjunto de par ˆametros CORDIC que privilegiem igualmente a reduc¸ ˜ao de ambos os erros de aproximac¸ ˜ao (LIN; WU, 2005).

Assim determinar o conjunto dos melhores valores para os par ˆametros CORDIC J , I, µi, µj, si e sj nada mais ´e do que uma tarefa de otimizac¸ ˜ao, sendo que a equac¸ ˜ao de minimizac¸ ˜ao ´e a express ˜ao do erro , o qual pode ser definido como:

min  = √∆l2 + ∆θ2. (82)

Para cumprir essa tarefa de otimizac¸ ˜ao de  ´e poss´ıvel utilizar diferentes tipos de algoritmos, e inclusive adaptar o algoritmo TBS j ´a apresentado. Segundo Lin e Wu (2005), existe uma certa restric¸ ˜ao quanto a utilizac¸ ˜ao de algoritmos como o greedy, pois esse tipo de algoritmo Guloso n ˜ao garante a melhor soluc¸ ˜ao dentro do conjunto de soluc¸ ˜oes poss´ıveis desse problema.

2.4.3.1 AN ´ALISE DO ERRO

Um importante fator para a determinac¸ ˜ao do melhor conjunto de par ˆametros Cordic para o MSR, al ´em da minimizac¸ ˜ao do erro , ´e o efeito do ru´ıdo de arredon-damento (Roundoff Noise Analysis) en, e o erro de overflow, ou estouro da palavra bin ´aria. Ambos os efeitos ocorrem ao longo das operac¸ ˜oes l ´ogicas promovidas pelo al-goritmo CORDIC, em especial devido a operac¸ ˜ao de compensac¸ ˜ao do ganho Kc. Essa compensac¸ ˜ao envolve uma operac¸ ˜ao de multiplicac¸ ˜ao, o que acentua os problemas de arredondamento da parte fracion ´aria e, dependendo do valor da compensac¸ ˜ao, pode causar um overflow da palavras bin ´aria.

Nos dispositivos digitais o n ´umero de bits utilizados para representar sinais quantizados ´e limitado de acordo com a arquitetura. Esse limite de representac¸ ˜ao

(43)

2.4 Algoritmo CORDIC 41

acaba por impactar na resoluc¸ ˜ao da palavra bin ´aria para n ´umeros fracion ´arios, o que forc¸a a realizac¸ ˜ao de arrendondamentos na representac¸ ˜ao bin ´aria.

Para representar o conjunto dos n ´umeros racionais no mundo digital, a ar-quitetura dos sistemas digitais reserva parte dos bits da palavra bin ´aria para represen-tar o fracion ´ario do n ´umero racional. Assim, segundo Lin e Wu (2005), os n´ıveis de quantizac¸ ˜ao para um sinal digital s ˜ao definidos como:

−2W −i−1, ..., −2−i+1

, −2−i, −2−i+1, ..., 2W −i−1 , (83) sendo que W representa o n ´umero de bits da palavra bin ´aria, e i representa o n ´umero de d´ıgitos fracion ´arios.

Uma soluc¸ ˜ao simples para reduzir o efeito do en ´e aumentar o n ´umero de bits W e i, melhorando a resoluc¸ ˜ao da representac¸ ˜ao. Por ´em, essa soluc¸ ˜ao, como afirma (LIN; WU, 2005), provocaria uma reduc¸ ˜ao na velocidade computacional do sis-tema, e ainda consumiria mais recursos de hardware. Outra opc¸ ˜ao seria reduzir o n ´umero de bits utilizados para representar a parte inteira do n ´umero, e transferir es-ses bits para a parte fracion ´aria. Por ´em, esse m ´etodo pode provocar um overflow da palavra bin ´aria, o que ´e ainda pior do que um ru´ıdo de arredondamento.

Considerando a amplitude ρ de um sinal de entrada, definido entre os inter-valos:

− 2W a≤ ρ ≤ 2Wb− 1, para W

a, Wb ≥ 0, (84)

sendo que W a e W b representam respectivamente o limite superior e inferior da am-plitude do m ´odulo desse sinal. Ainda:

Wmax = max{Wa, Wb}. (85)

Como o limite absoluto desse sinal. O n ´umero m´ınimo de bits necess ´arios para representar tal sinal seria de (Wmax + 1). Assim, segundo Lin e Wu (2005), para evitar um overflow seria necess ´ario manter o sinal de entrada dentro da seguinte restric¸ ˜ao:

2Wmax ≤ 2W −1−i. (86)

Para solver o problema do ru´ıdo de arredondamento, Lin e Wu (2005) assu-mem que o en ´e uniformemente distribu´ıdo e n ˜ao possui correlac¸ ˜ao com outros sinais. Al ´em de considerar que, baseado nos n´ıveis de quantizac¸ ˜ao, o en est ´a situado em

(44)

2.4 Algoritmo CORDIC 42

uma faixa sim ´etrica de (−2−i−1, 2−i−1). Portanto, a vari ˆancia de en ´e dada por: σen2 = V

2 LSB

12 , (87)

sendo VLSB igual a 2i. Logo, a vari ˆancia do erro de arredondamento ´e proporcional ao quadrado valor do ´ultimo bit da palavra bin ´aria.

Como base em (87), Lin e Wu (2005) analisam o efeito a operac¸ ˜ao de rotac¸ ˜ao tem sobre a vari ˆancia de en, e mais especificamento o efeito que o ganho Kc tem sobre o SQNR. Quando o ganho Kc ´e > 1 ou < 1 SQNR ´e reduzido para 1/(Kn)a cada iterac¸ ˜ao CORDIC.

O ganho KC ´e fator importante no projeto dos par ˆametros Cordic para o MSR, afetando tanto o erro en quanto . Para refinar a func¸ ˜ao de minimizac¸ ˜ao apre-sentada em (82), Lin e Wu (2005) adicionam a seguinte restric¸ ˜ao em relac¸ ˜ao ao valor do ganho Kc:

Plower = 1/Pupper, (88)

sendo Pupper e Plower, respectivamente, o limite superior e o limite inferior de Kna cada iterac¸ ˜ao.

O gr ´afico da Figura (12) mostra uma an ´alise pr ´atica entre o n´ıvel do SQNR e o Pupper, para diferentes valores de deslocamento de bits (S). Por meio dessa an ´alise Lin e Wu (2005) sugerem que para um bom projeto de par ˆametros MSR Cordic, para Nspt = 3e N = 3, o valor de Pupper deve estar pr ´oximo de 1, 5. J ´a que, como pode ser visto na Figura (12), para valores maiores o desempenho de SQNR ´e saturado. Logo, para esse caso, ´e poss´ıvel adicionar mais essa restric¸ ˜ao a equac¸ ˜ao de minimizac¸ ˜ao do erro .

(45)

2.4 Algoritmo CORDIC 43

Figura 12: Relac¸ ˜ao entre o Pupper e o SQNR para MSR-CORDIC, como Nspt = 3e

N = 3

Fonte: (LIN; WU, 2005)

O ´ultimo aspecto da melhoria do erro en ´e a escolha dos par ˆametros I e J. Esses par ˆametros est ˜ao diretamente relacionados a Nspt, o n ´umero de termos SPT presentes na equac¸ ˜ao x(n + 1) e y(n + 1). Esta relac¸ ˜ao ´e descrita por (71). O valor de Nspt ´e uma escolha que impacta no n ´umero de deslocadores de bits (shifters) ne-cess ´arios para realizar a operac¸ ˜ao Cordic, sendo mais comum na bibliografia observar implementac¸ ˜ao MSR Cordic com Nspt= 3ou Nspt = 4(PARK; YU, 2012) (LIN; WU, 2005) (MEHER et al., 2009).

Os valores I e J podem ser escolhidos como fixos (Modo Normal) ou po-dem ser din ˆamicos a cada operac¸ ˜ao de rotacionamento (Modo Generalizado). Tanto no modo Normal quanto o modo Generalizado, o valor de I e J devem obedecer a restric¸ ˜ao I + J = NSP T, por ´em ao utilizar o modo Normal ´e poss´ıvel reduzir a com-plexabilidade do hardware e alcanc¸ar um desempenho aceit ´avel. Para tal, quando em modo de operac¸ ˜ao Normal, os par ˆametros deve I e J devem atender a duas restric¸ ˜ao dadas a seguir (LIN; WU, 2005):

• Se Nspt ´e par: I = J = Nspt/2,

• Se Nspt ´e ´ımpar: J = (Nspt+ 1)/2e I = J − 1.

A operac¸ ˜ao em modo Generalizado permite que o desempenho do MSR Cordic seja maior, j ´a que nessa configurac¸ ˜ao as possibilidades combinat ´orias dos par ˆametros Cordic s ˜ao maiores. Nesse modo passa a existir, al ´em da operac¸ ˜ao normal

(46)

2.5 FPGA 44

de rotacionamento, a possibilidade de ocorrer a operac¸ ˜ao de multiplicac¸ ˜ao de escala, quando J = 0, e a operac¸ ˜ao de invers ˜ao de escala, quando I = 0. Essas operac¸ ˜oes adicionais maximizam o desempenho nas rotac¸ ˜oes em ˆangulos como π/4, π/2 e π. Na pr ´atica, esse modo requer o uso de mais 3 switches de controle, o que em muitas aplicac¸ ˜oes torna vi ´avel aumentar o consumo de recursos para alcanc¸ar um melhor desempenho.

Alinhando todas as restric¸ ˜oes apresentadas com a equac¸ ˜ao de minimizac¸ ˜ao apresentada em (82), ´e obtido um conjunto de par ˆametros Cordic que otimizam a operac¸ ˜ao de rotacionamento, elevando o valor de SQNR do sinal.

2.5 FPGA

Moore (2007, p. 4) define a FPGA como um dispositivo semicondutor capaz de ser totalmente redefinido ap ´os sua fabricac¸ ˜ao, permitindo ao programador reconfi-gurar produtos e func¸ ˜oes j ´a implementadas, adaptando o hardware a novas func¸ ˜oes. De forma pr ´atica, a FPGA permite uma flexibilidade em um projeto, podendo mudar a forma como ele ´e implementado, sem a necessidade de se construir um hardware novo.

Para Moore (2007, p. 4), comparado com as outras formas de construir um hardware, a FPGA oferece duas grandes vantagens em uma aplicac¸ ˜ao. Primeiro, para uma aplicac¸ ˜ao, ao inv ´es de se utilizar um circuito integrado padr ˜ao comercial, que geralmente ´e super ou subdimensionado, ou ainda desenvolver um novo projeto de circuito integrado especifico, consumindo tempo e recursos, a FPGA possibilita desenvolver um hardware exatamente dentro das especificac¸ ˜oes, personalizado e oti-mizado para a func¸ ˜ao destinada. Em segundo, por ´em t ˜ao importante quanto, ´e que essa capacidade de personalizac¸ ˜ao de hardware possibilita a realizac¸ ˜ao de operac¸ ˜oes de modo mais simplificado, r ´apido e energeticamente eficiente se comparado a um mi-croprocessador.

2.5.1 ASPECTOS CONSTRUTIVOS DA FPGA

As FPGAs s ˜ao baseadas em unidades l ´ogicas elementares b ´asicas, ou (BLE) Basic Logic Elements, dentro de uma hierarquia de interconex ˜oes reconfigur ´aveis que permitem que os BLEs sejam fisicamente conectados uns aos outros de diferen-tes formas, criando uma enorme variedade de componendiferen-tes digitais. A arquitetura das FPGAs modernas s ˜ao constitu´ıdas, basicamente, por conjunto de mem ´orias de

(47)

2.5 FPGA 45

armazenamento em massa SRAM (Static Random Access Memory ), Portas de Entra-da/Sa´ıda, blocos l ´ogicos configur ´aveis (CLB) e sistema de roteamento, como pode ser visto na Figura (13) (MOORE, 2007, p. 5).

Figura 13: Arquitetura Tipica de uma FPGA Fonte: Adaptado Meyer-Baese (2007, p. 6)

Os CLB s ˜ao blocos realizam operac¸ ˜oes l ´ogicas b ´asicas e armazenam pe-quenos volumes de dados. Comumente as operac¸ ˜oes complexas, necess ´arias para o processamento de uma aplicac¸ ˜ao, s ˜ao divididas em processos mais simples para cada uma das CLBs selecionadas, de modo que a soma das tarefas de cada CLB seja equivalente a operac¸ ˜ao complexa, em uma estrat ´egia de divis ˜ao e conquista. Para re-alizar operac¸ ˜oes l ´ogicas b ´asicas e ainda armazenar pequenos volumes de dados, os CLBs tecnicamente poderiam ser apenas um pequeno circuito de transistores (granu-laridade fina), ou at ´e mesmo um processador completo (granu(granu-laridade grosseira). Se os CLBs fossem granularidade fina, para realizar tarefas complexas seria necess ´ario

(48)

2.5 FPGA 46

um grande n ´umero de CLBs e um sistema de roteamento complexo para interconecta-los, o que resultaria em uma FPGA de baixo desempenho e um elevado consumo energ ´etico. Por outro lado, se as CLBs forem de uma granularidade mais grosseira, seria um desperd´ıcio de recurso utiliz ´a-los em operac¸ ˜oes mais simples (FAROOQ et al.,

2012, p. 11). Assim a escolha do n´ıvel de complexabilidade, ou granulac¸ ˜ao, das CLBs de uma FPGA ´e um compromisso de otimizac¸ ˜ao de recursos.

Segundo Farooq et al. (2012, p. 11), dentro da gama de granulac¸ ˜ao das CLBs, algumas arquiteturas incluem o uso de portas NAND, interconex ˜ao de multi-plexadores e tabelas de busca LUT (Lookup Table). Em especial, fabricantes como a Xilinx utilizam CLBs baseadas em LUTs, j ´a que CLBs baseadas em LUT oferecem uma boa relac¸ ˜ao de granulac¸ ˜ao, otimizando os recursos da FPGA para aplicac¸ ˜oes simples at ´e as mais complexas. Esse tipo de CLB pode incluir uma ´unico BLE, ou mesmo um cluster de BLEs interconectados, como mostrado na Figura (14).

Figura 14: Arquitetura de uma CLB com 4 BLEs

Fonte: Adaptado Farooq et al. (2012, p. 13)

Segundo Farooq et al. (2012, p. 11), um BLE mais simples consiste basi-camente de um LUT e um Flip-Flop tipo D, como pode ser visto na Figura (15). Um LUT com k entradas pode implementar k func¸ ˜oes booleanas utilizando os espac¸os de mem ´oria SRAM dentro da LUT. O exemplo apresentado na Figura (15) utiliza 16 bits

(49)

2.5 FPGA 47

de mem ´oria SRAM, os quais s ˜ao conectadas a entrada do multiplexador que possui 4 bits de selec¸ ˜ao, e cuja sa´ıda ´e ligada ao flip-flop. Essa configurac¸ ˜ao permite que a LUT tenha 2k combinac¸ ˜oes das k operac¸ ˜oes booleanas.

Figura 15: Arquitetura de uma BLE (Basic Logic Element)

Fonte: Adaptado Farooq et al. (2012, p. 13)

Um ´unico BLE ´e capaz de realizar algumas operac¸ ˜oes booleanas b ´asicas, por ´em em clusters as combinac¸ ˜oes de operac¸ ˜oes aumentam. FPGAs modernas ti-picamente cont ´em de 4 a 10 BLEs em um ´unico cluster. Por ´em, essas FPGAs n ˜ao possui apenas BLEs id ˆenticas, na verdade h ´a uma grande heterogenia de blocos, sendo muitos deles desenvolvidos para prop ´ositos espec´ıficos. Entre esses blocos de prop ´osito espec´ıfico est ˜ao multiplicadores, somadores, mem ´orias e DSPs (Digital Sig-nal Processor ), entre outros. Esses blocos s ˜ao desenvolvidos para otimizar o espac¸o, processamento, roteamento e demais recursos de hardware que seriam necess ´arios para implementar as mesmas func¸ ˜oes em BLEs comuns, sendo essenciais em certas aplicac¸ ˜oes Farooq et al. (2012, p. 10).

A implementac¸ ˜ao de qualquer circuito l ´ogico ´e feita pela associac¸ ˜ao de di-ferentes blocos l ´ogicos e pelas portas de entrada e sa´ıda da FPGA, os quais s ˜ao conectados uns aos outros por meio da rede de roteamento program ´avel, ou PLN (Programmable Logic Network ). Na Figura (13) a PLN ´e representada pela Matriz Program ´avel de Interconex ˜oes e pelos Canais de Roteamento. Para que a FPGA possa implementar qualquer circuito digital, as interconex ˜oes de roteamento devem ser flex´ıveis para suportar a grande variedade de conex ˜oes demandada, otimizando

Referências

Documentos relacionados

Our contributions are: a set of guidelines that provide meaning to the different modelling elements of SysML used during the design of systems; the individual formal semantics for

Mauthner, presente em nosso segundo capítulo, dele LW vai herdar o tema da crítica da linguagem; embora entre o que defende Mauthner e Wittgenstein exista um abismo de diferenças 112

A Federação Equestre Internacional (FEI) conta com o irrestrito apoio de todos os envolvidos com os Esportes Equestres no sentido de aderir ao Código de Conduta da FEI, além

Resultado do desempenho dos discentes da disciplina de Bioestatística do Instituto Federal do Acre (IFAC), no curso de Licenciatura em Ciências Biológicas, com uso de quadro branco

Em Entre Douro e Minho e no Algarve a superfície total das explorações agrícolas ocupa cerca de 1/3 da área geográfica das regiões, sendo que a Beira Litoral é a

O pastor Felipe Silva de Oliveira da Terceira Igreja Batista em Jardim Bom Retiro (São Gonçalo/RJ), é convidado para apresentar uma reflexão bíblica baseada na

This study demonstrated the need for a pharmacist to perform discharge medication counseling to reduce pharma- cotherapy problems in cardiology patients with polyphar- macy,

Em resumo, o Instituto Doméstica Legal não irá aceitar mais uma ARBITRARIEDADE e DESREPEITO do governo as Leis, lutaremos para exigir o cumprimento da mesma,