Sunteți pe pagina 1din 65

Centro Universitrio Positivo - UnicenP

Ncleo de Cincias Exatas e Tecnolgicas - NCET


Engenharia da Computao
Eli Renato Barbosa

Filtros Digitais Reconfigurveis

Curitiba
2006
Centro Universitrio Positivo UnicenP
Ncleo de Cincias Exatas e Tecnolgicas NCET
Engenharia da Computao
Eli Renato Barbosa

Filtros Digitais Reconfigurveis


Monografia apresentada disciplina de
Projeto Final, como requisito parcial
concluso do curso de Engenharia da
Computao. Orientador: Prof. Valfredo
Pilla Jr.

Curitiba
2006
Termo de Aprovao

Eli Renato Barbosa

Filtros Digitais Reconfigurveis

Monografia aprovada como requisito parcial concluso do curso de


Engenharia da Computao do Centro Universitrio Positivo, pela seguinte
banca examinadora:

Prof. Valfredo Pilla Junior (Orientador)

Prof. Roberto Selow

Prof. Alessandro Brawerman

Curitiba, 11 de Dezembro de 2006


Agradecimentos

Aos meus pais, Pedro e Diva pelo apoio em todo percurso na busca deste
objetivo.
A todos os professores do curso, em especial ao orientador Prof. Valfredo pela
dedicao e pacincia.
minha namorada, Mahanna Costa que durante anos sempre cobrou minha
dedicao em busca desta formao.
Aos meus amigos, Pedro Gonzaga, Kielse Nodari e Fbio Faria, que no
deixaram de expressar seu apoio.
Aos chefes e tambm amigos Abner Fernandes e Manoel Costa que sabem a
importncia profissional deste curso em prol da qualificao de seus funcionrios e no
hesitaram em permitir horas de ausncia do trabalho para concluso deste projeto.
A todos aqueles cujos nomes por ventura no tenham sido aqui mencionados.
Sumrio

Lista de Figuras .......................................................................................................................... vii

Lista de Tabelas........................................................................................................................... ix

Lista de Siglas............................................................................................................................... x

Resumo ......................................................................................................................................... xi

Abstract ........................................................................................................................................ xii

1. INTRODUO ...........................................................................................................................1

2. FUNDAMENTAO TERICA ....................................................................................................3

2.1. Filtros digitais ................................................................................................................3


2.1.1. Filtros digitais FIR .................................................................................................4
2.1.2. Filtros digitais IIR ..................................................................................................5

2.2. FPGA ..............................................................................................................................6


2.2.1. Arquitetura Cyclone ..............................................................................................7
2.2.2. Arranjo de Blocos Lgicos (LAB).......................................................................8
2.2.3. Interconexo MultiTrack ....................................................................................13
2.2.4. Memria embutida (M4KRAM) .........................................................................14
2.2.5. Rede de clock global..........................................................................................15

2.3. Recursos das ferramentas de desenvolvimento da Altera ..................................16


2.3.1. Resumo das caractersticas dos dispositivos de configurao da Altera .17

2.4. VHDL ............................................................................................................................18


2.4.1. Histria de VHDL ................................................................................................18
2.4.2. Linguagem de Descrio de Hardware...........................................................19

2.5. Introduo ao MATLAB .............................................................................................20


2.5.1. Implementando algoritmos DSP em FPGAs..................................................21

2.6. Introduo ao Quartus II............................................................................................22

3. ESPECIFICAO.....................................................................................................................25

3.1. Mdulo de Software ...................................................................................................26

3.2. Mdulo de Hardware..................................................................................................26


3.2.1. Interface JTAG....................................................................................................27

v
3.2.2. Interface Paralela................................................................................................27

3.3. Validao do projeto ..................................................................................................28

3.4. Previso de Custos ....................................................................................................28

3.5. Cronograma.................................................................................................................28

4. PROJETO ...............................................................................................................................31

4.1. Requisitos mnimos de funcionamento ...................................................................31

4.2. Projeto de Hardware ..................................................................................................31


4.2.1. Conversores Analgico-Digital e Digital Analgico.......................................32
4.2.2. FPGA ....................................................................................................................32

4.3. Projeto de Software....................................................................................................40


4.3.1. MatLab..................................................................................................................40
4.3.2. Software para carregar dados no FPGA ........................................................42

5. RESULTADOS.........................................................................................................................45
5.1.1. Filtro FIR ..............................................................................................................45
5.1.2. Filtro IIR ................................................................................................................48

6. CONCLUSO ..........................................................................................................................51

7. REFERNCIAS........................................................................................................................53

vi
Lista de Figuras

Figura 1: Estrutura de um filtro digital. ......................................................................................3


Figura 2: Amostragem discreta de um sinal analgico, x(t) para x[n]..................................3
Figura 3: Estrutura para implementar um filtro digital FIR.....................................................4
Figura 4: Estrutura para implementar um filtro digital IIR. .....................................................5
Figura 5: Arquitetura bsica de um FPGA. ..............................................................................6
Figura 6: Diagrama em blocos dos dispositivos Cyclone......................................................8
Figura 7: Estrutura LAB do Cyclone..........................................................................................9
Figura 8: Conexes de link direto. ...........................................................................................10
Figura 9: Sinais de controle da LAB........................................................................................10
Figura 10: Estrutura LE do Cyclone. .......................................................................................11
Figura 11: LE no modo normal de operao. ........................................................................12
Figura 12: LE no modo normal de Aritmtico Dinmico. .....................................................13
Figura 13: Conexes R4 interconnect. ...................................................................................14
Figura 14: Sinais de controle do block M4K RAM. ...............................................................14
Figura 15: Interface entre o bloco MK4 RAM e o LAB. ........................................................15
Figura 16: Gerao de clock global.........................................................................................16
Figura 17: Dispositivo de gravao/configurao FPGA. ....................................................16
Figura 18: Janela principal do MatLab e do Ambiente de desenvolvimento....................21
Figura 19: Fases do desenvolvimento de um projeto em FPGA ........................................22
Figura 20: Janela do Quartus II................................................................................................23
Figura 21: Diagrama em blocos do sistema. .........................................................................25
Figura 22: Cronograma de desenvolvimento do projeto......................................................30
Figura 23: Foto do Hardware....................................................................................................31
Figura 24: Esquemtico conversores ADC e DAC ...............................................................32
Figura 25: Diagrama em blocos completo do filtro FIR. .......................................................34
Figura 26: Diagrama em blocos completo do filtro IIR. ........................................................35
Figura 27: Ligao dos pinos da paralela com o FPGA.......................................................37
Figura 28: Diagrama de estados para execuo do filtro FIR e IIR ...................................39
Figura 29: Curva Resposta Filtro FIR .....................................................................................42
Figura 30: Curva Resposta Filtro IIR .......................................................................................42
Figura 31: Tela principal do software ......................................................................................42
Figura 32: Fluxograma das aes do software .....................................................................43

vii
Figura 33: Curva terica passa-baixa, fs=1000 Hz, fc=400 Hz e ordem=5,15,32 ...........46
Figura 34: Curva experimental passa-baixa, fs=1000 Hz, fc=400 Hz e ordem=5,15,32 46
Figura 35: Sinal filtrado do FIR passa-baixa com 50 Hz de entrada .................................47
Figura 36: Sinal filtrado do FIR passa-baixa com 150 Hz de entrada ...............................47
Figura 37: Curva terica IIR passa-baixa, fs=1000 Hz, fc=100 Hz e ordem=5................48
Figura 38: Sinal filtrado do IIR passa-baixa com 50 Hz de entrada...................................48
Figura 39: Sinal filtrado do IIR passa-baixa com 150 Hz de entrada.................................49
Figura 40: Sinal danificado pela limitao do hardware.......................................................49

viii
Lista de Tabelas

Tabela 1: Recursos dos dispositivos Cyclone [ALTERA, 2003]. ..........................................7


Tabela 2: Recurso de configurao FPGA. ...........................................................................17
Tabela 3: Custo estimado do projeto......................................................................................28
Tabela 4: Datas importantes para o projeto...........................................................................28
Tabela 5: Pinos utilizados do FPGA ........................................................................................33
Tabela 6: Tipo de dado enviado ao FPGA pela paralela .....................................................36
Tabela 7: Estados dos blocos fir e iir .................................................................................38

ix
Lista de Siglas

ADC Analogic Digital Converter


DAC Digital Analogic Converter
DSP Digital Signal Processing
FIR Finite Inpulse Response
FPGA Field-Programable-Gate-Array
IIR Infinite Inpulse Response
UnicenP Centro Universitrio Positivo
NCET Ncleo de Cincias Exatas e Tecnolgicas
VHDL Very high speed integrated circuits Hardware Description Language
LAB Logic Array Block
LE Logic Elements
I/O Input/Output
IOE Input/Output Element
RAM Random Access Memory
SDRAM Synchronous Dynamic Random Access Memory
FCRAM Fast Cycle Random Access Memory
DDR Double Data Rate
PLL Phase-Locked Loop
FDATOOL Filter Design & Analysis Tool
FS Frequncia de Amostragem
FC Frequncia de Corte

