Documente Academic
Documente Profesional
Documente Cultură
Curitiba
2006
Centro Universitrio Positivo UnicenP
Ncleo de Cincias Exatas e Tecnolgicas NCET
Engenharia da Computao
Eli Renato Barbosa
Curitiba
2006
Termo de Aprovao
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 Tabelas........................................................................................................................... ix
Lista de Siglas............................................................................................................................... x
Resumo ......................................................................................................................................... xi
1. INTRODUO ...........................................................................................................................1
3. ESPECIFICAO.....................................................................................................................25
v
3.2.2. Interface Paralela................................................................................................27
3.5. Cronograma.................................................................................................................28
4. PROJETO ...............................................................................................................................31
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
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
ix
Lista de Siglas
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.
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.
xii
1
1. INTRODUO
2. FUNDAMENTAO T ERICA
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].
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].
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.
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].
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)
2.2. FPGA
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
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].
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].
3. ESPECIFICAO
Mdulo de Software
?? Matlab.
?? Quartus II.
?? Programa para carregar os coeficientes para o FPGA.
Mdulo de Hardware
?? ADC.
?? FPGA.
?? DAC.
3.5. Cronograma
30
31
4. PROJETO
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.2. FPGA
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.
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.
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
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 ?
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
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.
5. RESULTADOS
x
Figura 35: Sinal filtrado do FIR passa-baixa com 50 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
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.
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
[HAYKIN, 2001] HAYKIN Simon; VEEN, Barry Van. Sinais e Sistemas. Porto Alegre:
Bookman, 2001.
[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.