• Nenhum resultado encontrado

2.4 ALGORITMO CORDIC

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 componentes digitais. A arquitetura das FPGAs modernas s ˜ao constitu´ıdas, basicamente, por conjunto de mem ´orias de

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 (granularidade grosseira). Se os CLBs fossem granularidade fina, para realizar tarefas complexas seria necess ´ario

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

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

2.5 FPGA 48

sempre as dist ˆancias das conex ˜oes e reduzindo a lat ˆencia dos sinais. Portanto, ao projetar um circuito a ser implementado na FPGA deve ser ter especial atenc¸ ˜ao a forma como o roteamento do blocos l ´ogicos ´e feito, buscando flexibilidade e efici ˆencia Farooq et al. (2012, p. 13).

Nas FPGAs modernas, al ´em da unidades de armazenamento de Dados SRAM contido dentro das BLEs, mais especificamente nas LUTs, existe ainda gran- des blocos SRAM isolados das BLEs, destinados a funcionar como o armazenamento de dados em massa. Esses blocos s ˜ao importantes em aplicac¸ ˜oes digitais aonde ´e ne- cess ´ario armazenar, como por exemplo, dados de amostragem ou mesmo dados que devem aguardar para serem passados para uma pr ´oxima etapa de processamento, ou mesmo transmitidos para fora da FPGA pelas portas de entrada e sa´ıda de da- dos. Esses blocos de mem ´oria ´e apresentada na Figura (13) como parte integrante da arquitetura tipica de uma FPGA.

A FPGA ´e uma boa escolha para a implementac¸ ˜ao do algoritmo da FFT devido a grande variedade de recursos de hardware sintetiz ´aveis, al ´em de possuir recursos de programac¸ ˜ao paralela que permite o processamento paralelo de sinais, conferindo assim uma maior rapidez na execuc¸ ˜ao do algoritmo (IBRAHIM et al., 2016). Como afirma Meyer-Baese (2007, Pref ´acio), muitos algoritmos de processamento de sinais, como FFT (Fast Fourier Transform) e os filtros FIR ou IIR, implementados ante- riormente em Circuitos Integrados de Aplicac¸ ˜ao Especifica ou ASIC (Application Spe- cific Integrated Circuits), agora est ˜ao sendo implementados em FPGAs.

49

3 MATERIAIS E M ´ETODOS

Este cap´ıtulo destina-se a apresentac¸ ˜ao dos dispositivos e programas, bem como os algoritmos, func¸ ˜oes e metodologias utilizadas para projetar e implementar os circuitos de c ´alculo da FFT. Todos os passos apresentados aqui foram embasados na teoria apresentada no Cap´ıtulo (2).

O desenvolvimento de um hardware para c ´alculo de uma FFT em FPGA, abrindo m ˜ao de IPs prontas e blocos de DSPs, utilizando apenas as bibliotecas padr ˜ao de componentes, como a IEEE 1164 e a UNISIM, disponibilizadas pelo fabricante, ´e uma tarefa que exige um projeto e implementac¸ ˜ao eficiente. Para o projeto da ar- quitetura da FFT, ´e necess ´ario ter conhecimento de toda a base matem ´atica, tanto da Transformada de Fourier, quanto do algoritmo CORDIC e de suas variantes, para que se possa tirar o m ´aximo proveito das simplificac¸ ˜oes e otimizac¸ ˜oes matem ´aticas poss´ıveis. Na implementac¸ ˜ao do algoritmo, um design eficiente dos diferentes compo- nentes que formam o hardware, al ´em de reduzir a lat ˆencia dos sinais, tamb ´em reduz o consumo de Flip-Flops, LUTs, Muxes e blocos de mem ´oria. Tornando, assim, poss´ıvel a implementac¸ ˜ao de um hardware mais eficiente dentro das restric¸ ˜oes de recursos da FPGA.

Para que fosse poss´ıvel testar as funcionalidades e o desempenho ap ´os a implementac¸ ˜ao, desde o in´ıcio do projeto da FFT, fora elaborado o diagrama da Figura (16). ZynqBerry Interface AXI - Slave UART / TTL FFT AXI Cortex-A9 PL PS F( ) f(t)

Figura 16: Diagrama Geral do Sistema Implementado Fonte: Autoria Pr ´opria

Documentos relacionados