x
Resumo

Os sinais de uma forma ou de outra fazem parte de nossa vida diria. Assim como
ns, humanos, processamos sinais biolgicos para falar e ouvir, podemos
computacionalmente atravs de sistemas eletrnicos processar este e outros diferentes
tipos de sinais para serem utilizados em diversas reas. Uma forma de processar os
sinais o processamento digital de sinal (DSP) que feito por computador ou
microprocessadores DSP. Neste caso existe a flexibilidade, pela qual podemos
implementar diferentes operaes de processamento de sinal, como por exemplo, a
filtragem de sinais. O presente trabalho descreve o desenvolvimento de um sistema de
filtros digitais reconfigurveis, fazendo uso de dispositivos de FPGA aliado a um ADC
que vem a ser uma alternativa aos microprocessadores DSP, pois tambm so
dispositivos de alta capacidade e desempenho, alm da caracterstica intrnseca de ser
reconfigurveis, so de baixo custo. O sistema possui um hardware composto por
FPGA para ser programado como filtros digitais, um ADC para captao do sinal e um
DAC para gerao do sinal j filtrado.

Palavras-chave: DSP, Filtro Digital, FPGA, Computao Reconfigurvel.

xi
Abstract

The signals of one form or of another one they are part of our daily life. As well
us, human beings we process biological signals to speak and to hear, we can
computational through electronic systems process this and other different types of
signals to be used in several area. A form to process the signals is the digital signal
processing (DSP) that is made by computer or microprocessors DSP. In This case,
exists the flexibility, for which we can implement different operations of signal
processing, as for example, the filter of signals. The present work has as objective the
development of a system of digital filter reconfigurable, using one FPGA device with a
ADC that comes to be an alternative to microprocessors DSP, because also are devices
of high capacity and performance, beyond the intrinsic characteristic of being you
reconfigurable and also of low cost. The system is composed by one hardware for
FPGA to be programmed as digital filters, ADC for captation of the signal and one DAC
for generation of the filtered signal.

Palavras-chave: DSP, Digital Filter, FPGA, Reconfigurable Computing.

xii
1

1. INTRODUO

Os sinais de uma forma ou de outra, constituem um ingrediente bsico de nossa


vida diria. Por exemplo, uma forma comum de comunicao humana se desenvolve
atravs do uso de sinais de fala, seja na conversao frente a frente ou por um canal
telefnico. Neste exemplo, o processamento do sinal da fala recorre ao uso de nossos
ouvidos e aos caminhos auditivos em nosso crebro, ou seja, os sistemas
responsveis pela produo e recepo dos sinais so de natureza biolgica. Eles
tambm poderiam ser executados usando sistemas eletrnicos que tentam simular ou
imitar suas contrapartes biolgicas.
As operaes de sinais envolvidas na construo de diferentes sistemas como,
por exemplo, sistemas de comunicao, controle, sensoriamento remoto e
processamento de sinais biolgicos podem ser feitos de duas formas: processamento
analgico de sinais ou processamento digital de sinais. O processamento digital de
sinais feito por computador ou microprocessadores DSP. Neste caso, existe a
flexibilidade pela qual podemos implementar diferentes operaes de processamento
de sinal (por exemplo, filtragem de sinais) simplesmente fazendo-se modificaes no
software. Para implementar estas operaes, necessrio projetar um sistema que
ser programado em um hardware para realizar a funo de interesse [HAYKIN, 2001].
Os microprocessadores INTEL, comumente encontrados nos computadores
pessoais (PC), so sistemas com caractersticas de uso geral, podendo executar um
grande nmero de funes, atendendo assim um maior nmero de usurios que fazem
uso de computadores pessoais para suas atividades [VILLASENOR, 1997]. No entanto
o uso do PC para processamento de sinais no se apresenta como uma boa soluo,
pois o ideal o desenvolvimento de uma aplicao especfica buscando maximizar a
performance do sistema. Contrrio aos microprocessadores de uso geral podemos
destacar os microprocessadores DSP que so especficos para o processamento
digital de sinais.
Os microprocessadores DSP atuais apresentam desempenho e capacidade cada
vez maior, mas ainda assim a complexidade crescente necessria a implementao de
algoritmos de diferentes sistemas, exige um nmero cada vez maior de processadores
DSPs convencionais, aumentando muito o custo destas solues [ALTERA, 2005].
A principal alternativa disponvel hoje para implementar sistemas de DSP de alto
desempenho, a utilizao de FPGAs. A principal caracterstica desta alternativa a
2
possibilidade de executar sistemas com capacidade de processamento e ordens de
grandeza comparadas com a implementao destes sistemas utilizando
microprocessadores DSPs convencionais, em um nico dispositivo e a um custo muito
menor [ALTERA, 2005]. Alm destas vantagens os FPGAs, permitem a utilizao de
computao reconfigurvel, assim eles podem ser modificados em praticamente
qualquer momento durante seu uso.
O presente trabalho possibilita o desenvolvimento de um sistema DSP, mais
precisamente, filtros digitais utilizando computao reconfigurvel atravs de um
FPGA. Os filtros digitais podem ser divididos em duas classes bsicas, filtros FIR
(Resposta ao impulso finita) e IIR (Resposta ao impulso infinita), o FPGA poder ser
reconfigurado para trabalhar com estas duas classes. As expresses genricas que
representam estas classes utilizam coeficientes que determinam filtragem realizada,
como por exemplo, passa-baixa e passa-alta. Utilizando o software MatLab da
MathWorks, os filtros sero projetados, simulados e os coeficientes sero gerados.
Com o auxlio do software Quartus II da Altera, as expresses dos filtros digitais
FIR e IIR so programadas no FPGA na linguagem de hardware VHDL. O Quartus II
tambm necessrio para recompilar o FPGA para que ele desempenhe a funo FIR
ou IIR. Um terceiro software desenvolvido em C++ Builder tambm necessrio para
configurar a opo de filtragem no FPGA.
Assim entra-se com um sinal analgico de tempo contnuo em um canal de
entrada e em um outro canal de sada verificar o sinal de entrada j filtrado conforme a
opo de filtragem configurada.
3

2. FUNDAMENTAO T ERICA

2.1. Filtros digitais

Um filtro digital usa computao para implementar a ao de filtragem que deve


ser executada em um sinal de tempo contnuo. A figura 1 mostra o diagrama de blocos
das operaes envolvidas em tal abordagem para projetar um filtro seletivo de
freqncia.

Figura 1: Estrutura de um filtro digital.

O bloco rotulado como ADC usado para converter o sinal de tempo contnuo
x(t) numa seqncia x[n] de nmeros. Para isto o ADC pega vrias amostras do sinal
em intervalos de tempos (intervalo de amostragem) e estes valores, representado pela
seqncia x[n], correspondem ao sinal de entrada na forma digital. A figura 2 ilustra a
seqncia x[n].

Figura 2: Amostragem discreta de um sinal analgico, x(t) para x[n].

O filtro digital processa a seqncia de nmeros x[n] numa base de amostra por
amostra. neste momento que a ao da filtragem realizada, dependendo da forma
que x[n] calculado. Existem trs tipos de operaes que podem ser realizadas sobre
4
o sinal: armazenamento, adio e multiplicao por constantes. Estas constantes
definem a ao de filtragem realizada e atravs destas operaes so produzidas uma
nova seqncia de nmeros y[n], a qual ento convertida num sinal de tempo
contnuo correspondente pelo conversor DAC. Finalmente, o filtro de reconstruo
(passa-baixas) na sada do sistema produz um sinal de tempo contnuo y(t),
representando a verso filtrada do sinal de entrada original x(t).
Os filtros digitais, dependendo da durao da resposta ao impulso, podem ser
classificados em dois grupos:
1. Filtros digitais de resposta ao impulso de durao finita (FIR), cuja operao
regida por equaes lineares de diferenas com coeficientes de natureza
no-recursiva.
2. Filtros digitais de resposta ao impulso de durao infinita (IIR), cuja operao
regida por equaes lineares de diferenas com coeficientes constantes de
natureza recursiva [HAYKIN, 2001].

2.1.1. Filtros digitais FIR

Os filtros digitais FIR so filtros que tem uma resposta ao impulso de durao
finita de natureza no recursiva, ou seja, a sada depende apenas da entrada atual e
entradas anteriores. A figura 3 ilustra a estrutura para implementar um filtro digital FIR,
a funo X(z) representa o sinal de entrada, os valores de b0 at bN so coeficientes
que determinam o tipo da filtragem que esta sendo realizada (passa-baixa, passa-alta,
passa-faixa) e a funo Y(z) o sinal de sada, resultado da filtragem do sinal X(z). O
valor N tambm a ordem do filtro que esta sendo realizado, ou seja, o nmero de
coeficientes determina a ordem do filtro.

