Implementando sistemas DSP em FPGAprofessorcesarcosta.com.br/upload/imagens_upload/... ·...

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:

Transcript of Implementando sistemas DSP em FPGAprofessorcesarcosta.com.br/upload/imagens_upload/... ·...

Page 1: Implementando sistemas DSP em FPGAprofessorcesarcosta.com.br/upload/imagens_upload/... · Introdução Os modernos algoritmos necessários para a implementação dos novos padrões

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:

Page 2: Implementando sistemas DSP em FPGAprofessorcesarcosta.com.br/upload/imagens_upload/... · Introdução Os modernos algoritmos necessários para a implementação dos novos padrões

ALMs : Adaptative Logic Modules são os módulos individuais que implementam os circuitos lógicos combinatórios e registrados de um circuito digital. É composto por uma tabela adaptativa com duas saídas (ALUT – Adaptative Look Up Table), que implementa lógica combinatória, podendo implementar funções lógicas de 1 até 7 entradas, um somador por hardware e dois flip-flops,conectados à saída da ALUT ou à saída dos somadores. O diagrama de uma ALM pode ser visto na Fig. 2 abaixo.

Fig. 2 : Diagrama de um ALM

As ALMs são capazes de implementar circuitos lógicos e registrados de projetos de processamento DSP, além de somadores e, de forma menos eficiente, multiplicadores. É nas ALMs também que são implementadas as máquinas de estados necessárias à implementação de circuitos seqüenciais complexos, tais como controle de loops, sistemas de tomada de decisão e outros circuitos similares. MACs : As MACs (Multiply-Add-Accumulate) são sistemas complexos, capazes de executar operações de multiplicação, soma, deslocamento e acumular o resultado em pipeline, com a execução em média de uma operação por ciclo de relógio, em freqüências de até 370 MHz. Cada MAC pode ser usada como uma única MAC de 36x36 bits de entrada e 72 bits de saída, quatro MACs de 18x18 e 36 bits de saída ou como 8 MACs de 9x9 e com 18 bits de saída. Podem ainda ser configuradas para não 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 são os elementos centrais de processamento DSP, sendo cada MAC equivalente a uma unidade de processamento de um processador DSP. Na Família Stratix II, o menor dispositivo tem 16 MACs e o maior 96. Memória : A família Stratix II tem um sistema interno de memória baseado no conceito TriMatrix, com módulos de memória de três tamanhos diferentes : M512, com 512 bits, M4K, com 4K bits e M-RAM com 512 Kbits de memória. Os blocos de memória podem ser utilizados para implementar memória do tipo Simple-Port, Simple Dual-Port e True Dual-port, sendo que cada bloco de memória pode ser configurado para acessos de 1 a 36 bits, com sinais de byte enable ao se configurar o bloco de memória com acesso de 16 bits ou mais. Quando configurados com tamanho de palavra de 8 bits ou mais, pode-se configurar o bloco de memória para incluir um bit extra por byte, usado como paridade para o referido byte. O número de blocos de memória de cada densidade é inversamente proporcional à capacidade do bloco, sendo o número de blocos M512 grande, menor de M4K e poucos blocos M-RAM disponíveis. A capacidade de transferência de dados para cada tipo de bloco é proporcional ao número de blocos de memória disponíveis, conforme pode ser visto na Fig. 4.

Fig. 4 : Densidade e capacidade de trasnferência

dos blocos de RAM Na Fig. 5 são mostrados os recursos disponíveis em cada tipo de bloco de memória.

Fig. 5 : Recursos dos blocos de memória

Page 3: Implementando sistemas DSP em FPGAprofessorcesarcosta.com.br/upload/imagens_upload/... · Introdução Os modernos algoritmos necessários para a implementação dos novos padrões

Pinos de Entrada e Saída : Os dispositivos da família Stratix II têm pinos de entrada e saída capazes de serem configurados para fazer interface com circuitos externos em uma série de padrões elétricos diferentes, tais como LVTTL, LVCMOS, PCI, PCI-X, LVDS, LVPECL, HyperTransport, SSTL e HSTL classe I e II. O circuito de entrada e saída permite ainda que se implementem circuitos de interface com memória rápida, do tipo SDRAM (Syncronous DRAM), DDR (Double Data Rate) e DDR2 (Double Data Rate de segunda geração), QDR (Quad Data Rate) e QDR2.

Fig. 6 : Diagrama de um pino de ES

