picomponentes_dsp.pdf

10
Implementando sistemas DSP em FPGA Neste artigo são apresentadas as bases teóricas e práticas para implementar sistemas de processamento digital de sinais (DSP) em dispositivos lógicos programáveis FPGA (Field-Programable-Gate-Array), apresentando as principais vantagens deste tipo de implementação sobre o uso de processadores DSP convencionais. São apresentados ainda os principais recursos e sistemas de desenvolvimento e simulação disponíveis para o desenvolvimento destes sistemas para dispositivos da Altera. Introdução Os modernos algoritmos necessários para a implementação dos novos padrões de sistemas de comunicação de dados com e sem fios, compressão de som e imagem, sistemas criptográficos e sistemas de transmissão de imagens com resoluções cada vez maiores, exigem capacidade de processamento DSP cada vez maiores. Os processadores DSP atuais apresentam desempenho cada vez maior [1] , mas ainda assim a complexidade crescente necessária a implementação destes algoritmos exige um número cada vez maior de processadores DSPs convencionais para a implementação destes novos algoritmos, aumentando muito o custo destas soluções. Alguns exemplos de sistemas que exigem capacidade de processamento muito superior à capacidade dos processadores DSP atuais de alto desempenho são sistemas de compressão de imagem em tempo real para imagens de alta resolução, tais como compressão nos padrões H.264 [2] (AVC) para as resoluções mais altas (1920x1080), sistemas de modulação e demodulação OFDM [3] para comunicação sem fio e transmissão de sinais de TV digital em banda larga e sistemas criptográficos necessários à implementação de VPNs em sistemas ethernet de banda larga (1Gbps e 10 Gbps). A principal alternativa disponível hoje para implementar sistemas de DSP de alto desempenho, como os citados acima, é a utilização de FPGAs para implementá-los. A principal característica desta alternativa é a possibilidade de executar sistemas com capacidade de processamento e ordens de grandeza superior se comparadas com a implementação destes sitemas utilizando processadores DSPs convencionais, em um único dispositivo e a um custo muito menor. Neste artigo serão apresentados os conceitos básicos de desenvolvimento de sistemas de processamento DSP em FPGAs, as ferramentas de desenvolvimento e simulação disponíveis e será apresentado um exemplo de implementação de um sistema simples em FPGA. Arquitetura das FPGAs Altera Antes de apresentar os conceitos e as ferramentas envolvidas na implementação de sistemas de processamento DSP em FPGAs, será feita uma breve revisão dos recursos disponívies em FPGAs da Altera voltadas para implementação de sistemas DSP, apresentando para cada recurso quais as principais aplicações em tais sistemas. A família de componentes com maior capacidade de processamento DSP da Altera é a família Stratix II [4] , família de FPGA implementada em tecnologia de 90 nm, com interconexão em cobre, freqüência interna de operação máxima de 500 MHz para a lógica e de 1 GHz para interfaces seriais rápidas. Os dispositivos que compõem esta família são apresentados na Tabela 1 a seguir. Tab. 1 : Dispositivos Da família Stratix II Na Fig. 1 pode-se ver o diagrama de uma FPGA da família Stratix II, mostrando a localização dos principais recursos do dispositivo. Fig. 1 : Diagrama de um dispositivo Stratix II Os pricipais recursos disponíveis nas FPGAs da família Stratix II são:

Upload: joao-jose

Post on 10-Sep-2015

214 views

Category:

Documents


0 download