Figura 3: Estrutura para implementar um filtro digital FIR.


5

y ( z ) ? b0 x ( z ) ? b1 x( z ) z ? 1 ? ... ? bN x ( z ) z ? n (1)

A grande vantagem dos filtros digitais FIR que, uma propriedade inerente os
permite realizar uma resposta em freqncia com fase linear. Em muitas aplicaes,
principalmente em aplicaes de udio importante manter a fase linear do sinal de
entrada. Outras caractersticas destes filtros so ser sempre estveis e sem plos
[ROCHA , 2001].
Uma desvantagem dos filtros FIR que para realizar as mesmas caractersticas
de um filtro IIR ele precisar ter uma ordem mais elevada e isto se traduz a um maior
gasto computacional [BAPTISTA, 2004].

2.1.2. Filtros digitais IIR

Os filtros digitais IR so filtros que tem uma resposta ao impulso de durao


infinita de natureza recursiva, ou seja, a sada depende alm da entrada atual, o
resultado da sada anterior. A figura 3 ilustra a estrutura para implementar um filtro
digital IIR, a funo X(z) representa o sinal de entrada, os valores de a0 at aN, b0 at
bN, so coeficientes que determinam o tipo da filtragem que esta sendo realizada
(passa-baixa, passa-alta, passa-faixa) e a funo Y(z) o sinal de sada, resultado da
filtragem do sinal X(z).

Figura 4: Estrutura para implementar um filtro digital IIR.


6

y ( z ) ? a0 x( z ) ? a1 x ( z ) z ?1 ? ... ? an x ( z ) z ? n ? b1 y ( z ) z ? 1 ? bn y( z ) z ? n (2)

Os filtros IIR ao contrrio dos filtros FIR so difceis de controlar a fase, no


entanto o custo computacional pode ser menor para cumprir a mesma funo de um
filtro FIR. Outras caractersticas destes filtros so ser instveis, ter plos, alm de seu
projeto derivar de prottipos de filtros analgicos [BAPTISTA, 2004].

2.2. FPGA

Um FPGA consiste em um grande arranjo de clulas configurveis (ou blocos


lgicos) contidos em um nico chip. Cada uma destas clulas contm uma capacidade
computacional para implementar funes lgicas (tais como AND, NAND, OR, NOR e
XOR) e/ou realizar roteamento para permitir a comunicao entre as clulas. Todas
essas operaes podem acontecer simultaneamente no arranjo de clulas inteiro
[ARAGO, 1998].
A arquitetura bsica de um FPGA ilustrada na figura 5, onde os blocos lgicos
se comunicam atravs dos recursos de interconexo e as clulas de I/O permitem a
entrada e sada de dados.

Figura 5: Arquitetura bsica de um FPGA.

O FPGA utilizado neste projeto o dispositivo EP1C3 Cyclone da Altera.


7
2.2.1. Arquitetura Cyclone

Os dispositivos Cyclone contm uma arquitetura bidimensional baseada em


linha e coluna para executar a lgica programada. Colunas e linhas so
interconectadas para prover a comunicao em diferentes velocidades entre Arranjos
de Blocos Lgicos (LAB - Logic Array Blocks) e blocos de memria embutidos no
dispositivo (M4KRAM - Memory 4 Kbits Random Access Memory) [ALTERA, 2003].
Cada LAB contm 10 elementos lgicos (LE) que uma pequena unidade que
implementa funes lgicas. Os LABs esto agrupados em linhas e colunas atravs do
dispositivo. Os dispositivos Cyclone tem entre 2.910 e 20.060 Les [ALTERA, 2003].
Cada M4KRAM contm 4k bits de memria mais paridade (4068 bits). Estes
blocos provem uma ou duas portas dedicadas de at 36 bits em at 250 MHz.
Estes blocos esto agrupados em colunas atravs do dispositivo. Os dispositivos
Cyclone tem entre 60 e 288 Kbits de memria RAM embutida [ALTERA, 2003].
Nas bordas dos dispositivos possvel encontrar os blocos de I/O (IOEs). Os
IOEs contm diferentes padres de I/O, entre 66 e 33 MHz, 64 e 32 bits, alm de
prover interface para suportar a utilizao de memria externa DDR, SDRAM e FCRAM
em at 133 MHz [ALTERA, 2003].
Os dispositivos Cyclone prov ainda at dois blocos PLL em uma rede de clock
global. Esta rede clock global contm 8 linhas de clock que pode ser utilizado para
controlar todos os recursos dentro do dispositivo como IOEs, LEs e os blocos de
memria. Estas linhas tambm podem ser usadas para sinais de controle [ALTERA,
2003].
A tabela 1 mostra os recursos disponveis nos dispositivos Cyclone. A figura 6
mostra o diagrama em blocos do dispositivo EP1C12. Note que o nmero de blocos
M4KRAM, PLL, linhas e colunas podem variar conforme o dispositivo.

Tabela 1: Recursos dos dispositivos Cyclone [ALTERA, 2003].

Equipamento M4K RAM PLLs Colunas Linhas


Colunas Blocos LAB LAB
EP1C3 1 13 1 24 13
EP1C4 1 17 2 26 17
EP1C6 1 20 2 32 20
EP1C12 2 52 2 48 26
EP1C20 2 64 2 64 32
8

Figura 6: Diagrama em blocos dos dispositivos Cyclone.

2.2.2. Arranjo de Blocos Lgicos (LAB)

Cada LAB consiste em 10 Les (Logic Elements), LE carry, sinais de controle das
LABs, interconexes locais e uma tabela de look-up (LUT) e registradores. As
interconexes locais transferem sinais de controle entre as LEs dentro do mesmo LAB
[ALTERA, 2003]. A figura 7 ilustra a estrutura de uma LAB do Cyclone:
9

Figura 7: Estrutura LAB do Cyclone.

As interconexes locais so feitas por colunas e linhas interconectadas.


Prximos aos LABs, situados a esquerda e direita, esto as PLLs (Phase-Locked Loop)
e M4KRAM, atravs da conexo de link direto (Direct link interconnect from adjacent
block) eles podem se comunicar sem passar atravs das interconexes locais
minimizando seu uso, promovendo assim maior desempenho e flexibilidade. Cada LE
ainda est conectada a outras 30 LEs atravs da conexo de link direto. A figura 8
ilustra as conexes de link direto [ALTERA, 2003].
10

Figura 8: Conexes de link direto.

Cada LAB contm lgicas dedicadas para enviar sinais de controle para as LEs.
Os sinais de controle podem ser: dois clocks, dois clocks enable, asynchronous clears,
synchronous clear, asynchronous preset/load, synchronous load e sinais de controle
para soma e subtrao. A figura 9 ilustra os sinais de controle da LAB [ALTERA, 2003].

Figura 9: Sinais de controle da LAB.

A menor unidade lgica da LAB a LE, no entanto ela fornece recursos


avanados atravs da utilizao de uma lgica eficiente. Cada LE contm uma tabela
LUT de 4 entradas, que tem a funo de ser um gerador para implementar qualquer
11
funo de quatro variveis. Na soma, cada LE contm um registrador programvel e
um sinal de seleo carry. Cada LE suporta um simples soma dinmica de bit ou uma
subtrao que pode ser selecionado pelo sinal de controle da LAB. Cada LE pode
realizar todos os tipos de conexo: local, coluna, linha, LUT, registrador e a conexo de
link direto [ALTERA, 2003]. A figura 10 ilustra a estrutura da LE.

Figura 10: Estrutura LE do Cyclone.

Duas sadas da LE so direcionadas para roteamento de coluna ou linha e link


direto e uma para interconexo local. Isso permite que a LUT e o registrador
programvel trabalhem paralelamente. Essa caracterstica chamada de Register
Packing, que melhora a utilizao do dispositivo, porque o dispositivo pode utilizar a
LUT e o registrador em funes no relacionadas. Os LEs dentro de um LAB possuem
sadas que permitem cadeias de LUTs e registradores programveis [ALTERA, 2003].
A caracterstica de somador/subtrador dinmico da LE economiza recursos
lgicos de usar um conjunto de LEs para implementar ambas operaes. Essa
caracterstica controlada pelo sinal de controle addnsub que coloca o LAB para
realizar tanto (A+B) como (AB) [ALTERA, 2003].
12
A LE pode trabalhar em dois modos de operaes diferentes: Modo normal e
Modo Aritmtico Dinmico. Cada modo usa os recursos de forma diferente. Em cada
modo oito entradas so disponveis para a LE (quatro dados de entrada da
interconexo local da LAB, carry-in0 e carry-in1 da LE anterior, o carry-in do LAB e a
conexo da cadeia de registradores) e so direcionadas para diferentes destinos para
implementar a funo lgica desejada [ALTERA, 2003].
O Modo Normal direcionado para aplicaes de lgica gerais e funes
combinatrias. Neste modo, o sinal addnsub s permitido se o LE est no final de
uma cadeira de somador/subtrator. A figura 11 ilustra a LE no modo de operao
normal [ALTERA, 2003].