Alguns dos pinos de entrada e saída podem ainda ser utilizados para implementar interfaces seriais rápidas, com taxa de transferência de até 1 Gbps por pino. Nos dispositivos Stratix II, a interface SerDes rápida é implementada em hardware, no próprio pino de entrada e saída , permitindo a transferência de dados à taxa máxima de 1 Gbps. O sistema tem ainda implementado em hardware um circuito de alinhamento de fase automático, conforme pode ser visto na Fig. 7.

Fig. 7 : Interface Serial rápida

Os pinos de entrada e saída são utilizados para implementar a interface com dispositivos externos à FPGA, além de implementarem sistemas de interface com dispositivos de memória 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 vídeo,

além de interface com processadores normais e DSP externos. Relógios globais e Locais : Um dos grandes desafios no projeto de dispositivos do tipo Gate Array é o controle do atraso dos sinais de relógio para que todos os flip-flops do circuito sejam sincronizados corretamente. Nas FPGAs da família Stratix II este desafio foi resolvido com a implementação em hardware de 16 sinais de relógio globais, que tem o tempo de propagação ajustado para que chegue com diferença de tempo de atraso mínimo a todos os flip-flops. Além dos 16 sinais de relógio global, há ainda 32 sinais de relógio chamados sinais de relógio regional, que são distribuídos 8 por cada quadrante do dispositivo e tem as mesmas características de tempo de propagação que os sinais globais. Na Fig. 8 pode-se ver a distribuição dos sinais de relógio globais e regionais.

Fig. 8 : Diagrama de distribuição de relógios

Globais e Locais em uma FPGA Stratix II Os sinais de relógio globais e regionais são utilizados na implementação de qualquer circuito registrado síncrono, garantindo o funcionamento correto do mesmo independente do número de flip-flops presente no circuito e da posição dos mesmos no dispositivo. PLLs : Circuitos complexos de processamento DSP em geral necessitam de mais de uma freqüência de relógio para operar. Para gerar as diversas freqüências de relógio necessárias à operação de diferentes módulos dos circuitos, os dispositivos Stratix II têm seis ou doze PLLs disponíveis, sendo 2 ou 4 PLLs do tipo Enhanced PLL e 4 ou 8 do tipo Fast PLL. As principais diferenças entre os dois tipos de PLLs são os recursos de cada PLL e quais parâmetros podem ser configurados durante a operação em cada um

Page 4: Implementando sistemas DSP em FPGAprofessorcesarcosta.com.br/upload/imagens_upload/... · Introdução Os modernos algoritmos necessários para a implementação dos novos padrões

deles. Os PLLs do tipo Enhanced têm como recursos extras a possibilidade de chaveamento automático do sinal de referência, a possibilidade de implementar Spread Spectrum (+/- 500 KHz em torno da freqüência central de operação) e duas saídas a mais que os PLLs do tipo Fast. Nas Fig. 9 e 10 são 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 auxílio de ferramentas de desenvolvimento voltadas para aplicações matemáticas, utilizando sistemas de desenvolvimento tais como MATLAB, da Mathworks, Matematica, MatCad e afins. No processo de desenvolvimento, a função destes softwares é a de prover um ambiente de simulação para desenvolver o algoritmo utilizando uma linguagem de desenvolvimento, simular o algoritmo e comparar o resultado da simulação 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 níveis, o desenvolvimento do algoritmo utilizando uma linguagem proprietária para descrição de algoritmos, semelhante ao C, com arquivos .M no

próprio ambiente do MATLAB, e um ambiente para desenvolvimento de sistemas, um ambiente gráfico, 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 concluído o desenvolvimento e a simulação do sistema, gerar programas em C ou código de descrição de hardware com a implementação do sistema completo utilizando ferramentas de implementação. 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 são interface com sistemas de aquisição de dados e geração de sinais, interface com aplicativos para geração automática de relatórios e visualização gráfica dos resultados de simulação e conjuntos de funções prontas para aplicações específicas chamadas Toolboxes. Para o SIMULINK, dispõe ainda de conjuntos de funções pré-definidas, tais como geradores de funções, sistemas de verificação de resultados e diversas outras funções específicas, tais como funções de controle, de processamento DSP voltadas para aplicações específicas como redes neurais, organizadas em blocksets. Na Fig. 12 pode-se ver a organização funcional do MATLAB e do SIMULINK.