TRANSCRIPT

  • Implementando sistemas DSP em FPGA

    Neste artigo so apresentadas as bases tericas e prticas para implementar sistemas de processamento digital de sinais (DSP) em dispositivos lgicos programveis FPGA (Field-Programable-Gate-Array), apresentando as principais vantagens deste tipo de implementao sobre o uso de processadores DSP

    convencionais. So apresentados ainda os principais recursos e sistemas de desenvolvimento e simulao disponveis para o desenvolvimento destes sistemas para dispositivos da Altera.

    Introduo

    Os modernos algoritmos necessrios para a implementao dos novos padres de sistemas de comunicao de dados com e sem fios, compresso de som e imagem, sistemas criptogrficos e sistemas de transmisso de imagens com resolues cada vez maiores, exigem capacidade de processamento DSP cada vez maiores.

    Os processadores DSP atuais apresentam desempenho cada vez maior [1], mas ainda assim a complexidade crescente necessria a implementao destes algoritmos exige um nmero cada vez maior de processadores DSPs convencionais para a implementao destes novos algoritmos, aumentando muito o custo destas solues.

    Alguns exemplos de sistemas que exigem capacidade de processamento muito superior capacidade dos processadores DSP atuais de alto desempenho so sistemas de compresso de imagem em tempo real para imagens de alta resoluo, tais como compresso nos padres H.264[2] (AVC) para as resolues mais altas (1920x1080), sistemas de modulao e demodulao OFDM[3] para comunicao sem fio e transmisso de sinais de TV digital em banda larga e sistemas criptogrficos necessrios implementao de VPNs em sistemas ethernet de banda larga (1Gbps e 10 Gbps).

    A principal alternativa disponvel hoje para implementar sistemas de DSP de alto desempenho, como os citados acima, a utilizao de FPGAs para implement-los. A principal caracterstica desta alternativa a possibilidade de executar sistemas com capacidade de processamento e ordens de grandeza superior se comparadas com a implementao destes sitemas utilizando processadores DSPs convencionais, em um nico dispositivo e a um custo muito menor.

    Neste artigo sero apresentados os conceitos bsicos de desenvolvimento de sistemas de processamento DSP em FPGAs, as ferramentas de desenvolvimento e simulao disponveis e ser apresentado um exemplo de implementao de um sistema simples em FPGA.

    Arquitetura das FPGAs Altera

    Antes de apresentar os conceitos e as ferramentas envolvidas na implementao de sistemas de processamento DSP em FPGAs, ser feita uma breve reviso dos recursos disponvies em FPGAs da Altera voltadas para implementao de sistemas DSP, apresentando para cada recurso quais as principais aplicaes em tais sistemas.

    A famlia de componentes com maior capacidade de processamento DSP da Altera a famlia Stratix II[4], famlia de FPGA implementada em tecnologia de 90 nm, com interconexo em cobre, freqncia interna de operao mxima de 500 MHz para a lgica e de 1 GHz para interfaces seriais rpidas.

    Os dispositivos que compem esta famlia so apresentados na Tabela 1 a seguir.

    Tab. 1 : Dispositivos Da famlia Stratix II

    Na Fig. 1 pode-se ver o diagrama de uma FPGA da famlia Stratix II, mostrando a localizao dos principais recursos do dispositivo.

    Fig. 1 : Diagrama de um dispositivo Stratix II

    Os pricipais recursos disponveis nas FPGAs da famlia Stratix II so:

  • ALMs : Adaptative Logic Modules so os mdulos individuais que implementam os circuitos lgicos combinatrios e registrados de um circuito digital. composto por uma tabela adaptativa com duas sadas (ALUT Adaptative Look Up Table), que implementa lgica combinatria, podendo implementar funes lgicas de 1 at 7 entradas, um somador por hardware e dois flip-flops,conectados sada da ALUT ou sada dos somadores. O diagrama de uma ALM pode ser visto na Fig. 2 abaixo.

    Fig. 2 : Diagrama de um ALM

    As ALMs so capazes de implementar circuitos lgicos e registrados de projetos de processamento DSP, alm de somadores e, de forma menos eficiente, multiplicadores. nas ALMs tambm que so implementadas as mquinas de estados necessrias implementao de circuitos seqenciais complexos, tais como controle de loops, sistemas de tomada de deciso e outros circuitos similares.

    MACs : As MACs (Multiply-Add-Accumulate) so sistemas complexos, capazes de executar operaes de multiplicao, soma, deslocamento e acumular o resultado em pipeline, com a execuo em mdia de uma operao por ciclo de relgio, em freqncias de at 370 MHz. Cada MAC pode ser usada como uma nica MAC de 36x36 bits de entrada e 72 bits de sada, quatro MACs de 18x18 e 36 bits de sada ou como 8 MACs de 9x9 e com 18 bits de sada. Podem ainda ser configuradas para no executar a soma e o deslocamento, operando assim apenas como multiplicadores. Na Fig. 3 pode ser visto o diagrama de uma MAC.

    Fig. 3 : Diagrama de uma MAC

    As MACs so os elementos centrais de processamento DSP, sendo cada MAC equivalente a uma unidade de processamento de um processador DSP. Na Famlia Stratix II, o menor dispositivo tem 16 MACs e o maior 96.

    Memria : A famlia Stratix II tem um sistema interno de memria baseado no conceito TriMatrix, com mdulos de memria de trs tamanhos diferentes : M512, com 512 bits, M4K, com 4K bits e M-RAM com 512 Kbits de memria. Os blocos de memria podem ser utilizados para implementar memria do tipo Simple-Port, Simple Dual-Port e True Dual-port, sendo que cada bloco de memria pode ser configurado para acessos de 1 a 36 bits, com sinais de byte enable ao se configurar o bloco de memria com acesso de 16 bits ou mais. Quando configurados com tamanho de palavra de 8 bits ou mais, pode-se configurar o bloco de memria para incluir um bit extra por byte, usado como paridade para o referido byte.

    O nmero de blocos de memria de cada densidade inversamente proporcional capacidade do bloco, sendo o nmero de blocos M512 grande, menor de M4K e poucos blocos M-RAM disponveis. A capacidade de transferncia de dados para cada tipo de bloco proporcional ao nmero de blocos de memria disponveis, conforme pode ser visto na Fig. 4.

    Fig. 4 : Densidade e capacidade de trasnferncia dos blocos de RAM

    Na Fig. 5 so mostrados os recursos disponveis em cada tipo de bloco de memria.

    Fig. 5 : Recursos dos blocos de memria

  • Pinos de Entrada e Sada : Os dispositivos da famlia Stratix II tm pinos de entrada e sada capazes de serem configurados para fazer interface com circuitos externos em uma srie de padres eltricos diferentes, tais como LVTTL, LVCMOS, PCI, PCI-X, LVDS, LVPECL, HyperTransport, SSTL e HSTL classe I e II. O circuito de entrada e sada permite ainda que se implementem circuitos de interface com memria rpida, do tipo SDRAM (Syncronous DRAM), DDR (Double Data Rate) e DDR2 (Double Data Rate de segunda gerao), QDR (Quad Data Rate) e QDR2.

    Fig. 6 : Diagrama de um pino de ES

    Alguns dos pinos de entrada e sada podem ainda ser utilizados para implementar interfaces seriais rpidas, com taxa de transferncia de at 1 Gbps por pino. Nos dispositivos Stratix II, a interface SerDes rpida implementada em hardware, no prprio pino de entrada e sada , permitindo a transferncia de dados taxa mxima de 1 Gbps. O sistema tem ainda implementado em hardware um circuito de alinhamento de fase automtico, conforme pode ser visto na Fig. 7.

    Fig. 7 : Interface Serial rpida

    Os pinos de entrada e sada so utilizados para implementar a interface com dispositivos externos FPGA, alm de implementarem sistemas de interface com dispositivos de memria externa do tipo SDRAM, DDR, DDR2, QDR, QDR2, RAM e FLASH, entre outros. Permitem ainda implementar interface com dispositivos como conversores A/D e D/A, codecs de udio e vdeo,

    alm de interface com processadores normais e DSP externos.

    Relgios globais e Locais : Um dos grandes desafios no projeto de dispositivos do tipo Gate Array o controle do atraso dos sinais de relgio para que todos os flip-flops do circuito sejam sincronizados corretamente. Nas FPGAs da famlia Stratix II este desafio foi resolvido com a implementao em hardware de 16 sinais de relgio globais, que tem o tempo de propagao ajustado para que chegue com diferena de tempo de atraso mnimo a todos os flip-flops. Alm dos 16 sinais de relgio global, h ainda 32 sinais de relgio chamados sinais de relgio regional, que so distribudos 8 por cada quadrante do dispositivo e tem as mesmas caractersticas de tempo de propagao que os sinais globais. Na Fig. 8 pode-se ver a distribuio dos sinais de relgio globais e regionais.

    Fig. 8 : Diagrama de distribuio de relgios Globais e Locais em uma FPGA Stratix II

    Os sinais de relgio globais e regionais so utilizados na implementao de qualquer circuito registrado sncrono, garantindo o funcionamento correto do mesmo independente do nmero de flip-flops presente no circuito e da posio dos mesmos no dispositivo.

    PLLs : Circuitos complexos de processamento DSP em geral necessitam de mais de uma freqncia de relgio para operar. Para gerar as diversas freqncias de relgio necessrias operao de diferentes mdulos dos circuitos, os dispositivos Stratix II tm seis ou doze PLLs disponveis, sendo 2 ou 4 PLLs do tipo Enhanced PLL e 4 ou 8 do tipo Fast PLL. As principais diferenas entre os dois tipos de PLLs so os recursos de cada PLL e quais parmetros podem ser configurados durante a operao em cada um

  • deles. Os PLLs do tipo Enhanced tm como recursos extras a possibilidade de chaveamento automtico do sinal de referncia, a possibilidade de implementar Spread Spectrum (+/- 500 KHz em torno da freqncia central de operao) e duas sadas a mais que os PLLs do tipo Fast. Nas Fig. 9 e 10 so apresentados os diagramas de blocos dos PLLs do tipo Enhanced e Fast, respectivamente.

    Fig. 9 : Diagrama de blocos de um PLL do tipo Enhanced

    Fig. 10 : Diagrama de blocos de um PLL do tipo Fast

    O desenvolvimento de algoritmos DSP

    O processo de desenvolvimento de um novo algoritmo DSP feito, normalmente, com o auxlio de ferramentas de desenvolvimento voltadas para aplicaes matemticas, utilizando sistemas de desenvolvimento tais como MATLAB, da Mathworks, Matematica, MatCad e afins. No processo de desenvolvimento, a funo destes softwares a de prover um ambiente de simulao para desenvolver o algoritmo utilizando uma linguagem de desenvolvimento, simular o algoritmo e comparar o resultado da simulao com os valores esperados validando assim o algoritmo desenvolvido.

    O sistema de desenvolvimento mais utilizado hoje o MATLAB[5], da Mathworks, empresa fundada em 1984. O MATLAB oferece um ambiente para desenvimento de algoritmos em dois nveis, o desenvolvimento do algoritmo utilizando uma linguagem proprietria para descrio de algoritmos, semelhante ao C, com arquivos .M no

    prprio ambiente do MATLAB, e um ambiente para desenvolvimento de sistemas, um ambiente grfico, onde podem ser instanciados blocos desenvolvidos em .M, chamado SIMULINK[6].

    O uso integrado destas duas ferramentas permite o desenvolvimento de algoritmos e sistemas de forma muito eficiente, permitindo desenvolver partes do algoritmo em .M, simular estas partes individualmente e depois integr-las no sistema completo, simular o sistema e verificar o resultado final. O sistema de desenvolvimento permite ainda, uma vez concludo o desenvolvimento e a simulao do sistema, gerar programas em C ou cdigo de descrio de hardware com a implementao do sistema completo utilizando ferramentas de implementao. Na Fig. 11 pode-se ver o fluxo de projeto completo utlizando o MATLAB e o SIMULINK.

    Fig. 11 : Desenvolvimento de sistemas no MATLAB/SIMULINK

    Outros recursos oferecidos pelo MATLAB so interface com sistemas de aquisio de dados e gerao de sinais, interface com aplicativos para gerao automtica de relatrios e visualizao grfica dos resultados de simulao e conjuntos de funes prontas para aplicaes especficas chamadas Toolboxes. Para o SIMULINK, dispe ainda de conjuntos de funes pr-definidas, tais como geradores de funes, sistemas de verificao de resultados e diversas outras funes especficas, tais como funes de controle, de processamento DSP voltadas para aplicaes especficas como redes neurais, organizadas em blocksets.

    Na Fig. 12 pode-se ver a organizao funcional do MATLAB e do SIMULINK.

  • Fig. 12 : Organizao funcional do sistema

    O MATLAB oferece um ambiente de desenvolvimento voltado para desenvimento de arquivos em formato .M, arquivos escritos em linguagem de descrio de funes e operaes proprietria da Mathworks. Na Fig. 13 pode ser vista uma janela do MALAB com os diversos elementos presentes na interface.

    Fig. 12 : Janela do MATLAB

    O SIMULINK o ambiente grfico de desenvolvimento de sistemas que roda utilizando os recursos do MATLAB. Do MATLAB ele pode ser iniciado, como pode ser visto no detalhe em vermelho da Fig. 12. A janela do SIMULINK com um modelo implementado pode ser vista na Fig. 13 a seguir, mostrando ainda uma janela grfica de resultados, uma janela com a converso do sistema para um programa em C e uma janela do MATLAB utilizada para enviar comandos para o sistema.

    Fig. 13 : Janelas do SIMULINK

    Implementando algoritmos DSP em FPGAs

    A implementao de algoritmos DSP em FPGAs normalmente feita em duas etapas: na primeira etapa o algoritmo desenvolvido e simulado em um ambiente de desenvolvimento como o MATLAB. Uma vez concluda a etapa de desenvolvimento, e estando a simulao do algoritmo concluda e de acordo com as especificaes iniciais do algoritmo, inicia-se a segunda etapa que a converso do algoritmo para uma linguagem de descrio de hardware e a implementao do mesmo em hardware. Como todo desenvolvimento para FPGA, esta etapa desenvolvida em diversas fases, conforme mostra a Fig. 14 a seguir.

    Fig. 14 : Fases do desenvolvimento de um projeto em FPGA

    A especificao do projeto a implementao do algoritmo desenvolvida no MATLAB e no SIMULINK. A partir desta especificao se cria um cdigo HDL (Linguagem de Descrio de Hardware) em RTL (Regiter Transfer Level), simula-se o cdigo RTL gerado, e a partir do momento que a simulao do cdigo RTL est coerente com o resultado da simulao obtida no MATLAB/SIMULINK, compila-se o cdigo RTL, faz-se a anlise de tempos do projeto, simula-se o resultado da compilao j com os atrasos internos do componente includos nesta simulao, grava-se o componente e testa-se o sistema completo.

    Este o fluxo de projeto natural para implementao de algoritmos e funes DSP em FPGA. O que ser apresentado a seguir o DSP Builder, ferramenta que permite integrar os dois fluxos de desenvolvimento em uma nica ferramenta.

  • O DSP Builder

    O DSP Builder uma ferramenta de desenvolvimento que integra em um nico ambiente os fluxos de projeto do MATLAB e de FPGA, permitindo de forma simples e direta implementar um algoritmo DSP utilizando recusos do DSP Builder (Blocos para o SIMULINK) no SIMULINK, simular o sistema criado e, uma vez que a fase do desenvolvimento tenha sido concluda, converter o algoritmo para cdigo RTL em HDL, simular o cdigo RTL utilizando os mesmos vetores de teste utilizados no SIMULINK e finalmente compilar o projeto, carreg-lo em hardware e testar em hardware o sistema completo. Na Fig. 15 pode ser visto o fluxo de projeto completo utilizando o DSP Builder.

    Fig. 15 : Fluxo de projeto com o DSP Builder

    Aps a instalao, o DSP Builder acrescenta uma nova biblioteca de blocksets ao SIMULINK, chamada DSP Builder, onde so includos modelos .M e .MDL (Linguagem de descrio dos blocos do SIMULINK) ao sistema. Estes blocos contm a descrio das funes bsicas disponveis em .MDL e .M, alm de terem associadas a respectiva descrio em HDL da funcionalidade equivalente a ser implementada em hardware. Alm dos blocos que implementam funes bsicas, o DSP Builder permite a incluso de blocos que permitem converter o projeto para HDL, compilar o cdigo HDL gerado, configurar o componente e simular o cdigo RTL gerado utilizando o ModelSim, ferramenta de simulao da Mentor Graphics. Inclui ainda blocos que permitem fazer a interface direta com as placas de desenvolvimento DSP disponveis na Altera, tais como utilizar pinos de entrada especficos, utilizar de forma direta os conversores A/D e D/A disponveis na placa, acessar os LEDs e chaves da placa, entre outros recursos.

    Na Fig. 16 mostrada a relao das bibliotecas de blocksets disponveis no SIMULINK aps a instalao do DSP Builder. Ser a seguir feita uma breve descrio das funes disponveis em cada biblioteca do DSP Builder.

    Fig. 15 : Bibliotecas disponveis no DSP Builder

    As principais bibliotecas disponveis so:

    AltLab Biblioteca de sistemas especficos de dispositivos Altera, que permitem controlar a compilao, simulao e verificao dos dispositivos, criar novos modelos, importar modelos VHDL para formato .M/.MDL e criar subsistemas novos.

    Arithmetic Biblioteca com as funes aritmticas bsicas para valores inteiros.

    Boards : Biblioteca com as especificaes das placas existentes para as quais h suporte direto no DSP Builder e os recursos disponveis em cada placa.

    Complex Type Nesta biblioteca esto presentes as funes para tratamento de nmeros complexos, incluindo a formao de um valor complexo a partir de dois valores inteiros, o desmembramento de um nmero complexo em dois valores inteiros, um com a parte real e outro com a imaginria, e as operaes aritmticas entre valores complexos.

    Gate & Control : Biblioteca com blocos lgicos bsicos (AND, OR, XOR, FF, etc ...) e mdulos de controle digitais simples, tais como MUX, decodificadores e geradores de padro.

    IO & Bus : Incluem os mdulos de interface com entrada e sada (Sinais de entrada, sada e entrada/sada do dispositivo) e os sistemas de converso e manipulao de barramentos de dados.

  • Rate Change : Biblioteca com os mdulos que permitem alterar a freqncia de operao de uma determinada parte do projeto. Inclui PLLs, geradores de taxa de amostragem e conjuntos de flip-flops operando em freqncias diferentes.

    SOPC Builder Links: Uma das funcionalidades disponveis no DSP Builder a gerao de mdulos para o NIOS II, processador do tipo SoftCore da Altera. Esta biblioteca permite incluir os sinais de interface necessrios criao de um perifrico ou de uma instruo proprietria para o NIOS II.

    State Machine Functions : Permite implementar mquinas de estado, permitindo definir os sinais de entrada, sada e os estados, bem como as condies de transio de estado.

    Storage : Inclui os elementos de armazenamento disponveis, como blocos de RAM, ROM, FIFO, Shift Registers, LUT, LFSR, entre outros.

    Megacore Functions : Muitas vezes necessrio o uso de funes complexas no projeto para as quais j existem implementaes prontas, tais como filtros FIR, NCOs (Numerically Controlled Oscilator), FFTs, IFFTs, entre outros. Nesta categoria de funes esto includas as funes complexas de DSP desenvolvidas pela Altera e que podem ser inclusas no projeto de forma imediata, bastando configurar os parmetros da funo e inclu-la no projeto como um novo bloco.

    Para avaliar o DSP Builder, inicialmente precisa-se de um PC rodando Windows verses 2000 ou XP, o Quartus II e o Matlab instalados e habilitados rodando na mquina.

    Para instalar o Quartus II, baixe-o gratuitamente do site da Altera[7] e instale a licena para o Quartus pedida tambm no site da Altera [8].

    Uma verso de avaliao do Matlab pode ser obtido gratuitamente no site da Matworks[9]. Esta verso de avaliao do Matlab funcionar por 30 dias aps ser baixada e instalada.

    Uma verso gratuita do DSP Builder pode ser baixada gratuitamente do site da Altera[10]. O DSP Builder deve ser o ltimo pacote de software a ser instalado. Aps completar a instalao do DSP Builder, um passo extra deve ser feito para completar sua instalao no Matlab. As instrues deste passo final se encontram em uma janela aberta pelo programa de instalao do DSP Builder ao final da execuo do mesmo.

    A verso gratuita do DSP Builder completamente funcional para o Matlab,

    permitindo a construo de modelos e a simulao dos mesmos, mas no gera cdigo VHDL que possa ser implementado em FPGAs como a verso completa.

    Aps baixar e instalar todos os pacotes de software acima em um PC rodando Windows 2000 ou XP e com o Matlab instalado e habilitado, pode-se iniciar a construo de modelos e a simulao dos mesmos.

    Vantagens e limitaes do uso de FPGAs na implementao de algoritmos DSP

    Na implementao de um algoritmo DSP utilizando um processador DSP o algoritmo implementado inicialmente em uma linguagem de programao, geralmente C/C++, compilado para o processador DSP a ser usado e executado. O processador DSP atualmente com maior poder de processamento tem implementadas internamente seis MACs que operam em paralelo sobre conjuntos de dados, permitindo a execuo simultnea de seis operaes de processamento DSP em um ciclo de relgio. Um exemplo de processadores DSP com esta caracterstica so os processadores da linha TMS320C6xx, da Texas Instruments. A maioria dos processadores DSP disponveis no mercado, entretanto, tem apenas uma MAC, e apenas uma operao DSP pode ser implementada em um determinado ciclo de relgio. Alm desta limitao, antes de executar uma operao sobre um conjunto de dados, o dado ou conjunto de dados deve inicialmente ser carregado em um registrador ou em uma memria interna do DSP antes de ser processado, o que acarreta em um tempo maior de processamento.

    As principais vantagens da implementao em FPGA sobre processadores DSP de algoritmos DSP so:

    1) Uso paralelo de recursos. Em implementaes em FPGA de algoritmos DSP, pode-se implementar o nmero de MACs desejado para implementar o algoritmo, sendo que cada MAC ou conjunto de MACs pode ser usado para implementar partes do algoritmo seqencialmente ou em paralelo. O maior dispositivo Altera disponvel hoje, o EP2S180, com 180K LEs, disponibiliza 96 MACs de 36 bits, e estas MACs podem ser utilizadas como recurso de processamento.

    2) Implementao de algoritmos em pipeline. a capacidade de se implementar uma srie de operaes necessrias a implementao do algoritmo de forma seqencial, sendo cada MAC ou conjunto de MACs responsvel pela

  • implementao de uma parte do algoritmo e o algoritmo sendo implementado de forma seqencial, onde cada parte da seqncia do algoritmo realizada em uma parte do dispositivo e o processamento completo sendo realizado seqencialmente. Neste tipo de arquitetura, cada etapa do algoritmo executada ao mesmo tempo que as etapas anteriores so executadas para outros conjuntos de dados, de modo que em um determinado instante todas as estapas do algoritmo esto sendo executadas ao mesmo tempo sobre conjuntos de dados diferentes.

    3) Maior capacidade de processamento paralelo pelo uso conjunto de MACs e blocos de memria. Alm da vantagem de possuir maior numero de MACs que um processador DSP, as FPGAs ainda contam com memria interna que pode ser utilizada em conjunto com as MACs permitindo assim a criao de mdulos de processamento compostos por memria, lgica de controle e blocos de memria que armazenam blocos de dados de entrada e de sada, permitindo reduzir em muito o tempo gasto por um processador DSP normal para ler os dados a serem processados e escrever os resultados na memria. Para se ter uma idia do ganho de performance que pode ser obtido com este recurso, imaginemos a implementao de um filtro FIR. Em um filtro FIR, cada dado de sada o resultado da somatria da seqncia de dados de entrada multiplicada por um coeficiente para cada dado de entrada. Para um filtro fir de 16 TAPs, a equao da sada : Dout = Di*Ci para i=0 at 15. Em um DSP normal, para cada interao so gastos pelo menos 3 ciclos de relgio, sendo um para ler um dado da memria e armazenar o dado em um registrador, outro para ler o coeficiente da memria e armazenar em outro registrador e finalmente um terceiro ciclo de relgio para calcular o resultado intermedirio e armazenar na MAC o resultado. Em uma FPGA toda operao seria realizada em um nico ciclo de relgio, sendo o dado lido de um registrador de deslocamento, o coeficiente de uma memria e o resultado armazenado na MAC em um nico ciclo de relgio. Se forem usadas 16 MACs para criar uma implementao paralela do filtro, o clculo de uma nova sada do filtro gastaria apenas um ciclo de relgio na implementao em FPGA contra 48 ciclos de relgio gastos para calcular o mesmo resultado em um processador DSP.

    4) Uso de recursos da FPGA para implementar novas MACs. Alm das MACs disponveis na

    FPGAs, os elementos lgicos e blocos de memria da FPGA podem ainda ser utilizados para criar novas MACs, com desempenho um pouco inferior as MACs implementadas em hardware j disponveis na FPGA mas ainda assim operando em freqncias acima de 200 MHz e sendo capaz de aumentar a capacidade de processamento DSP da FPGA.

    5) Uso da lgica da FPGA para criar sistemas de controle de operao e do fluxo de dados para permitir a implementao dos algoritmos em paralelo e/ou em pipeline.

    A implementao de algoritmos DSP em FPGAs tem, tambm, algumas limitaes se comparadas implementao do mesmo algoritmo em DSP, e as principais so:

    1) O tempo de desenvolvimento para a implementao de algoritmos DSP em FPGA , em geral, muito maior que a implementao do mesmo algoritmo DSP em processamedores DSP. Entretanto, o uso do DSP Builder pode reduzir significativamente este tempo de desenvolvimento.

    2) A complexidade da implementao de um algoritmo em FPGA bem maior que a implementao do mesmo algoritmo em processadores DSP, por envolver alm do fluxo de projeto normal do algoritmo, o fluxo de projeto de hardware em FPGA.

    3) Existem disponveis, de forma gratuita, inclusive, muito mais projetos e programas referncia de implementao de algoritmos para DSP que modelos HDL de implementao destes algoritmos para FPGA.

    4) Para processamento de algoritmos que envolvam baixa capacidade de processamento, como para processamento de som para poucos canais e de imagem de baixa resoluo, a soluo utilizando processadores DSP tem um custo menor que a implementao do mesmo algoritmo em FPGA.

    Criando e Simulando modelos com o DSP Builder

    Com todo o sistema de desenvolvimento instalado, pode-se finalmente iniciar a construo e simulao de modelos utilizando do DSP Builder.

    A construo e simulao de um modelo no SIMULINK utilizando os blocos do DSP Builder muito simples e direta. Inicialmente abre-se um novo modelo .MDL no SIMULINK, salva-se o

  • modelo no diretrio desejado e com o nome desejado. A seguir arrastam-se os blocos desejados para o novo modelo em construo. A interligao dos blocos entre si para montar o modelo desejado feita utilizando-se os recursos do SIMULINK. Uma vez o modelo tenha sido construdo, a simulao feita com o uso do boto de simulao da barra de ferramentas do SIMULINK.

    Alguns cuidados devem ser tomados ao se construir um modelo com o DSP Builder para permitir a implementao em FPGA do mesmo.

    Os principais cuidados so:

    Somente se deve utilizar no modelo em construo que ser convertido para VHDL a ser utilizado na implementao em FPGA posteriormente blocos disponveis no DSP Builder. Se forem utilizados blocos de outros Toolbox que no o DSP Builder, estes blocos no sero implementados em VHDL.

    Podem ser utilizados os Sinks e Sources do Toolbox Simulink sem problemas, desde que os blocos utilizados seja utilizados apenas para gerar os sinais de entrada e para monitorar os resutados intermedirios e finais do modelo em construo. Para analisar o que ocorre efetivamente no modelo implementado em FPGA devem ser utilizados os recursos do SignalTap II disponveis, que permitem monitorar sinais na implementao em FPGA do modelo.

    No SIMULINK, a criao de submdulos a partir de uma parte do circuito feita de forma automtica, e muito simples de ser usada, mas a criao de submdulos para o DSP Builder no pode ser feita utilizando esta ferramenta. A forma correta de implementar submdulos para o DSP Builder utilizando o bloco HDL SubSystem disponvel na bliblioteca AltLab do DSP Builder. Utilizando esta opo pode-se criar um ou mais submdulos que sero corretamente inseridos no sistema final e convertidos para VHDL.

    Para se trabalhar com uma placa especfica, alm do bloco SignalCompiler, deve-se inserir no modelo o smbolo da placa a ser usada. Por exemplo, para se desenvolver um projeto para a placa DSP Development Board Cyclone II Edition, deve-se inserir o bloco Altera Cyclone II EP2C35 DSP Development Board disponvel na biblioteca Altera Cyclone II EP2C35 DSP Development Board da biblioteca Boards

    do DSP Builder. Outro cuidado a ser tomado para que os recursos sejam utilizados corretamente e as especificaes de pinagem sejam feitas de forma correta que ao se executar o SignalCompiler, seja selecionado como dispositivo a ser usado (Opo Device da janela principal) a opo Development Board, associando assim o projeto a uma placa de desenvolvimento.

    Ao se selecionar uma placa de desenvolvimento especfica, s se pode usar PLLs em um modelo dentro de submdulos.

    A melhor forma de se aprender a utilizar uma nova ferramenta atravs da implementao de um projeto exemplo, onde todos os passos necessrios implementao do sistema so mostrados.

    Como exemplos completos da implementao de sistemas no DSP Builder, esto disponveis os seguintes recursos:

    1) No prprio DSP Builder h um projeto exemplo, um Tutorial de um sistema de modulao AM (S o modulador). Este tutorial pode ser acessado no Help do SIMULINK, selecionando a opo Help on Selected Book. Selecionar a orelha Demos e nesta orelha selecionar DSP Builder. Em DSP Builder, selecionar DSP Builder Tutorial e seguir passo a passo as instrues ali contidas.

    2) Baixar do site da Altera o exemplo NCO[11], que vem com instruo detalhada de como montar o sistema. Para tal, baixar o arquivo NCO.ZIP do site da PI Componentes e o documento de instrues InstrucoesNCO.PDF e instalar em C:/NCO. Este exemplo implementa um oscilador NCO (Numerically Controlled Oscilator) baseado em uma ROM. Este modelo pode ser simulado e implementado em FPGA.

    3) Baixar do site da PI Componentes o arquivo MODULADORAM.ZIP[12] e instalar em C:\MODULADORAM. A seguir, simular o modelo. Este modelo implementa um transmissor AM completo, composto por dois moduladores NCO e um modulador AM. Este modelo foi implementado para uma placa DSP Development Board Cyclone II Edition.

    Concluso

  • Para implementar sistemas com alta capacidade de processamento DSP necessrios implementao dos novos algoritmos existentes que exigem alto desempenho, as FPGAs so uma das melhores opes disponveis hoje.

    A soluo da Altera para implementao de algoritmos DSP em FPGA inclui novas famlias de FPGA com uma srie de recursos voltados para implementao destes algoritmos e um sistema de desenvolvimento que integra os ciclos de projeto do algoritmo na ferramenta de projeto de alto nvel

    e simulao, o MATLAB/SIMULINK e de desenvolvimento de FPGA, o Quartus II, o DSP Builder.

    Neste artigo foram apresentados os recursos existentes nas novas FPGAs da famlia Stratix II para implementao de algoritmos DSP, foram abordadas as pricipais etapas de desenvolvimento do ciclo de projeto de algoritmos DSP e de projetos em FPGA e como o DSP Builder capaz de integrar em um nico ambiente as duas etapas do ciclo de desenvolvimento.

    Bibliografia

    [1] TMS320C6727, Floating-Point Digital Signal Processor Disponvel em

    [2] H.264 / MPEG-4 Part 10 Tutorials Disponvel em

    [3] Orthogonal Frequency Division Multiplexing (OFDM) Disponvel em

    [4] Stratix II Devices: The Biggest & Fastest FPGAs Disponvel em

    [5] MATLAB - The Language of Technical Computing Disponvel em

    [6] Simulink - Simulation and Model-Based Design Disponvel em

    [DSPBuilder] DSP Builder Disponvel em

    [7] Verso gratuita do Quartus II para ser baixada da internet Disponvel em

    [8] Licena do Quartus II : Selecionar opo Quartus II Web Edition Software Disponvel em

    [9] Verso de avaliao do Matlab para ser baixada da internet Disponvel em

    [10] Verso do DSP Builder para ser baixada da internet Disponvel em

    [11] Exemplo com instrues para a construo passo a passo de um NCO usando o DSP Builder Disponvel em

    [12] Exemplo de um modulador AM baseado no exemplo do NCO usando o DSP Builder Disponvel em