Figura 11: LE no modo normal de operao.

O Modo Aritmtico Dinmico ideal para implementar somadores, contadores,


acumuladores, funes de paridade e comparadores. Neste modo, a LE usa quatro
LUT de entradas configuradas como um somador/subtrator dinmico. Essa
caracterstica permite que o Cyclone implemente contadores, somadores,
multiplicadores e comparadores em alta velocidade. A figura 12 ilustra a LE no modo
de operao Aritmtico Dinmico [ALTERA, 2003].
13

Figura 12: LE no modo normal de Aritmtico Dinmico.

2.2.3. Interconexo MultiTrack

Na arquitetura Cyclone, LEs, blocos de memria M4KRAM e dispositivos de IOEs


so providos por uma estrutura de interconexo MultiTrack com tecnologia
DirectDrive TM. A interconexo MultiTrack consiste de linhas roteadoras contnuas e de
performance otimizada de diferentes velocidades usadas para realizar conexes inter e
intra blocos. Simplifica o estgio de integrao de projetos baseados em blocos
eliminando os ciclos de re-otimizao que geralmente geram mudanas de projeto.
Consiste de interconexes de linha e coluna com distncias fixas. Linhas dedicadas
interconectam sinais roteados de e para LABs, PLLs, blocos de memria M4KRAM
dentro de uma mesma linha. Essas linhas incluem:
1. Interconexes de links diretos entre LABs e blocos adjacentes.
2. R4 Interconnect (Row4) liga quatro blocos [ALTERA, 2003].
A figura 13 ilustra esta interconexo.
14

Figura 13: Conexes R4 interconnect.

A interconexo de colunas opera similarmente a interconexo de linhas. Colunas


dedicadas interconectam sinais roteados de e para LABs, PLLs, blocos de memria
M4K verticalmente. Essas colunas incluem: Cadeias de LUTs dentro de um LAB,
Cadeias de Registradores programveis dentro de um LAB e C4 Interconnect liga
quatro blocos [ALTERA, 2003].

2.2.4. Memria embutida (M4KRAM)

A memria embutida do Cyclone consiste em colunas com blocos M4K. Os


dispositivos EP1C3 tm apenas uma coluna de blocos M4K. Cada bloco por executar
vrios tipos de memria com ou sem bit de paridade, incluindo um dual-port verdadeiro,
dual-port simples ou single-port RAM, ROM e FIFO [ALTERA, 2003].

Figura 14: Sinais de controle do block M4K RAM.


15

Figura 15: Interface entre o bloco MK4 RAM e o LAB.

2.2.5. Rede de clock global

Os dispositivos Cyclone fornecem uma rede global de quatro pulsos de clock