Page 5: Implementando sistemas DSP em FPGAprofessorcesarcosta.com.br/upload/imagens_upload/... · Introdução Os modernos algoritmos necessários para a implementação dos novos padrões

Fig. 12 : Organização funcional do sistema O MATLAB oferece um ambiente de desenvolvimento voltado para desenvimento de arquivos em formato .M, arquivos escritos em linguagem de descrição de funções e operações proprietária 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 gráfico 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 gráfica de resultados, uma janela com a conversão 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 implementação 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 concluída a etapa de desenvolvimento, e estando a simulação do algoritmo concluída e de acordo com as especificações iniciais do algoritmo, inicia-se a segunda etapa que é a conversão do algoritmo para uma linguagem de descrição de hardware e a implementação 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 especificação do projeto é a implementação do algoritmo desenvolvida no MATLAB e no SIMULINK. A partir desta especificação se cria um código HDL (Linguagem de Descrição de Hardware) em RTL (Regiter Transfer Level), simula-se o código RTL gerado, e a partir do momento que a simulação do código RTL está coerente com o resultado da simulação obtida no MATLAB/SIMULINK, compila-se o código RTL, faz-se a análise de tempos do projeto, simula-se o resultado da compilação já com os atrasos internos do componente incluídos nesta simulação, grava-se o componente e testa-se o sistema completo. Este é o fluxo de projeto natural para implementação de algoritmos e funções 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.

Page 6: Implementando sistemas DSP em FPGAprofessorcesarcosta.com.br/upload/imagens_upload/... · Introdução Os modernos algoritmos necessários para a implementação dos novos padrões

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 concluída, converter o algoritmo para código RTL em HDL, simular o código 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

Após a instalação, o DSP Builder acrescenta uma nova biblioteca de blocksets ao SIMULINK, chamada DSP Builder, onde são incluídos modelos .M e .MDL (Linguagem de descrição dos blocos do SIMULINK) ao sistema. Estes blocos contêm a descrição das funções básicas disponíveis em .MDL e .M, além de terem associadas a respectiva descrição em HDL da funcionalidade equivalente a ser implementada em hardware. Além dos blocos que implementam funções básicas, o DSP Builder permite a inclusão de blocos que permitem converter o projeto para HDL, compilar o código HDL gerado, configurar o componente e simular o código RTL gerado utilizando o ModelSim, ferramenta de simulação da Mentor Graphics. Inclui ainda blocos que permitem fazer a interface direta com as placas de desenvolvimento DSP disponíveis na Altera, tais como utilizar pinos de entrada específicos, utilizar de forma direta os conversores A/D e D/A disponíveis na placa, acessar os LEDs e chaves da placa, entre outros recursos. Na Fig. 16 é mostrada a relação das bibliotecas de blocksets disponíveis no SIMULINK após a instalação do DSP Builder. Será a seguir feita uma breve descrição das funções disponíveis em cada biblioteca do DSP Builder.

Fig. 15 : Bibliotecas disponíveis no DSP Builder

As principais bibliotecas disponíveis são: AltLab – Biblioteca de sistemas específicos de dispositivos Altera, que permitem controlar a compilação, simulação e verificação dos dispositivos, criar novos modelos, importar modelos VHDL para formato .M/.MDL e criar subsistemas novos. Arithmetic – Biblioteca com as funções aritméticas básicas para valores inteiros. Boards : Biblioteca com as especificações das placas existentes para as quais há suporte direto no DSP Builder e os recursos disponíveis em cada placa. Complex Type – Nesta biblioteca estão presentes as funções para tratamento de números complexos, incluindo a formação de um valor complexo a partir de dois valores inteiros, o desmembramento de um número complexo em dois valores inteiros, um com a parte real e outro com a imaginária, e as operações aritméticas entre valores complexos. Gate & Control : Biblioteca com blocos lógicos básicos (AND, OR, XOR, FF, etc ...) e módulos de controle digitais simples, tais como MUX, decodificadores e geradores de padrão. IO & Bus : Incluem os módulos de interface com entrada e saída (Sinais de entrada, saída e entrada/saída do dispositivo) e os sistemas de conversão e manipulação de barramentos de dados.

Page 7: Implementando sistemas DSP em FPGAprofessorcesarcosta.com.br/upload/imagens_upload/... · Introdução Os modernos algoritmos necessários para a implementação dos novos padrões