dedicados (CLK[0..3]. Sendo dois do lado esquerdo e dois do lado direito. As sadas
da PLL, o arranjo lgico e os pinos dual-purpose clock (DPCLK[7..0 ]) podem tambm
dirigir a rede global do pulso de disparo. A linha com oitos clocks globais nesta rede de
clock global utilizada para controlar todos os recursos dentro do dispositivo como
IOEs, LEs e os blocos de memria. Estas linhas tambm podem ser usadas para sinais
de controle [ALTERA, 2003]. A figura 16 ilustra a gerao de clock global.
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 Cyclone
utilizam a PLL para prover este recurso [ALTERA, 2005].
16

Figura 16: Gerao de clock global.

2.3. Recursos das ferramentas de desenvolvimento da Altera

Figura 17: Dispositivo de gravao/configurao FPGA.

Um dos recursos mais interessantes das ferramentas de desenvolvimento da


Altera a possibilidade de gravar e configurar componentes na prpria placa, utilizando
para tal os dispositivos de configurao. A Altera dispe hoje de cinco sistemas que
permitem fazer a gravao (para componentes da famlia MAX e EPC) ou configurao
17
(para dispositivos do tipo FPGA) de componentes na prpria placa, sendo eles os
BitBlaster, ByteBlaster, ByteBlasterMV, ByteBlaster II e MasterBlaster.
Todos eles permitem gravar/configurar componentes atravs de um conector
tipo BERG de dupla fileira, com 10 pinos (duas filas de 5 pinos cada) e utilizando os
protocolos de configurao JTAG ou Passivo Serial. O mais novo componente da
famlia, a ByteBlaster II, permite ainda a gravao dos novos componentes do tipo
FLASH Serial usados na configurao dos componentes da famlia Cyclone, usando o
novo modo de gravao Ativo Serial.
As principais caractersticas destes dispositivos de gravao/configurao so
mostradas na tabela 2.

Tabela 2: Recurso de configurao FPGA.

2.3.1. Resumo das caractersticas dos dispositivos de configurao da Altera

Dos dispositivos citados acima, dois no so mais recomendados pela Altera


para novos projetos, por serem compatveis apenas com componentes de tecnologia
mais antiga, o ByteBlaster normal e o BitBlaster.
Dos demais, o MasterBlaster, ao ser instalado usando a interface USB,
reconhecido automaticamente como um novo dispositivo e pedida a instalao do
driver, e o diretrio onde o driver est presente o mesmo diretrio do driver da
ByteBlasterMV [PI, 2003].
Por ter o esquema eltrico disponvel na documentao da Altera, e por ser o
sistema de configurao da Altera de mais baixo custo, a ByteBlasterMV hoje o
sistema de configurao mais utilizado e o que apresenta o maior nmero de
chamados perguntando como feita a instalao deste dispositivo. Para utilizar este
dispositivo, trs condies devem ser atendidas:
1. O dispositivo montado seguindo rigorosamente o esquema eltrico passado
deve estar conectado placa e a porta paralela do PC (Interface com a
impressora), usando conector de 25 vias. A placa deve estar alimentada e as
18
conexes entre o conector e o dispositivo devem estar feitos de acordo com o
AN116.
2. Para sistemas usando o Windows NT/2000/XP, um driver especial deve estar
instalado no sistema, permitindo que o dispositivo de configurao seja
reconhecido pelo software de configurao da Altera (MAX+PLUS II ou Quartus
II). O Windows 98 no precisa da instalao do driver.
3. A seleo correta do dispositivo de configurao deve ser feita no software de
desenvolvimento da Altera (MAX+PLUS II ou Quartus II) [PI, 2003].
Atendidas estas trs condies, nenhum problema ser encontrado na utilizao da
ByteBlasterMV para gravar ou configurar componentes. A instalao da ByteBlaster
normal e da ByteBlaster II tambm so as mesmas que para a ByteBlasterMV descritas
[PI, 2003].

2.4. VHDL

VHDL (VHSIC Hardware Description Language) onde VHSIC Very High Speed
Integrated Circuits. Portanto, VHDL foi concebido para desenvolver circuitos integrados.
Na realidade, ele pode ser usado para descrever vrios tipos de sistema: uma rede de
computadores, um circuito integrado, ou simplesmente uma simples porta lgica. VHDL
portanto uma linguagem multi-nveis e abrange todos os nveis de descrio discreta.
VHDL no prtico para descries:
?? Ao nvel eltrico: no possvel descrever as equaes diferenciais necessrias
definio de um transistor.
?? Ao nvel sistema: impossvel descrever a criao e a destruio dinmica de
processos software [DHARBE, 1998].

2.4.1. Histria de VHDL

As primeiras linguagens de descrio de hardware foram desenvolvidas no final


dos anos 60, como alternativa s linguagens de programao para descrever e simular
dispositivos hardwares. Durante dez anos, inmeras linguagens foram desenvolvidas
com sintaxe e semnticas incompatveis, permitindo descries a diferentes nveis de
modelizao [DHARBE, 1998].
19
A partir de 73, um primeiro esforo de padronizao foi iniciado: o projeto
CONLAN (CONsensus LANguage), cujos objetivos eram de definir uma formalmente
uma linguagem multi-nveis com uma sintaxe nica e uma semntica no ambgua. O
relatrio final desse projeto, composto em maioria por acadmicos, foi publicado em
janeiro de 1983 [DHARBE, 1998].
Em paralelo, na rea de software, a necessidade de portabilidade entre vrias
plataformas resultou num projeto de desenvolvimento de uma linguagem de
programao, financiado pelo Ministrio da Defesa dos Estados Unidos (DoD
Departament of Defense). Como resultado desse esforo, em 1983, foi publicada a
linguagem ADA [DHARBE, 1998].
O DoD iniciou em maro de 1983 o programa VHSIC (Very High Speed
Integrated Circuits) para melhorar a tecnologia de concepo, engenharia e construo
nos Estados Unidos. Foi definido um conjunto de requisitos e um contrato assinado em
1983 com um consrcio composto de IBM, Intermetrics e Texas Instruments. Depois de
vrias avaliaes e revises, em 1986, a Intermetrics desenvolveu um compilador
inicial como um simulador. Nesse mesmo ano, foi criado um grupo de padronizao da
IEEE para VHDL, que passou a entrar no domnio pblico. Em dezembro de 1997 foi
publicado o manual de referncia da linguagem.
Os primeiros softwares desenvolvidos foram comercializados a partir de 1988.
Hoje, existem vrios compiladores e simuladores, sintetizadores, etc. VHDL faz parte
do processo de concepo de circuitos integrados em um grande nmero de centros e
um das duas linguagens de descrio de hardware dominantes no mercado mundial
com a linguagem Verilog HDL [DHARBE, 1998].

2.4.2. Linguagem de Descrio de Hardware

A descrio de um sistema digital permite definir um modelo de um pedao de


hardware. O modelo, escrito na linguagem VHDL, descreve o que o sistema faz e
como. A descrio VHDL um modelo do sistema hardware. Essa descrio pode ser
executada por um software chamado de simulador. O simulador roda uma descrio
VHDL e calcula os valores das sadas do sistema modelizado em funo de uma
seqncia de valores de entradas aplicadas ao decorrer da simulao. O simulador
estimula o comportamento dinmico de um modelo VHDL. Se o modelo VHDL
corresponde com preciso funo do hardware modelizado, ento o comportamento
20
das entradas e sadas da simulao do modelo deve corresponder o comportamento
das entradas e sadas do hardware [DHARBE, 1998].
Uma linguagem de descrio de hardware um quadro preto de alto-tecnologia
para a concepo de sistemas digitais. Num projeto de concepo, vrias etapas de
modelizao, simulao, correo ou preciso so necessrias para chegar a um
modelo suficientemente detalhado para poder servir de especificao da
implementao hardware e como documentao para ajudar a comunicao do projeto
para outros grupos e organizaes [DHARBE, 1998].

2.5. Introduo ao MATLAB

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 [ALTERA, 2005].
O sistema de desenvolvimento mais utilizado hoje o MATLAB, da Mathworks,
empresa fundada em 1984. O MATLAB oferece um ambiente para desenvolvimento 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
[ALTERA, 2005].
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 [ALTERA, 2005].
21
Os ambientes do MATLAB utilizados para o desenvolvimento deste projeto o
ambiente voltado para desenvolvimento de arquivos em formato .M, juntamente com
operaes proprietrias da Mathworks para projetar os filtros desejados como as
funes. A figura 18 ilustra a janela principal do MATLAB.

Figura 18: Janela principal do MatLab e do Ambiente de desenvolvimento.

2.5.1. 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, no caso escolhida VHDL e a implementao do
mesmo em hardware. A figura 19 ilustra as fases de desenvolvimento.
22

Figura 19: Fases do desenvolvimento de um projeto em FPGA

2.6. Introduo ao Quartus II

O Quartus II uma ferramenta voltada para o desenvolvimento de projetos em


componentes de alta densidade. Ele oferece diversos recursos e metodologias para
criao e gerenciamento de projetos, ambiente de edio em VHDL, diagrama em
blocos, interface com ferramentas de terceiros, compilao, simulao, at a
configurao e gravao de componentes, a figura 20 a seguir mostra a janela do
Quartus II.
23

Figura 20: Janela do Quartus II.


24
25

3. ESPECIFICAO

O sistema desenvolvido neste projeto consiste principalmente em um FPGA que


pode ser reconfigurado para trabalhar com um Filtro Digital FIR ou IIR, ele possui
alguns mdulos, a figura 21 apresenta o diagrama em blocos do sistema.

Mdulo de Software
?? Matlab.
?? Quartus II.
?? Programa para carregar os coeficientes para o FPGA.
Mdulo de Hardware
?? ADC.
?? FPGA.
?? DAC.

Figura 21: Diagrama em blocos do sistema.


26
3.1. Mdulo de Software

No ambiente de desenvolvimento do MATLAB da MathWork, os filtros digitais


foram projetados e simulados com diferentes tipos de filtro, como por exemplo, filtro
passa-baixa e passa-alta, e posteriormente foram desenvolvidos em VHDL. O resultado
do uso deste software ser as equaes genricas dos filtros FIR e IIR implementadas
e testadas no MATLAB. Elas serviram como base para o desenvolvimento em VHDL,
alm disto, dois programas foram desenvolvidos e utilizados para gerar os coeficientes
utilizados pelos filtros, os valores dos coeficientes gerados foram salvos em arquivos
textos e estes arquivos lidos por um programa especfico desenvolvido em C++ Builder
que l os valores, convert-os para binrio e envi-os ao FPGA.
No ambiente do Quartus II da Altera as equaes implementadas e simuladas
anteriormente no MATLAB sero desenvolvidas em VHDL onde sero simuladas no
ambiente de simulao do Quartus. Ele tambm responsvel por compilar o
programa e grav-los no FPGA.

3.2. Mdulo de Hardware

Neste mdulo, um ADC o responsvel por amostrar um sinal analgico de


entrada e condicion-lo em sinais digitais para ser utilizado pelo FPGA. Um DAC
tambm utilizado para converter o sinal digital j filtrado em um sinal analgico.
O ADC utilizado neste projeto o ADS7810 fabricado pela Burr-Brown. Este
dispositivo conta com uma resoluo de 12 bits, com uma entrada bipolar que trabalha
com tenses de ? 10V a ? 10V . Conta com 28 pinos e opera com tenso de
alimentao de ? 5V e ? 5V . e frequncia mxima de amostragem de 800.000
amostras por segundo, onde o parmetro troughput indica a maior velocidade possvel
de converso de dados.
O DAC utilizado neste projeto o DAC7613 fabricado pela Burr-Brown. Este
dispositivo conta com uma resoluo de 12 bits, com uma sada bipolar que trabalha
com tenses de ? 2,5V a ? 2,5V . Conta com 24 pinos e opera com tenso de
alimentao de ? 2,5V , ? 5V , ? 2,5V e ? 5V . e velocidade de converso de dados de
10? s .
27
O FPGA utilizado neste projeto Cyclone EP1C3T144C8. Ele o principal
componente deste mdulo, ele controla todo o processo que consiste nas seguintes
etapas:
?? Receber os coeficientes dos filtros projetados no MatLab.
?? Armazenar estes coeficientes em uma memria RAM interna.
?? Receber amostras do ADC, conforme a taxa de amostragem.
?? Armazenar ltimas amostras de entrada e ultimas sadas.
?? Realizar a execuo da filtragem do sinal (FIR ou IIR).
?? Enviar o resultado ao DAC.
O Hardware para comunicar-se com o PC ter duas formas de configurao,
uma atravs da interface JTAG, por onde ser gravado o programa desenvolvido em
VHDL e outra que ser implementada atravs da porta paralela, por onde receber os
coeficientes e a taxa de amostragem do filtro.
Para finalizar uma fonte simtrica com tenses de ? 2,5v e ? 5v tambm faz

parte deste mdulo para alimentar o ADC e o DAC.

3.2.1. Interface JTAG

JTAG um tipo de interface de testes e programao padronizada que serve


para interligar uma porta paralela ou serial com um FPGA. Essa interface conecta-se
normalmente com o chip atravs de 4 pinos. O FPGA pode ento ser programado
atravs dessa interface, comandada por um programa, o que acontece atravs do
software Quartus II que ira reconfigurar o FPGA como um filtro FIR ou IIR, pois o FPGA
no vai estar programado para ser os dois filtros (FIR e IIR) ao mesmo tempo.

3.2.2. Interface Paralela

Pela interface paralela, alguns dados sero enviados ao FPGA, o que


acontecer atravs do software desenvolvido em C++ Builder. Os dados enviados so:
?? Sinal de controle para ligar ou desligar o filtro.
?? Coeficientes do filtro projetado.
?? Taxa de amostragem do filtro projetado.
28
3.3. Validao do projeto

A Validao do projeto foi feita em laboratrio com o uso de um Gerador de


Sinais e um Osciloscpio. Os filtros (passa-baixa) foram projetados no MatLab, onde
tambm foi plotado sua curva resposta utilizando a funo plot. Os coeficientes
gerados por este filtro sero enviados ao FPGA, no Gerador de Sinais, poderemos
aumentar ou diminuir a frequncia do sinal de entrada do projeto e com o Osciloscpio
podemos ver a ao do filtro, ou seja, conferir se o filtro esta cortando (atenuando)
conforme o tipo projetado e a curva resposta plotada. Alm disto podemos gerar a
Curva Resposta Experimental para verificar a atenuao do filtro.

3.4. Previso de Custos

A tabela 3 mostra o custo de horas e componentes estimado do projeto para o


desenvolvimento de uma unidade do sistema. No esto sendo considerados os custos
de utilizao de equipamentos, como, osciloscpio, fontes, gerador de funes,
ferramentas de desenvolvimento, como, Quartus II, MatLab, C++ Builder 6, ADS7810 e
DAC7613, pois estes recursos sero cedidos pela universidade.

Tabela 3: Custo estimado do projeto.


Descrio Qtde Custo Unitrio Custo total
Horas de trabalho aproximada 320 R$ 15,00 R$ 4.500,00
FPGA Cyclone EP1C3T144C8 1 R$ 110,00 R$ 110,00
Componentes para fonte de alimentao 1 R$ 100,00 R$ 100,00
Caixa para fonte e para o projeto 1 R$ 100,00 R$ 100,00
Outros componentes 1 R$ 50,00 R$ 50,00
Total R$ 4.860,00

3.5. Cronograma

A tabela 4 mostra as datas importantes para apresentao do projeto. A figura


22 ilustra o cronograma de desenvolvimento do projeto em todas as suas.

Tabela 4: Datas importantes para o projeto.


29
Data Atividade
03/04/2006 Entrega da especificao do projeto.
12/06/2006 Entrega do projeto (monografia) e do resumo/abstract do artigo para
congresso, bem como dos testes preliminares do mesmo.
09/10/2006 Apresentao do projeto implementado; Qualificao para a fase final.
23/10/2006 Segunda apresentao do projeto implementado, para os quem no o
fez no dia 09/10/06, com decrscimo da nota. Qualificao para a fase
final.
06/11/2006 Entrega da documentao completa em espiral para a banca
examinadora, em 3 vias, contendo a monografia, manual tcnico,
manual do usurio e artigo cientfico.
27/11/2006- Defesa formal dos projetos, com apresentao oral para a banca
01/12/2006 examinadora.
11/12/2006 Entrega documentao completa, revisada e corrigida, encadernada no
padro da biblioteca (capa dura) em duas vias, contendo a monografia,
manual tcnico, manual do usurio e artigo cientfico. Entrega do CD
contendo, no formato WEB, todo o contedo dos manuais.
Figura 22: Cronograma de desenvolvimento do projeto.

30
31

4. PROJETO

4.1. Requisitos mnimos de funcionamento

Requisitos de Hardware:
?? Microcomputador 1Ghz com 256 MB memria.
?? Porta Paralela.
Requisitos de Software:
?? Windows 98/NT/2000/XP.
?? MatLab com biblioteca para Processamento de Sinais.
?? Quartus II.

4.2. Projeto de Hardware

O Hardware mostrado na figura 23 composto por um ADC de 12 bits, um DAC


tambm de 12 bits, ambos bipolares, um FPGA Cyclone EP1C3T144C8 com um clock
externo gerado por um crystal de frequncia de trabalho de 25Mhz, uma fonte simtrica
que fornece tenses de ? 2,5v , ? 5v e dois cabos paralelos, sendo uma para interface
JTAG por onde possvel programar o FPGA e outra para interface paralela com um
software especfico desenvolvido para carregar os coeficientes no FPGA.

Figura 23: Foto do Hardware.


32
4.2.1. Conversores Analgico-Digital e Digital Analgico

O ADS7810 e o DAC7613 foi montado conforme o esquemtico da figura 24.


A comunicao entre o ADC e o FPGA feito utilizando-se 14 bits do
barramento de dados (Dados[13..26]). O FPGA controla o momento que o ADC
converte o dado analgico para digital (Pino R/C) atravs do bit 25, o ADC por sua vez
informa ao FPGA que a converso est pronta atravs do bit 26 (Pino BUSY). Atravs
dos bits 13 ao 24 o FPGA recebe o valor da amostra aquisicionada.
A comunicao entre o DAC e o FGPA feito utilizando-se 13 bits do
barramento de dados (Dados[0..12]). O FPGA controla tambm o momento que o DAC
converte o dado digital para analgico (Pino R/W) atravs do bit 13. Atravs dos bits 0
ao 11 o FPGA envia a sada que acabou de ser processada.

Figura 24: Esquemtico conversores ADC e DAC

4.2.2. FPGA

Para implementao do filtro FIR, foram utilizados 34 pinos do FPGA e no filtro


IIR 35 pinos. A tabela 6 mostra a descrio e funes do pinos utilizados, a figura 25
ilustra o diagrama em blocos completo do filtro FIR e a figura 25 do filtro IIR.
33

Tabela 5: Pinos utilizados do FPGA


Nome do Pino Bit Tipo Pino Descrio e Funo
adc_convert 0 S 52 FPGA manda ADC iniciar converso de Entrada
adc_busy 0 E 51 ADC informa que converso esta pronta
adc_entrada 11 E 49
adc_entrada 10 E 50
adc_entrada 9 E 47
adc_entrada 8 E 48
adc_entrada 7 E 41
adc_entrada 6 E 42 Barramento de dados de entrada. Utilizado para
adc_entrada 5 E 39 pegar a amostra recebida pelo ADC
adc_entrada 4 E 40
adc_entrada 3 E 38
adc_entrada 2 E 35
adc_entrada 1 E 36
adc_entrada 0 E 33
dac_convert 0 S 34 FPGA manda DAC iniciar converso Sada
dac_saida 11 S 31
dac_saida 10 S 32
dac_saida 9 S 27
dac_saida 8 S 28
dac_saida 7 S 11
dac_saida 6 S 26 Barramento de dados de sada. Utilizado para o
dac_saida 5 S 7 FPGA enviar o resultado ao DAC
dac_saida 4 S 10
dac_saida 3 S 5
dac_saida 2 S 6
dac_saida 1 S 2
dac_saida 0 S 4
pc_enable 0 E 104 PC manda ligar ou desligar filtro
pc_serial_entrada 0 E 106 PC envia um bit em modo serial para FPGA
pc_clock 0 E 108 PC controla clock para enviar dado serial
pc_comando 0 E 110 Barramento de comando: Configurar ordem,
pc_comando 1 E 112 amostragem, coeficientes e endereco onde o
pc_comando 2 E 114 coeficiente ser gravando em memria
PC habilita memria para gravar coeficientes filtro
pc_wr_coefic_a 0 E 120
FIR e coeficientes a do filtro IIR
PC habilita memria para gravar coeficientes b
pc_wr_coefic_b 0 E 122
do filtro IIR
Figura 25: Diagrama em blocos completo do filtro FIR.

34
Figura 26: Diagrama em blocos completo do filtro IIR.

35
36
Conforme ilustrado nas figuras 24 e 25, o filtro FIR composto por 5 blocos e o
filtro IIR composto por 7 blocos, sendo que o bloco amostra_ctrl mesmo nos dois
filtros. A seguir principais os blocos sero explicados com mais detalhes.

4.2.2.1. Bloco serial_paralela_fir e serial_paralela_iir

Estes blocos so responsveis por receber os dados enviados pelo PC. Os dois
so praticamente idnticos, a diferena que o bloco serial_paralela_iir tem um bit a
mais em um barramento de dados. Eles foram criados porque o nmero de pinos
disponveis atravs da porta paralela no suficiente para enviar os dados necessrios
ao FPGA paralelamente, por exemplo, um valor de coeficiente utiliza 21 bits enquanto a
paralela tem 8 pinos (bits) disponvel. A forma encontrada, for enviar os dados
serialmente atravs de um pino da porta paralela e no FPGA acumulando este dado
com a utilizao de um shift register. O deslocamento do bit enviado controlado pelo
PC atravs de um outro pino da porta paralela. Tambm necessrio o envio de mais
de um tipo de dado, para isto foram utilizados mais 3 pinos da paralela que informa
qual o tipo do dado que est sendo configurado (comando). A tabela 6 mostra os
comandos que o PC pode enviar ao FPGA.

Tabela 6: Tipo de dado enviado ao FPGA pela paralela


Comando Tipo do dado
010 Coeficiente
100 Ordem do filtro
101 Frequncia de amostragem do filtro
110 Nmero do coeficiente que esta sendo enviado

Alm destes pinos da paralela, outros 3 so utilizados sem passar


necessariamente por este bloco, eles so ligados diretamente ao blocos onde exercem
a funo: um para ligar ou desligar o filtro, outro para habilitar a gravao do coeficiente
na memria RAM e, para o filtro digital tipo IIR, habilitar a gravao de um segundo
coeficiente. A figura 27 mostra a ligao dos pinos da paralela com o FPGA.
37

Figura 27: Ligao dos pinos da paralela com o FPGA

4.2.2.2. Blocos fir e iir

Nos blocos fir e iir esto implementados os firmwares que realizam a filtragem
do sinal. O desenvolvimento destes blocos em VHDL foi baseado na mquina de
estados ilustrada na figura 27. Os dois blocos tem o mesmo nmero de estados, pois a
estrutura para implementao destes dois filtros so muito parecidas. A diferena entre
eles se d dentro do processo de cada estado, pois o filtro digital tipo FIR utiliza duas
memrias RAM e o filtro digital tipo IIR utiliza quatro memrias RAM. A tabela 7
descreve os processos realizados em todos estados.
Com as informaes da tabela 7, possvel calcular o nmero de clocks gastos
para realizar o processamento de uma amostrada do Filtro.
O ADC leva aproximadamente 1.000 ns para disponibilizar a amostra convertida.
A frequncia do clock neste projeto de 25 Mhz, ou seja, um clock a cada 40ns. Com
esta frequncia de clock, do estado de espera at o estado S6 sero consumidos 32
clocks, pois no estado S3 se consome 25 clocks para esperar o ADC converter. Os
outros estados em destaque (S8, S9 e S10) repetem-se at que o total de coeficientes
sejam lidos, assim o nmero de clocks utilizados nestes estados dependem do nmero
de coeficientes (ordem) do filtro projetado. Cada um dos demais estados utilizam 1
clock, ou seja, mais 4 clocks. Com estas informaes conclui-se que o nmero de
clocks necessrios para que uma amostra esteja disponvel na sada calculado pela
equao 3:
nr _ clocks ? 36 ? (nr _ coeficientes ?3) (3)
38
Este valor importante para determinar a frequncia mxima do sinal analgico
de entrada que podemos filtrar neste projeto. Este clculo mostrado no captulo a
seguir.
Tabela 7: Estados dos blocos fir e iir
Estado Descrio
Espera Espera controle de amostragem pedir uma nova amostra conforme a
frequncia de amostragem configurada, ao receber ativa o sinal que manda o
ADC converter e avana para o estado s0
S0 Configura o endereo (joga o endereo no barramento) onde ser gravado a
amostra que ser recebida pelo ADC neste momento. Para o filtro tipo IIR
neste estado tambm configurado o endereo onde ser gravado a ltima
sada processada
S1 Atrasa um clock para manter o sinal de converso do ADC em baixo por pelo
menos 40 ns (S1 + S2)
S2 Atrasa mais um ciclo de clock para manter o sinal de converso do ADC em
baixo por pelo menos 40 ns (S1 + S2)
S3 Desativa o sinal que manda o ADC converter e Espera o ADC informar que a
converso est pronta, aps informar vai ao estado S4
S4 Habilita sinal de gravao da RAM da ltima amostra recebida. Para o filtro
IIR habilita tambm o sinal de gravao da RAM da ltima sada processada
S5 Desativa sinal de gravao da RAM da ltima amostra recebida. Para o filtro
IIR tambm desativa o sinal da RAM da ltima sada processada
S6 Inicia variveis para controlar leitura de coeficientes, amostras e sadas para
o caso do filtro IIR
S7 Configura os endereos de onde ser lido coeficiente, amostra e sada para o
caso do filtro IIR
S8 Espera um clico de clock paras as memrias pegar o valor
S9 ?? Faz a multiplicao do primeiro coeficiente pela ltima amostra lida e
soma na varivel de sada que ser enviada ao DAC. Para o caso do
filtro IIR, tambm faz a multiplicao da ltima sada processada pelo
primeiro coeficiente dos segundo conjuntos (b) de coeficientes.
?? Se o total de coeficientes do filtro j foram todos lidos, joga a varivel
de sada ao barramento do DAC e vai ao estado S10.
?? Se o total ainda no foi lido, prepara variveis para ler um novo
prximo coeficiente, uma amostra anterior a atual e volta ao estado
S7. Para o caso do filtro FIR prepara tambm o prximo coeficiente (b)
e uma sada anterior a atual.
?? Os estados S7, S8 e S9 se repetem at que todos coeficientes sejam
processados.
S10 Ativa a escrita do registrador do DAC e vai ao estado S11
S11 Atrasa um clock para manter o sinal de escrita do DAC por pelo menos 50 ns
(S11 + S12)
S12 Atrasa mais um clock, idem ao S11
S13 Desativa a escrita do registrador do DAC. Volta ao estado de espera
Figura 28: Diagrama de estados para execuo do filtro FIR e IIR

38
40

4.2.2.3. Bloco amostra_ctrl

Este bloco responsvel por controlar a frequncia que o FPGA obtm uma
amostra do ADC, ou seja, a frequncia de amostragem. Esta frequncia deve ser a
mesma frequncia do filtro que foi projetado no MatLab. Para controlar esta frequncia,
a forma encontrada foi pela contagem do nmero de clocks que correspondem a
frequncia desejada, este valor pode ser obtido utilizando-se a equao 4.

? 25.000.000 ?
Nr.ClocksFreq ? ?? ?? (4)
? fs ?

Quando se amostra um sinal analgico, para se preservar toda informao


contida no sinal analgico original, necessrio amostrar um sinal com taxa de
amostragem superior ao dobro da maior frequncia presente no sinal analgico
original. Este teorema introduzido por Nyquist, conhecido por Teorema da
Amostragem. O valor limite correspondente ao dobro da maior frequncia do sinal
conhecido por frequncia de Nyquist [SMITH, 1999]. Desta forma, a frequncia mxima
do sinal analgico que podemos filtrar neste projeto no mnimo dividida por dois, ou
seja, como o clock do projeto 25 Mhz podemos amostrar um sinal de
aproximadamente 12,5 MHz. No entanto esta no a ainda a frequncia mxima do
sinal analgico que podemos filtrar, precisa-se dividir esta frequncia de 12,5 MHz pelo
nmero de clocks gastos para realizar-se a filtragem do sinal que acontece nos blocos
fir e no bloco iir. Este gasto computacional calculado pela equao 3 vista no
captulo anterior, assim a frequncia mxima do sinal analgico de entrada que
podemos aquisicionar calculada pela equao 5.

f max ? 12500000 /( 36 ? (nr _ coeficientes ? 3)) (5)

4.3. Projeto de Software

4.3.1. MatLab

Para gerar os coeficientes do filtro digital tipo FIR, utilizada a funo fir1 que
faz parte da biblioteca de processamento de sinal.do MatLab. Segue abaixo os
parmetros necessrios e o resultado desta funo.
41
coeficentes ? fir1(ordem , [ fc / fs], tipo, janela )
Onde:
?? ordem: Ordem do filtro que est sendo projetado.
?? fc: Frequncia de corte do filtro projetado, nota-se que este parmetro um
vetor, para um tipo de filtro passa-faixa ou rejeita faixa um segundo valor
tambm informado para delimitar a banda.
?? fs: Frequncia de amostragem do filtro projetado.
?? tipo: Corresponde ao tipo do filtro desejado, low para um filtro baixa, high
para um filtro passa-alta, bandpass para um filtro passa-faixa e stop para um
filtro rejeita-faixa.
?? janela: Tipo de janela utilizado para projetar o filtro, boxcar para janela
Retangular.
?? coeficientes: um vetor com os coeficientes do filtro projetado, valores
decimais que esto no intervalo de -1 a 1, que se inseridos no clculo da
equao 1 vista em captulos anteriores resulta na filtragem projetada.
Para gerar os coeficientes do filtro digital tipo IIR, utilizada a funo butter
(butterworth). Este filtro, ao contrrio do FIR, tem dois vetores com os coeficientes.
Segue abaixo os parmetros necessrios e o resultado desta funo.
[b, a ] ? butter( ordem ,[ fc / fs ], tipo )
Onde:
?? ordem: Ordem do filtro que est sendo projetado.
?? fc: Frequncia de corte do filtro projetado.
?? fs: Frequncia de amostragem do filtro projetado.
?? tipo: Corresponde ao tipo do filtro desejado, os mesmos do filtro FIR.
?? [b, a]: vetores de coeficientes do projeto do filtro, valores que se inseridos
no clculo da equao 2 vista em captulos anteriores resulta na filtragem
projetada.
O ambiente de desenvolvimento do MatLab foi utilizado para implementar dois
programas que geram os coeficientes dos filtro FIR e IIR. Alm de implementar as
funes citadas acima, eles tambm gravam os coeficientes gerados em um arquivo
texto para que eles possam ser carregados atravs de outro programa no FPGA via
interface paralela. Eles tambm plotam estes valores de coeficientes em um grfico
para mostrar a curva resposta do filtro que foi projetado. A figura 29 ilustra a curva
42
resposta de um filtro tipo FIR e a figura 30 ilustra a curva resposta de um filtro tipo IIR
com parmetros iguais.

Figura 29: Curva Resposta Filtro FIR Figura 30: Curva Resposta Filtro IIR

4.3.2. Software para carregar dados no FPGA

A tela principal do software mostrada na figura 31, que possibilita ao usurio


informar qual foi a frequncia de amostragem do filtro projeto, escolher o arquivo texto
com coeficientes gerados pelo MatLab e ligar/desligar o filtro.

Figura 31: Tela principal do software

Quando o usurio liga o filtro, o software envia os parmetros do filtro ao FPGA. Antes
de enviar os coeficientes os valores so convertidos para binrio. O software tambm converte
43
a frequncia de amostragem informada em nmero de clocks utilizando a equao 4 vista
anteriormente, ele tambm respeita as pinagens da porta paralela com o FPGA conforme a
figura 27. A figura 32 ilustra o fluxograma das aes do software.

Figura 32: Fluxograma das aes do software


44
45

5. RESULTADOS

Alguns testes em laboratrio foram realizados para testar se os filtros implementados no


FPGA estavam respondendo conforme o filtro projetado no MatLab. Embora o filtro terico
projetado no MatLab seja um filtro ideal e na prtica a resposta ideal no atingida, a variao
entre o filtro ideal e o prtico neste projeto foi maior no filtro IIR. Mesmo assim os dois tipos de
filtro atingiram o objetivo de filtrar os sinais, o resultado de cada filtro pode ser observado
abaixo atravs da curva resposta e tambm das figuras que mostram o sinal filtrado atravs do
osciloscpio.
Quando os testes comearam a serem realizados, dois limitantes surgiram no projeto e
diminuram um pouco o desempenho dos filtros IIR superiores quinta ordem: Para superar
esta dificuldade necessrio mudar o FPGA para um com mais elementos lgicos, isto no foi
possvel neste projeto devido ao pouco tempo de implementao.
Um limitante foi que o FPGA EP1C3T144 trabalha apenas com nmeros inteiros, com isto
houve perda de informao (arredondamento) no clculo.
Outro limitante foi que o FPGA tem poucos elementos lgicos, este fator foi notado apenas
com a implementao do filtro IIR. Este tipo de filtro tem coeficientes com valores grandes e
para represent-los em binrios a representao que foi adotada precisava ser diferente, ter
maior preciso sem perda de informao no nmero.
A representao adotada utiliza 21 bits (1 bit para o sinal) e gera uma srie de valores
binrios distintos correspondentes a uma gama de coeficientes, da mesma forma que um ADC
converte um sinal analgico para um sinal digital (escala). Desta forma valores normalizados
entre -1 e 1 podem ser representados com uma resoluo de at 6 casas decimais (0,000001).
Uma nova forma de representao para converter nmeros decimais com valores grandes
como do filtro IIR, exigiria o uso de operaes matemticas complexas como multiplicao,
diviso e potncia no FPGA, para poder converter este valor em nmero decimal novamente.
Quando se faz estas operaes matemticas no FPGA, o nmero de elementos lgicos
necessrios aumenta consideravelmente, por isto o nmero de elementos lgicos do FPGA
ficou limitado para este tipo de filtro, esta limitao notada quando a ordem do filtro IIR
aumentada, justamente porque os valores dos coeficientes do filtro IIR tambm vo
aumentando e conseqentemente tendo maior perda de informao na representao do
nmero binrio. J no filtro FIR os coeficientes so valores normalizados de -1 a 1, a
representao adotada foi suficiente sem perda de informao.

5.1.1. Filtro FIR


46
Todos os testes realizados para este tipo de filtro responderam conforme o filtro que foi
projetado no MatLab. No primeiro teste realizado, um filtro passa-baixa com frequncia de
amostragem fs=1 KHz, frequncia de corte fc=400 Hz e ordem=5, 15 e 32 foi projetado. Pela
figura 33 pode-se observar a curva resposta experimental deste filtro, na figura 34 pode-se
observar tambm a curva resposta terica deste mesmo filtro. Pelas respostas pode-se verificar
o desempenho do filtro.

Figura 33: Curva terica passa-baixa, fs=1000 Hz, fc=400 Hz e ordem=5,15,32

Figura 34: Curva experimental passa-baixa, fs=1000 Hz, fc=400 Hz e ordem=5,15,32


47
A figura 35 mostra outro teste realizado com um filtro passa-baixa, fs=1 KHz, fc=100 Hz
e ordem=15. O osciloscpio mostra o momento que a frequncia do sinal de entrada de 50
Hz e na figura 36 mostra no momento que a frequncia de entrada de 150 Hz.

x
Figura 35: Sinal filtrado do FIR passa-baixa com 50 Hz de entrada

Figura 36: Sinal filtrado do FIR passa-baixa com 150 Hz de entrada

Outros testes foram realizados com outros tipos de filtro como passa-alta, passa-faixa,
rejeita-faixa, tambm foram testados vrias ordens sendo que todos estes filtros responderam
conforme o projetado no MatLab.
48
5.1.2. Filtro IIR

No primeiro teste realizado, um filtro passa-baixa com frequncia de amostragem fs=1 Khz,
frequncia de corte fc=100 Hz e ordem=5 foi projetado. Pela figura 37 pode-se observar a
Curva resposta terica do filtro no MatLab. A figura 38 mostra no osciloscpio o momento que a
frequncia de entrada feita por um Gerador de Sinal mostra 50 Hz e na figura 39 mostra no
osciloscpio o momento que a frequncia de entrada de 150 Hz.

Figura 37: Curva terica IIR passa-baixa, fs=1000 Hz, fc=100 Hz e ordem=5

Figura 38: Sinal filtrado do IIR passa-baixa com 50 Hz de entrada


49

Figura 39: Sinal filtrado do IIR passa-baixa com 150 Hz de entrada

Outros testes foram realizados com outros tipos de filtro como passa-alta, passa-faixa e
rejeita-faixa, todos eles responderam conforme o filtro projetado no MatLab at uma ordem
limitada, na prtica quando se tentava passar acima da 5a ordem, o sinal de sada ficava
danificado, devido a limitao que foi explicada anteriormente. A figura 40 mostra o sinal de
sada danificado do mesmo filtro passa-baixa, com ordem=15.

Figura 40: Sinal danificado pela limitao do hardware


50
51

6. CONCLUSO

Com base nos experimentos realizados, pode-se concluir que o uso de Computao
Reconfigurvel utilizando um FPGA eficaz e uma alternativa vivel de baixo custo para a
implementao de um sistema DSP.
O projeto realizado alcanou o objetivo desejado, tornou-se um filtro digital reconfigurvel
FIR e IIR, que pode mudar o tipo de filtragem conforme um filtro projeto via software no
MatLab, demonstrando a implementao de um sistema DSP com a flexibilidade do uso de um
FPGA, com a facilidade de programao via software e sem necessidades de mudanas no
hardware.
Este projeto pode ser melhorado buscando-se maximizar o desempenho da filtragem do
sinal permitindo o uso do filtro IIR com maior ordem. Para isto necessrio mudar o FPGA
para outro com mais elementos lgicos para representao de valores decimais com preciso,
pois conforme o aumento de operaes matemticas mais complexas como diviso, subtrao
e potncia o uso dos elementos lgicos do FPGA tambm vai aumentando.
52
53

7. REFERNCIAS

[ALTERA, 2003] ALTERA Corporation. Cyclone Device Handbook. Maio de 2003.

[ALTERA, 2005] ALTERA Corporation. Implementando sistemas DSP em FPGA.


2005.

[ARAGO, 1998] ARAGO, Antnio Carlos de Oliveira Souza. Uma Arquitetura


Sistlica para Soluo de Sistemas Lineares Implementadas com circuitos
FPGAs. So Carlos, ICMC USP - Instituto de Cincias Matemticas e de
Computao, Dezembro de 1998.

[BAPTISTA, 2004] BAPTISTA Manuel A. E.; AFONSO, Ernesto R. Processamento


Digital de Sinal. Viseu, ISV Instituto Superior Politcnico de Viseu, Maio de 2004.

[DHARBE, 1998] DHARBE David. VHDL. Universidade Federal do Rio Grande do


Norte. Cincias Matemticas e de Computao, Dezembro de 1998.

[HAYKIN, 2001] HAYKIN Simon; VEEN, Barry Van. Sinais e Sistemas. Porto Alegre:
Bookman, 2001.

[PI, 2003] PI Componentes. Instalao da ByteBlaster, ByteBlasterMV e


ByteBlaster II, Maro de 2003.
Disponvel em: http://www.picomponentes.com.br/viewnoticias.asp?idnot=21, data de
acesso: Abril de 2006.

[ROCHA, 2001] ROCHA, Adson Ferreira. Filtros Digitais FIR e IIR. Braslia,
Universidade de Braslia, 2001.

[SMITH, 1999] SMITH, S. W. The Scientist & Engineers Guide To Digital Signal
Processing. 2nd ed. San Diego, California Technical Publishing, 1999.

[VILLASENOR, 1997] VILLASENOR, John; SMITH, William Mangione. Configurable


Computing. USA, Scientific American, Junho de 1997.

S-ar putea să vă placă și