Rate Change : Biblioteca com os módulos que permitem alterar a freqüência de operação de uma determinada parte do projeto. Inclui PLLs, geradores de taxa de amostragem e conjuntos de flip-flops operando em freqüências diferentes. SOPC Builder Links: Uma das funcionalidades disponíveis no DSP Builder é a geração de módulos para o NIOS II, processador do tipo SoftCore da Altera. Esta biblioteca permite incluir os sinais de interface necessários à criação de um periférico ou de uma instrução proprietária para o NIOS II. State Machine Functions : Permite implementar máquinas de estado, permitindo definir os sinais de entrada, saída e os estados, bem como as condições de transição de estado. Storage : Inclui os elementos de armazenamento disponíveis, como blocos de RAM, ROM, FIFO, Shift Registers, LUT, LFSR, entre outros. Megacore Functions : Muitas vezes é necessário o uso de funções complexas no projeto para as quais já existem implementações prontas, tais como filtros FIR, NCOs (Numerically Controlled Oscilator), FFTs, IFFTs, entre outros. Nesta categoria de funções estão incluídas as funções complexas de DSP desenvolvidas pela Altera e que podem ser inclusas no projeto de forma imediata, bastando configurar os parâmetros da função e incluí-la no projeto como um novo bloco. Para avaliar o DSP Builder, inicialmente precisa-se de um PC rodando Windows versões 2000 ou XP, o Quartus II e o Matlab instalados e habilitados rodando na máquina. Para instalar o Quartus II, baixe-o gratuitamente do site da Altera[7] e instale a licença para o Quartus pedida também no site da Altera [8]. Uma versão de avaliação do Matlab pode ser obtido gratuitamente no site da Matworks[9]. Esta versão de avaliação do Matlab funcionará por 30 dias após ser baixada e instalada. Uma versão 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. Após completar a instalação do DSP Builder, um passo extra deve ser feito para completar sua instalação no Matlab. As instruções deste passo final se encontram em uma janela aberta pelo programa de instalação do DSP Builder ao final da execução do mesmo. A versão gratuita do DSP Builder é completamente funcional para o Matlab,

permitindo a construção de modelos e a simulação dos mesmos, mas não gera código VHDL que possa ser implementado em FPGAs como a versão completa. Após 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 construção de modelos e a simulação dos mesmos. Vantagens e limitações do uso de FPGAs na implementação de algoritmos DSP Na implementação de um algoritmo DSP utilizando um processador DSP o algoritmo é implementado inicialmente em uma linguagem de programação, 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 execução simultânea de seis operações de processamento DSP em um ciclo de relógio. Um exemplo de processadores DSP com esta característica são os processadores da linha TMS320C6xx, da Texas Instruments. A maioria dos processadores DSP disponíveis no mercado, entretanto, tem apenas uma MAC, e apenas uma operação DSP pode ser implementada em um determinado ciclo de relógio. Além desta limitação, antes de executar uma operação sobre um conjunto de dados, o dado ou conjunto de dados deve inicialmente ser carregado em um registrador ou em uma memória interna do DSP antes de ser processado, o que acarreta em um tempo maior de processamento. As principais vantagens da implementação em FPGA sobre processadores DSP de algoritmos DSP são: 1) Uso paralelo de recursos. Em implementações

em FPGA de algoritmos DSP, pode-se implementar o número de MACs desejado para implementar o algoritmo, sendo que cada MAC ou conjunto de MACs pode ser usado para implementar partes do algoritmo seqüencialmente ou em paralelo. O maior dispositivo Altera disponível hoje, o EP2S180, com 180K LEs, disponibiliza 96 MACs de 36 bits, e estas MACs podem ser utilizadas como recurso de processamento.

2) Implementação de algoritmos em pipeline. É a capacidade de se implementar uma série de operações necessárias a implementação do algoritmo de forma seqüencial, sendo cada MAC ou conjunto de MACs responsável pela

Page 8: Implementando sistemas DSP em FPGAprofessorcesarcosta.com.br/upload/imagens_upload/... · Introdução Os modernos algoritmos necessários para a implementação dos novos padrões

implementação de uma parte do algoritmo e o algoritmo sendo implementado de forma seqüencial, onde cada parte da seqüência do algoritmo é realizada em uma parte do dispositivo e o processamento completo sendo realizado seqüencialmente. Neste tipo de arquitetura, cada etapa do algoritmo é executada ao mesmo tempo que as etapas anteriores são executadas para outros conjuntos de dados, de modo que em um determinado instante todas as estapas do algoritmo estão sendo executadas ao mesmo tempo sobre conjuntos de dados diferentes.

3) Maior capacidade de processamento paralelo pelo uso conjunto de MACs e blocos de memória. Além da vantagem de possuir maior numero de MACs que um processador DSP, as FPGAs ainda contam com memória interna que pode ser utilizada em conjunto com as MACs permitindo assim a criação de módulos de processamento compostos por memória, lógica de controle e blocos de memória que armazenam blocos de dados de entrada e de saída, permitindo reduzir em muito o tempo gasto por um processador DSP normal para ler os dados a serem processados e escrever os resultados na memória. Para se ter uma idéia do ganho de performance que pode ser obtido com este recurso, imaginemos a implementação de um filtro FIR. Em um filtro FIR, cada dado de saída é o resultado da somatória da seqüência de dados de entrada multiplicada por um coeficiente para cada dado de entrada. Para um filtro fir de 16 TAPs, a equação da saída é: Dout = � Di*Ci para i=0 até 15. Em um DSP normal, para cada interação são gastos pelo menos 3 ciclos de relógio, sendo um para ler um dado da memória e armazenar o dado em um registrador, outro para ler o coeficiente da memória e armazenar em outro registrador e finalmente um terceiro ciclo de relógio para calcular o resultado intermediário e armazenar na MAC o resultado. Em uma FPGA toda operação seria realizada em um único ciclo de relógio, sendo o dado lido de um registrador de deslocamento, o coeficiente de uma memória e o resultado armazenado na MAC em um único ciclo de relógio. Se forem usadas 16 MACs para criar uma implementação paralela do filtro, o cálculo de uma nova saída do filtro gastaria apenas um ciclo de relógio na implementação em FPGA contra 48 ciclos de relógio gastos para calcular o mesmo resultado em um processador DSP.

4) Uso de recursos da FPGA para implementar novas MACs. Além das MACs disponíveis na

FPGAs, os elementos lógicos e blocos de memória da FPGA podem ainda ser utilizados para criar novas MACs, com desempenho um pouco inferior as MACs implementadas em hardware já disponíveis na FPGA mas ainda assim operando em freqüências acima de 200 MHz e sendo capaz de aumentar a capacidade de processamento DSP da FPGA.

5) Uso da lógica da FPGA para criar sistemas de

controle de operação e do fluxo de dados para permitir a implementação dos algoritmos em paralelo e/ou em pipeline.

A implementação de algoritmos DSP em FPGAs tem, também, algumas limitações se comparadas à implementação do mesmo algoritmo em DSP, e as principais são: 1) O tempo de desenvolvimento para a

implementação de algoritmos DSP em FPGA é, em geral, muito maior que a implementação do mesmo algoritmo DSP em processamedores DSP. Entretanto, o uso do DSP Builder pode reduzir significativamente este tempo de desenvolvimento.

2) A complexidade da implementação de um

algoritmo em FPGA é bem maior que a implementação do mesmo algoritmo em processadores DSP, por envolver além do fluxo de projeto normal do algoritmo, o fluxo de projeto de hardware em FPGA.

3) Existem disponíveis, de forma gratuita,

inclusive, muito mais projetos e programas referência de implementação de algoritmos para DSP que modelos HDL de implementação 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 resolução, a solução utilizando processadores DSP tem um custo menor que a implementação 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 construção e simulação de modelos utilizando do DSP Builder. A construção e simulação 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

Page 9: Implementando sistemas DSP em FPGAprofessorcesarcosta.com.br/upload/imagens_upload/... · Introdução Os modernos algoritmos necessários para a implementação dos novos padrões

modelo no diretório desejado e com o nome desejado. A seguir arrastam-se os blocos desejados para o novo modelo em construção. A interligação dos blocos entre si para montar o modelo desejado é feita utilizando-se os recursos do SIMULINK. Uma vez o modelo tenha sido construído, a simulação é feita com o uso do botão de simulação da barra de ferramentas do SIMULINK. Alguns cuidados devem ser tomados ao se construir um modelo com o DSP Builder para permitir a implementação em FPGA do mesmo. Os principais cuidados são: �� Somente se deve utilizar no modelo em

construção que será convertido para VHDL a ser utilizado na implementação em FPGA posteriormente blocos disponíveis no DSP Builder. Se forem utilizados blocos de outros Toolbox que não o DSP Builder, estes blocos não serão 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 intermediários e finais do modelo em construção. Para analisar o que ocorre efetivamente no modelo implementado em FPGA devem ser utilizados os recursos do SignalTap II disponíveis, que permitem monitorar sinais na implementação em FPGA do modelo.

�� No SIMULINK, a criação de submódulos a

partir de uma parte do circuito é feita de forma automática, e é muito simples de ser usada, mas a criação de submódulos para o DSP Builder não pode ser feita utilizando esta ferramenta. A forma correta de implementar submódulos para o DSP Builder é utilizando o bloco “HDL SubSystem” disponível na bliblioteca AltLab do DSP Builder. Utilizando esta opção pode-se criar um ou mais submódulos que serão corretamente inseridos no sistema final e convertidos para VHDL.

�� Para se trabalhar com uma placa específica,

além do bloco SignalCompiler, deve-se inserir no modelo o símbolo 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” disponível 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 especificações de pinagem sejam feitas de forma correta é que ao se executar o SignalCompiler, seja selecionado como dispositivo a ser usado (Opção “Device” da janela principal) a opção “Development Board”, associando assim o projeto a uma placa de desenvolvimento.

�� Ao se selecionar uma placa de

desenvolvimento específica, só se pode usar PLLs em um modelo dentro de submódulos.

A melhor forma de se aprender a utilizar uma nova ferramenta é através da implementação de um projeto exemplo, onde todos os passos necessários à implementação do sistema são mostrados. Como exemplos completos da implementação de sistemas no DSP Builder, estão disponíveis os seguintes recursos: 1) No próprio DSP Builder há um projeto exemplo, um Tutorial de um sistema de modulação AM (Só o modulador). Este tutorial pode ser acessado no “Help” do SIMULINK, selecionando a opção “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 instruções ali contidas. 2) Baixar do site da Altera o exemplo “NCO”[11], que vem com instrução detalhada de como montar o sistema. Para tal, baixar o arquivo NCO.ZIP do site da PI Componentes e o documento de instruções 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. Conclusão

Page 10: Implementando sistemas DSP em FPGAprofessorcesarcosta.com.br/upload/imagens_upload/... · Introdução Os modernos algoritmos necessários para a implementação dos novos padrões

Para implementar sistemas com alta capacidade de processamento DSP necessários à implementação dos novos algoritmos existentes que exigem alto desempenho, as FPGAs são uma das melhores opções disponíveis hoje. A solução da Altera para implementação de algoritmos DSP em FPGA inclui novas famílias de FPGA com uma série de recursos voltados para implementação destes algoritmos e um sistema de desenvolvimento que integra os ciclos de projeto do algoritmo na ferramenta de projeto de alto nível

e simulação, 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 família Stratix II para implementação 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 Disponível em <http://focus.ti.com/docs/prod/folders/print/tms320c6727.html> [2] H.264 / MPEG-4 Part 10 Tutorials Disponível em <http://www.vcodex.com/h264.html> [3] Orthogonal Frequency Division Multiplexing (OFDM) Disponível em <http://www.complextoreal.com/chapters/ofdm2.pdf> [4] Stratix II Devices: The Biggest & Fastest FPGAs Disponível em <http://www.altera.com/products/devices/stratix2/st2-index.jsp> [5] MATLAB® - The Language of Technical Computing Disponível em <http://www.mathworks.com/products/matlab/> [6] Simulink® - Simulation and Model-Based Design Disponível em <http://www.mathworks.com/products/simulink/> [DSPBuilder] DSP Builder Disponível em <http://www.altera.com/products/software/products/dsp/dsp-builder.html> [7] Versão gratuita do Quartus II para ser baixada da internet Disponível em <http://www.altera.com/products/software/products/quartus2web/sof-quarwebmain.html> [8] Licença do Quartus II : Selecionar opção Quartus® II Web Edition Software Disponível em <http://www.altera.com/support/licensing/lic-index.html> [9] Versão de avaliação do Matlab para ser baixada da internet Disponível em <http://www.mathworks.com/web_downloads/download_trials.html> [10] Versão do DSP Builder para ser baixada da internet Disponível em <http://www.altera.com/products/software/products/dsp/dsp-builder.html> [11] Exemplo com instruções para a construção passo a passo de um NCO usando o DSP Builder Disponível em <http://www.picomponentes.com.br/downloads> [12] Exemplo de um modulador AM baseado no exemplo do NCO usando o DSP Builder Disponível em <http://www.picomponentes.com.br/downloads>