64
CRISTIANO PEGORARO CHENET IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA PROGRAMÁVEL NA LINGUAGEM VHDL CANOAS, 2011

IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

  • Upload
    vannga

  • View
    219

  • Download
    2

Embed Size (px)

Citation preview

Page 1: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

CRISTIANO PEGORARO CHENET

IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA

PROGRAMÁVEL NA LINGUAGEM VHDL

CANOAS, 2011

Page 2: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

CRISTIANO PEGORARO CHENET

IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA

PROGRAMÁVEL NA LINGUAGEM VHDL

Trabalho de conclusão apresentado ao Curso de Engenharia de Telecomunicações do Centro Universitário La Salle - Unilasalle, como exigência parcial para a obtenção do grau de Bacharel em Engenharia de Telecomunicações.

Orientação: Profº Dr. Tiago Roberto Balen

CANOAS, 2011

Page 3: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

RESUMO

As aplicações do processamento digital de sinais estão aumentando rapidamente.

Algumas de elevada velocidade necessitam de implementação por hardware. O

dispositivo de lógica programável geralmente usado para tal é a FPGA (field

programmable gate arrays), que apresenta algumas vantagens, como menor espaço

ocupado na placa, menor consumo de energia, maior confiabilidade, menor

complexidade de desenvolvimento e geralmente menor custo de fabricação. No

Brasil atual faltam profissionais com conhecimento nessa área. Exemplo disso é a

Datacom, maior fabricante brasileira de equipamentos para telecomunicações, que

possui constantemente vagas em aberto para desenvolvedores de lógica

programável. Tendo em vista os elementos citados, esse trabalho constitui-se na

implementação de um filtro digital em lógica programável usando a linguagem VHDL

(VHSIC hardware description language). Partindo da aplicação de filtragem da voz

humana, bastante comum e de utilização em diversos sistemas, aborda o projeto do

filtro digital e a sua implementação em lógica com foco na FPGA EP1C6Q240, da

família Cyclone, da Altera. Os resultados da síntese do código gerado permitem

verificar que os blocos de arranjo lógico (LABs, logic array blocks) e os elementos

lógicos (LEs, logic elements) são parâmetros críticos na definição de recursos

disponíveis em uma FPGA para a gravação de uma lógica programável. Outro

parâmetro importante em um projeto é a máxima freqüência de operação dos

relógios, pois define se o hardware gerado atende à aplicação planejada.

Palavras-chave: Processamento digital de sinais. Filtros digitais. Sistemas digitais.

FPGAs. VHDL.

Page 4: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

SUMÁRIO

1 INTRODUÇÃO ................................................................................................. 4

2 TEORIA DE FILTROS DIGITAIS ........................ ............................................. 6

2.1 Filtros FIR ....................................... ................................................................. 6

2.2 Filtros IIR ....................................... .................................................................. 7

2.3 Comparativo entre filtros FIR e IIR ............... ................................................. 9

2.4 Projeto de filtros FIR ............................ ........................................................ 10

2.4.1 Especificação de filtros ............................................................................... 10

2.4.2 Métodos de projeto de filtros ....................................................................... 11

3 APLICAÇÕES DE FILTROS DIGITAIS .................... ..................................... 13

3.1 Área médica: remoção do EMG do sinal de ECG ....... ............................... 13

3.2 Área de instrumentação: eliminação de ruídos em esp ectroscópio........ 17

3.3 Área de comunicações: cancelamento da sombra do sin al de televisão 19

4 IMPLEMENTAÇÃO, .................................... ................................................... 22

4.1 Projeto do filtro digital ......................... ........................................................ 23

4.2 Implementação da lógica programável usando a lingua gem VHDL ........ 27

4.2.1 Representação dos dados e aritmética ....................................................... 30

4.2.2 Conversão de entrada ................................................................................. 34

4.2.3 Conversão de saída .................................................................................... 37

4.2.4 Filtro ............................................................................................................ 39

5 RESULTADOS ........................................ ....................................................... 47

5.1 Revisão dos conceitos de arquitetura de FPGAs ..... ................................. 47

5.2 Características das FPGAs da família Cyclone da Alt era ......................... 50

5.3 Resultados da síntese da lógica implementada ...... .................................. 52

6 CONCLUSÃO ......................................... ....................................................... 55

REFERÊNCIAS ......................................................................................................... 57

APÊNDICE A – CÓDIGO VHDL GERADO NO TRABALHO ....... ............................ 60

Page 5: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

4

1 INTRODUÇÃO

O processamento digital de sinais (DSP, digital signal processing) estuda as

regras que definem o comportamento dos sinais que são funções de variáveis

discretas e os sistemas usados para processá-los. Também lida com sinais que são

funções de variáveis contínuas utilizando técnicas digitais (DINIZ, 2004, p. 25). O

modelo básico de um sistema de DSP é constituído de um bloco para conversão do

sinal analógico em digital (ADC, analog to digital converter), um bloco de DSP

propriamente dito e um bloco para conversão do sinal digital em analógico (DAC,

digital to analog converter) (FLOYD, 2007, p. 778), da maneira ilustrada na figura 1.

Figura 1 - Modelo básico de um sistema de DSP Fonte: FLOYD, 2007, p. 778.

Devido às diversas vantagens do DSP, atualmente suas aplicações estão

aumentando rapidamente (MITRA, 2006, p. 39; TOCCI, 2003, p. 551). A principal

delas é a filtragem e condicionamento de sinais analógicos (TOCCI, 2003, p. 549)

através de filtros digitais.

Os filtros digitais são implementados por software, em um processador de

sinais digitais, ou por hardware específico (DINIZ, 2004, p. 22). Filtros que requerem

elevada velocidade exigem implementação por hardware em dispositivos de lógica

programável (TOCCI, 2003, p. 641), o que na maioria das vezes é feito com matrizes

de portas programáveis por campo (FPGAs, field programmable gate arrays). Elas

apresentam algumas vantagens como menor espaço ocupado na placa, menor

consumo de energia, maior confiabilidade, menor complexidade de desenvolvimento

e, geralmente, menor custo de fabricação (TOCCI, 2003, p. 642).

No Brasil, devido à efervescência de seu desenvolvimento industrial nos

últimos anos, faltam profissionais com conhecimento para desenvolver sistemas

baseados em FPGAs e voltados para DSP. A Datacom, maior fabricante brasileira

Page 6: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

5

de equipamentos para telecomunicações, possui constantemente vagas em aberto

para profissionais dessa área. Em suma, são desejados profissionais com

conhecimento de sistemas digitais e da linguagem de descrição de hardware de

circuitos integrados de alta velocidade (VHDL, VHSIC hardware description

language) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

circuitos digitais em FPGAs.

Tendo em vista os elementos citados, esse trabalho constitui-se na

implementação de um filtro digital em lógica programável usando a linguagem

VHDL. Partindo da aplicação de filtragem da voz humana, bastante comum e de

utilização em diversos sistemas, aborda o projeto do filtro digital e a sua

implementação em lógica com foco na FPGA EP1C6Q240, da família Cyclone, da

Altera.

Os resultados do trabalho são definidos em função dos recursos exigidos pela

lógica programável gerada para viabilizar sua síntese e gravação na FPGA focada.

São analisados principalmente parâmetros relacionados à arquitetura das FPGAs,

como blocos de arranjo lógico (LABs, logic array blocks), elementos lógicos (LEs,

logic elements), tabelas de busca (LUTs, look up tables), blocos e bits de memória e

freqüência máxima de operação.

De forma a registrar o trabalho realizado, esse documento está organizado da

seguinte forma: na seção 2 é discutida a teoria de filtros digitais com foco nas

melhores soluções para seu projeto. A seção 3 estuda algumas aplicações para

filtros digitais. Na seção 4 é apresentada a solução gerada, que abrange o projeto do

filtro e a sua implementação em lógica programável. A seção 5 mostra e analisa os

resultados obtidos.

Page 7: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

6

2 TEORIA DE FILTROS DIGITAIS

Os filtros digitais são usados para modificar as características de um sinal no

domínio do tempo ou da freqüência. Os mais comuns são os filtros lineares e

invariantes no tempo (LTI, linear time invariant). Um LTI interage com o sinal de

entrada através de uma convolução linear (MEYER, 2007, p. 165), denotada por y =

f × x onde f é a resposta do filtro ao impulso, x é o sinal de entrada e y o sinal de

saída. A convolução linear é definida em (1), na qual n é o número inteiro que

identifica o sinal e k o número inteiro que identifica o seu deslocamento.

���� � ���� � ���� � ������ � ��

� ������ � ��

(1)

Os filtros digitais LTI são classificados em resposta ao impulso finita (FIR, finite

impulse response) e resposta ao impulso infinita (IIR, infinite impulse response).

Filtros FIR são baseados em finitos números de valores amostrados, reduzindo as

somas da convolução linear à finitas somas por amostra de saída. Já os filtros IIR

requerem que infinitas somas sejam realizadas (MEYER, 2007, p. 165).

Nesta seção é revisada a teoria de ambas as classificações de filtros,

estabelecido um comparativo entre elas e discutido o projeto desses filtros, desde a

especificação até a metodologia utilizada.,

2.1 Filtros FIR

A transformada z é uma generalização da transformada de Fourier de tempo

discreto, ambas ferramentas matemáticas utilizadas para transformar a

representação no domínio do tempo de uma função discreta no tempo para a sua

representação no domínio da freqüência. Conforme o próprio nome indica, ela é

definida em função da variável complexa z, que no tempo pode ser interpretada

como um retardo. Essa transformada é usada para explicar o conceito de filtragem

digital, pois este processo consiste justamente em receber um sinal discreto no

Page 8: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

7

tempo e processá-lo de maneira a ajustar suas características no domínio da

freqüência. Assim, um filtro FIR tem a função sistema dada pelo polinômio em z-1 de

(2) (HAYES, 2006, p. 318).

���� � ��������

��� (2)

No domínio do tempo, para uma entrada x(n), a saída é dada conforme (3).

���� � ������ � ��

��� (3)

Existem diversas estruturas para a implementação de filtros FIR a partir de (3),

como, por exemplo, as estruturas direta, em cascata e treliça. Conforme o nome

indica, a estrutura direta é a interpretação mais simples que descende de (3) e,

portanto, é a abordada nesse trabalho. Ilustrada na figura 2, ela exige (N+1)

multiplicações, N somas e N retardos (HAYES, 2006, p. 318).

Figura 2 - Um filtro FIR implementado na estrutura direta Fonte: HAYES, 2006, p. 318.

2.2 Filtros IIR

Um filtro IIR tem a função sistema dada por (4).

Page 9: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

8

���� � �������� � ∑ �������

���1 � ∑ �������

��� (4)

A entrada x(n) e a saída y(n) relacionam-se pela equação de diferenças

lineares com coeficientes constantes conforme (5) (HAYES, 2006, p. 321).

���� � ������ � � � ������ � ��

���

��� (5)

Da mesma forma que para os filtros FIR, também existem diversas estruturas

que implementam filtros IIR, nesse caso a partir de (5). A maneira mais comum é

chamada de estrutura direta I e é mostrada na figura 3. Ela exige por amostra de

saída (p+q+1) multiplicações e (p+q) somas e retardos.

Figura 3 - Implementação de um filtro IIR pela forma direta I Fonte: HAYES, 2006, p. 322.

A equação (5) pode ser reescrita como um par de equações de diferenças,

como mostrado em (6). É interessante notar que a primeira equação é um filtro FIR

de entrada x(n) e saída w(n) e a segunda é um filtro só de pólos de entrada w(n) e

saída y(n). Esse par de equações forma uma cascata de dois sistemas, visualmente

perceptíveis na figura 3.

Page 10: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

9

��� � ������ � �

���

���� � ��� � ������ � ��

���

(6)

2.3 Comparativo entre filtros FIR e IIR

Os filtros FIR e IIR podem ser comparados a partir dos seguintes aspectos

(KUO, 2005, p. 305 - 378):

a) fase: filtros FIR podem ter resposta linear nesse aspecto, resultando em

atraso constante e sem distorções de fase. De modo contrário, os filtros IIR

têm resposta não-linear, conseqüentemente tendo resultado com atraso

variável e com distorções de fase;

b) estabilidade: filtros FIR são sempre estáveis pois não são recursivos. De

forma oposta, como os filtros IIR são recursivos, faz-se necessário um

projeto cuidadoso para garantir que estes sejam estáveis;

c) erros de precisão: filtros FIR são pouco sensíveis à quantização dos

coeficientes e ruídos de arredondamento. Ao contrário, filtros IIR são muito

sensíveis a esses parâmetros e, portanto, apresentam erros de precisão

maiores;

d) eficiência na implementação: nesse parâmetro os filtros IIR apresentam

relativa vantagem pois podem ser implementados com menor ordem para

obter o mesmo desempenho de um filtro FIR. Porém, embora com mais

hardware, os filtros FIR são mais simples de serem implementados. A razão

para isso é apresentada na seção 2.2, na qual é mencionado que um filtro

IIR em estrutura direta I é composto por uma cascata de dois sistemas: um

filtro FIR e um filtro só de pólos;

e) resposta em freqüência: os filtros IIR produzem resposta em freqüência mais

precisa em comparação aos filtros FIR devido à contribuição dos pólos

Page 11: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

10

existentes nos filtros IIR.

Percebe-se que ambos os filtros apresentam vantagens e desvantagens, de

forma que idealmente algumas aplicações requerem implementação através de

filtros FIR e outras através de filtros IIR. Porém, na prática verifica-se que os filtros

FIR são consideráveis vezes mais utilizados e discutidos, principalmente em função

de suas características já mencionadas de fase linear, estabilidade e facilidade de

implementação. Assim, diante dessa constatação, esse trabalho limita-se a trabalhar

a implementação de um filtro FIR.

2.4 Projeto de filtros FIR

Projetar e implementar um filtro digital envolve diversas etapas. Inicialmente

devem ser feitas as especificações, que podem incluir restrições de magnitude e/ou

de fase para a resposta em freqüência, restrições da resposta do filtro à amostra

unitária ou ao degrau e especificações da ordem e tipo do filtro. O passo seguinte é

encontrar um conjunto de coeficientes de filtro que produza um filtro aceitável e

escolher uma estrutura apropriada. O último passo é implementar o sistema em

hardware ou software (HAYES, 2006, p. 391).

Na seção 2.1 foi apresentada a estrutura direta, a interpretação mais simples

que descende do conceito de filtros FIR. Nesta seção são apresentadas as

especificações necessárias a um projeto de filtros e os métodos para encontrar o

conjunto de coeficientes que produza o filtro desejado.

2.4.1 Especificação de filtros

Supondo o projeto de um filtro passa-baixa com uma freqüência de corte ωc, a

resposta Hd à freqüência ω é dada por (7), na qual a fase é representada por α.

Page 12: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

11

�!"#$%& � '#�$(% , |+| , +-0, +- / |+| , 01 (7)

O filtro mostrado em (7) é não causal e instável, portanto não é realizável.

Assim, é necessário relaxar as restrições ideais em relação à resposta em

freqüência e permitir algum desvio da resposta ideal. As especificações para um

filtro passa-baixa terão tipicamente a forma mostrada em (8) (HAYES, 2006, p. 391).

1 � δ3 / |�"e56&| , 1 � δ3, 0 , |+| / +�

|H"e56&| , δ8, +9 , |+| / 0 (8)

A equação (8) é ilustrada na figura 4. Assim, as especificações do filtro incluem

a freqüência de corte ωp da faixa de passagem, a freqüência de corte ωs da faixa de

rejeição, o desvio da faixa de passagem δp e o desvio da faixa de rejeição δs. Os

desvios das faixas de passagem e de rejeição são geralmente dados em decibels e

o intervalo [ωp, ωs] é chamado de faixa de transição.

Figura 4 - Especificações de um filtro passa-baixa Fonte: HAYES, 2006, p. 392.

Definidas as especificações, o passo seguinte consiste em calcular os

coeficientes utilizando algum método de projeto de filtros.

2.4.2 Métodos de projeto de filtros

Existem diversos métodos de projeto de filtros FIR, como exemplo por janelas,

Page 13: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

12

equiripple, amostragem de freqüência, fase mínima e Parks-McClellan (HAYES,

2006), (MITRA, 2006) e (OPPENHEIM, 1999). Os mais comuns abordados pela

teoria são o por janelas e equiripple. Nesse trabalho não é abordada a teoria destes

métodos, pois ela está bem explicada na literatura mencionada. Além disso,

atualmente existem diversos softwares que executam os cálculos conforme diversos

métodos, bastando ao projetista certificar-se de qual método mais o convém.

O interessante é notar que o método por janelas apresenta características que

resultam em um filtro menos robusto que um filtro projetado pelo método equiripple.

São elas:

a) os parâmetros δp e δs não podem ser controlados independentemente,

sendo aproximadamente iguais. Portanto é necessário superdimensionar o

filtro na faixa de passagem para satisfazer as especificações mais estritas

da faixa de rejeição (HAYES, 2006, p. 396);

b) para a maioria das janelas o ripple não é uniforme nem na faixa de

passagem nem na de rejeição, e geralmente diminui quando nos afastamos

da faixa de transição. Concedendo que o ripple seja distribuído

uniformemente por toda a faixa, um ripple de pico menor será produzido

(HAYES, 2006, p. 396);

c) não é possível especificar a faixa de transição delimitada pelo intervalo [ωp,

ωs]. Especifica-se apenas a freqüência de corte ωc, e nesse caso é possível

existir uma faixa de passagem e uma faixa de rejeição com valores que não

podem ser aproveitados, devido a seus ganhos já não estarem valendo um

ou zero (BARROS, 2006, p. 20).

Dado que o método equiripple não apresenta essas características

desvantajosas do método por janelas, esse trabalho utiliza o método equiripple para

o projeto do filtro implementado.

Page 14: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

13

3 APLICAÇÕES DE FILTROS DIGITAIS

O processamento digital de sinais (DSP, digital signal processing) ganhou

popularidade nos anos de 1960 com a introdução da tecnologia digital. Ela

possibilitou o processamento de sinais em hardware ganhar velocidade, facilidade

de uso e tornar-se mais barato e disponível (KUO, 2005, p. 1). Atualmente a

principal aplicação do DSP é na filtragem e condicionamento de sinais analógicos

(TOCCI, 2003, p. 549). Assim, filtros digitais são aplicados em diversas áreas, como

telecomunicações, análise e processamento de sinais biomédicos e processamento

de voz, áudio e vídeo.

Nessa seção são apresentadas três aplicações de filtros digitais. Na área

biomédica, Chand (2010) propôs a implementação em uma matriz de portas

programáveis por campo (FPGA, field programmable gate array) de um filtro passa-

baixa FIR rápido para a remoção do eletromiograma (EMG) do sinal de

eletrocardiograma (ECG). Para instrumentação, Messai, Nour e Abdellani (2009)

projetaram e implementaram um conjunto de filtros digitais FIR e IIR para a

eliminação de ruídos em espectroscópios de raios gama. Na área de comunicações,

Pora e Siriluangtong (2002) projetaram e implementaram um sistema com filtro FIR

baseado em FPGA, destinado ao cancelamento do efeito de sombra do sinal de

radiodifusão de televisão codificado em linha de fase alternante (PAL, phase

alternating line).

3.1 Área médica: remoção do EMG do sinal de ECG

As condições físicas do coração são diagnosticadas com a ajuda do sinal de

ECG. Esse sinal é a representação das atividades elétricas do coração. Na figura 5

é mostrado o traço típico do sinal de ECG e na figura 6 um período da forma de

onda, o qual representa um ciclo da transferência do sangue do coração para as

artérias. O sinal de ECG é composto por várias ondas, como por exemplo onda Q,

onda R e onda S, conforme pode ser visto na figura 6. Cada uma fornece vários

tipos de informação para a análise da condição do coração de um paciente

Page 15: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

14

(SHACKIL apud MITRA, 2006, p. 13).

Figura 5 - Traço típico do sinal de ECG Fonte: MITRA, 2006, p. 13.

Figura 6 - Um período da forma de onda do ECG Fonte: MITRA, 2006, p. 13.

A saúde do coração é diagnosticada em termos da variabilidade da freqüência

cardíaca (HRV, heart rate variability) (CHATLAPALLI apud CHAND, 2010). Ela é

definida como o intervalo de tempo entre duas ondas R, as quais representam o pico

do chamado complexo QRS.

O sinal de ECG original contém vários tipos de ruído, como ruído de contato

dos eletrodos, ruído proveniente da alimentação do equipamento e ruído da

contração dos músculos, os quais podem gerar uma detecção incoerente do

complexo QRS. Portanto são necessários filtros para retirar esses ruídos e aumentar

a sensibilidade de detecção.

A implementação proposta por Chand (2010) tem o objetivo de remover o ruído

gerado pela contração dos músculos, que também é chamado de EMG. Existem

diversas abordagens em software para a detecção das ondas R, porém para

resolver o problema da baixa velocidade delas a proposta é baseada em uma

implementação em hardware, através de FPGAs.

O filtro projetado é do tipo FIR com estrutura direta, exatamente como

mostrado na seção 2.1. Pelos mesmos motivos apresentados em 2.4.2, o método de

Page 16: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

15

projeto do filtro utilizado foi o equiripple, realizando os cálculos dos coeficientes

através da ferramenta de projeto e análise de filtros (FDA Tool, Filter Design and

Analysis Tool) do Matlab.

O filtro foi especificado com a freqüência de corte ωp da faixa de passagem

igual a 35 Hz, a freqüência de corte ωs da faixa de rejeição igual a 45 Hz, desvio da

faixa de passagem δp igual a 1,925 dB, desvio da faixa de rejeição δs igual a 48,25

dB e freqüência de amostragem igual a 256 Hz. O resultado é um filtro com 37

coeficientes, cuja resposta em freqüência é mostrada na figura 7.

Figura 7 - Filtro projetado para a remoção do EMG do sinal de ECG Fonte: CHAND, 2010.

Para quantizar os coeficientes do filtro foi adotada a notação de ponto fixo

Q16.14. Essa notação, conhecida por ter sido adotada pela Texas Instruments,

segue o formato genérico Qm.n, em que m é o número de bits utilizado para

representar a parte inteira do número e n o número de bits para representar a parte

fracional. Além desses é necessário um bit adicional para representar o sinal,

portanto o número representado nessa notação é composto por m + n + 1 bits. Eles

são organizados da seguinte forma: o bit mais significante (MSB, most significant bit)

representa o sinal; após, são escritos os m bits e, por fim, até o bit menos

significativo (LSB, least significant bit), são escritos os n bits.

A arquitetura implementada em lógica foi chamada de árvore de somadores

ramificados e está ilustrada na figura 8. A vantagem dela é que as somas podem ser

realizadas em paralelo, reduzindo assim o atraso do filtro.

Page 17: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

16

Figura 8 - Arquitetura lógica para o filtro de remoção do EMG do sinal de ECG Fonte: CHAND, 2010.

Nas figuras 9 e 10 estão mostradas simulações realizadas com o filtro

implementado. A figura 9 ilustra um sinal de entrada e a figura 10 o sinal filtrado.

Pode-se observar neste último um sinal de ECG nítido, ausente de ruído.

Figura 9 - Sinal de entrada do filtro proposto por Chand (2010) Fonte: CHAND, 2010.

Page 18: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

17

Figura 10 - Sinal filtrado pela implementação de Chand (2010) Fonte: CHAND, 2010.

3.2 Área de instrumentação: eliminação de ruídos em espectroscópio

A radiação gama é um tipo de radiação eletromagnética produzida por

elementos radioativos, processos subatômicos e fenômenos astrofísicos. Para a

avaliação do espectro da radiação gama é utilizado o espectroscópio de raios gama,

dispositivo que através do método de absorção correlaciona a quantidade de energia

absorvida em função do comprimento de onda da radiação incidente.

Equipamentos de medida usados em espectroscopia nuclear são

particularmente sensíveis à relação sinal ruído (SNR, signal to noise rate), fator

determinante para garantir a ótima qualidade da medida (GATTI; MANFREDI apud

MESSAI; NOUR; ABDELLANI, 2009). Uma das principais causas desses erros de

medida é o ruído eletrônico inserido pelo próprio equipamento, especialmente

quando o sinal medido é relativamente baixo. Também contribuem para erros

flutuações do nível de corrente direta (DC, direct current), efeitos do acúmulo de

pulsos, distúrbios eletromagnéticos na fonte de alimentação e instabilidades

térmicas (NICHOLSON apud MESSAI; NOUR; ABDELLANI, 2009). Com a

introdução, nos últimos anos, das técnicas de DSP no campo da espectroscopia

nuclear de raios gama, todas essas fontes de erro podem ser eliminadas ao mesmo

tempo. O processamento digital do sinal proveniente do espectroscópio permite a

síntese de qualquer função de ponderação. Essa função é implementada com filtros

Page 19: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

18

digitais próximos aos teoricamente conhecidos como ideais (GATTI apud MESSAI;

NOUR; ABDELLANI, 2009).

Na figura 11 é apresentada a arquitetura típica de um espectroscópio digital de

raios gama. O sinal detectado pelo transdutor passa por um pré-amplificador, por um

filtro anti-aliasing e por um conversor analógico digital (ADC, analog to digital

converter). As amostras geradas são tratadas em um estágio de processamento

digital, implementado em DSP ou FPGA, e o resultado é mostrado em um monitor. O

trabalho de Messai, Nour e Abdellani (2009) consiste no projeto e implementação de

um conjunto de filtros FIR e IIR a serem adicionados no estágio de processamento

digital, com o objetivo de eliminar as fontes de erro.

Figura 11 - Arquitetura típica de um espectroscópio digital de raios gama Fonte: MESSAI; NOUR; ABDELLANI, 2009.

O conjunto de filtros projetados é organizado conforme mostrado na figura 12.

O sinal proveniente do ADC é condicionado a um filtro IIR, cuja saída está ligada à

entrada de dois filtros FIR. O filtro IIR é chamado de pole-zero cancelattion e tem a

função de eliminar o longo decaimento exponencial de cada amostra no tempo,

efeito gerado no pré-amplificador. O filtro FIR para baseline measurements é

destinado a eliminar instabilidades e flutuações que ocorrem lentamente ao longo do

tempo devido a variações térmicas. O segundo filtro FIR, para energy measurement,

é destinado à estimação da energia dos pulsos (MESSAI; NOUR; ABDELLANI,

2009).

Page 20: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

19

Figura 12 - Organização dos filtros projetados para espectroscópios digitais Fonte: MESSAI; NOUR; ABDELLANI, 2009.

A implementação da proposta foi feita separadamente em uma placa que

contém um DSP. Os três filtros seguiram a estrutura de filtros direta.

3.3 Área de comunicações: cancelamento da sombra do sinal de televisão

O trabalho desenvolvido por Pora e Siriluangtong (2002) destina-se a cancelar

o efeito de sombra do sinal de televisão PAL. Este é o sistema usado atualmente em

grande parte dos países para a codificação da cor no sinal de vídeo transmitido via

radiodifusão analógica. Embora a radiodifusão analógica esteja sendo gradualmente

substituída pela digital, esta é uma aplicação interessante para mostrar como filtros

digitais são úteis na área de comunicações.

Em algumas situações não desejadas, a propagação do sinal de televisão via

radiodifusão ocorre por diversos caminhos. Isso faz com que um mesmo quadro da

imagem chegue ao receptor diversas vezes em instantes de tempo diferentes e com

potência variável. O resultado disso é conhecido como sombra, efeito que gera uma

espécie de sombra na imagem retratada.

A sombra pode ser removida com a ajuda do sinal de referência para

cancelamento da sombra (GCR, ghost cancellation reference), sinal que é

transmitido juntamente com vídeo durante o intervalo de inibição vertical. Como o

GCR recebe a mesma distorção do sinal de vídeo, a idéia é que o receptor possa

estimar a resposta do canal com base no sinal GCR recebido e aplicar uma

equalização no vídeo para que a sombra seja removida. A figura 13 mostra o padrão

GCR-C com polaridade positiva da International Telecommunication Union (ITU)

Page 21: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

20

adotado no projeto de Pora e Siriluangtong (2002). Consiste em um sinal senoidal

cuja freqüência aumenta gradativamente.

Figura 13 - Padrão GCR-C com polaridade positiva Fonte: Pora; Siriluangtong, 2002.

Nos Estados Unidos, o GCR passou a ser transmitido via radiodifusão em

1993, acontecendo o mesmo na Europa (Pao; Khoo; Willson, 1997). Porém os

sistemas de cancelamento da sombra nunca se popularizaram, devido ao elevado

custo do processador de sinais de alto desempenho necessário. Assim a proposta

de Pora e Siriluangtong (2002) é o projeto de um sistema de cancelamento de

sombra possível de ser adaptado em televisores para usuários domésticos.

Na figura 14 é representado o sistema proposto. Os blocos do mesmo são

implementados em um separador do sinal de sincronismo, um ADC, um conversor

digital analógico (DAC, digital to analog converter), um DSP e uma FPGA.

Figura 14 - Estrutura do sistema de cancelamento de sombra proposto Fonte: Pora; Siriluangtong, 2002.

Page 22: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

21

O separador do sinal de sincronismo separa o sincronismo do sinal de vídeo

composto e é implementado através do circuito integrado LM1881. O ADC utiliza o

circuito integrado THS1031, o qual tem resolução de 8 bits e foi configurado para

obter 12 × 106 amostras/s. O separador do sinal GCR, feito na FPGA, utiliza o sinal

de sincronismo e o sinal de vídeo digitalizado para extrair o GCR e armazená-lo em

um buffer first-in-first-out (FIFO). Baseado no efeito do canal sobre o sinal GCR

separado, o DSP calcula parâmetros otimizados para ajuste do filtro FIR. O DAC da

saída do sistema, implementado através do circuito integrado THS5641, converte 8

bits novamente em sinal de vídeo analógico.

O filtro FIR precisa ter um tamanho que compreenda o atraso dos quadros de

vídeo que geram o efeito de sombra, resultando em um filtro de tamanho a ponto de

precisar de diversos DSPs para executar a tarefa (PORA; SIRILUANGTONG, 2002).

Por exemplo, para implementar um filtro com 256 coeficientes trabalhando com 12 ×

106 amostras/s, seriam necessários 20 DSPs do tipo TMS320C6211, algo inviável.

Dessa situação surge a necessidade de implementação do filtro em FPGAs.

Para implementar o filtro de tamanho elevado necessário com reduzido custo

de hardware, Pora e Siriluangtong (2002) utilizam um conceito de compartilhamento

de recursos, no qual os processos de soma e multiplicação provenientes de cada

coeficiente do filtro são executados em instantes de tempo diferentes, um a um. Ou

seja, utilizam uma arquitetura que pode ser chamada de serial. O resultado disso

pode ser apreciado no quadro 1.

Quadro 1 - Resultado da arquitetura usada por Pora e Siriluangtong (2002) Fonte: Pora; Siriluangtong, 2002.

Do quadro 1 observamos que o conceito de compartilhamento de recursos traz

uma redução significativa dos recursos de hardware necessários, a um custo de

relógios com freqüência mais elevada e redução da freqüência do dado filtrado.

Page 23: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

4 IMPLEMENTAÇÃO

O som da voz humana não é

freqüências elevadas tendem a ser fortemente atenuadas. Como exemplo, na fig

15 é mostrado o espectro de freqüência

que freqüências acima de

relação à potência mais elevada

devido à relação entre banda e custo econômico dos canais de comunicação,

padronizou-se a transmissão da voz humana com uma banda de

o que garante 85 % de inteligibilidade e

ouvinte (PINHEIRO, 2011, p. 22).

Figura 15 -

Diante dessa característica ilimitada do espectro de freqüências do som da voz

humana, em grande parte dos casos em que se deseja transmití

comunicação, o primeiro processo a ser feito é filtrar esse sinal com um filtro passa

baixa com freqüência de corte de

ser necessário utilizar este filtro, de modo a eliminar ruídos em freqüências acima da

voz.

Nesse contexto entra a implementação a que esse trabalho se propõe. Foi

escolhida pois é uma aplica

diversas outras aplicações. Assim, conforme já dado a entender, os requisitos

básicos da implementação são um filtro passa

faixa de passagem de

IMPLEMENTAÇÃO ,

voz humana não é inerentemente limitado em banda,

freqüências elevadas tendem a ser fortemente atenuadas. Como exemplo, na fig

é mostrado o espectro de freqüências para as vogais a e u, na qual observa

que freqüências acima de 4 kHz possuem uma atenuação maior do que

relação à potência mais elevada (RABINER; SCHAFER, 1978, p. 173

devido à relação entre banda e custo econômico dos canais de comunicação,

se a transmissão da voz humana com uma banda de

de inteligibilidade e 68 % de energia da voz recebida pelo

PINHEIRO, 2011, p. 22).

Espectro de freqüências das vogais a e Fonte: RABINER; SCHAFER, 1978, p. 174.

Diante dessa característica ilimitada do espectro de freqüências do som da voz

humana, em grande parte dos casos em que se deseja transmití

comunicação, o primeiro processo a ser feito é filtrar esse sinal com um filtro passa

qüência de corte de 3,4 kHz. Além disso, na recepção pode também

ser necessário utilizar este filtro, de modo a eliminar ruídos em freqüências acima da

Nesse contexto entra a implementação a que esse trabalho se propõe. Foi

escolhida pois é uma aplicação bastante comum e que pode ser utilizada em

aplicações. Assim, conforme já dado a entender, os requisitos

básicos da implementação são um filtro passa-baixa com freqüência de corte

de 3,4 kHz. Diretamente desse contexto surge também uma

22

inerentemente limitado em banda, mas as

freqüências elevadas tendem a ser fortemente atenuadas. Como exemplo, na figura

, na qual observa-se

uma atenuação maior do que 40 dB em

8, p. 173 - 174). Assim,

devido à relação entre banda e custo econômico dos canais de comunicação,

se a transmissão da voz humana com uma banda de 300 Hz a 3,4 kHz,

de energia da voz recebida pelo

e u

Diante dessa característica ilimitada do espectro de freqüências do som da voz

humana, em grande parte dos casos em que se deseja transmití-la por canais de

comunicação, o primeiro processo a ser feito é filtrar esse sinal com um filtro passa-

. Além disso, na recepção pode também

ser necessário utilizar este filtro, de modo a eliminar ruídos em freqüências acima da

Nesse contexto entra a implementação a que esse trabalho se propõe. Foi

ção bastante comum e que pode ser utilizada em

aplicações. Assim, conforme já dado a entender, os requisitos

freqüência de corte ωp da

ntexto surge também uma

Page 24: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

23

especificação já relacionada à parte da filtragem digital, que é a freqüência de

amostragem do sinal analógico. Baseado no Teorema de Nyquist, que define que

essa freqüência deve ser de pelo menos duas vezes a freqüência máxima da banda

do sinal amostrado, a freqüência de amostragem da implementação deve ser de

pelo menos 6,8 kHz. Porém definiu-se para a construção desse trabalho uma

sobreamostragem com freqüência de 34 kHz, de maneira a recuperar com qualidade

o sinal no momento da reconstituição.

A seção 4.1 a seguir mostra o projeto do filtro digital. Na seção 4.2 é detalhada

a implementação desse filtro em lógica programável usando a linguagem de

descrição de hardware de circuitos integrados de alta velocidade (VHDL, VHSIC

hardware description language). O código gerado encontra-se na íntegra no

apêndice A.

4.1 Projeto do filtro digital

Conforme comentado na seção 2.4, projetar um filtro digital envolve

basicamente fazer as especificações e com base nelas calcular os coeficientes do

filtro. No quadro 2 estão resumidas todas as especificações do filtro adotadas nesse

trabalho.

Quadro 2 - Especificações do filtro adotadas neste trabalho Fonte: Autoria própria, 2011.

Na seção 2.3 estão explicados os motivos para a escolha do filtro tipo FIR, na

Page 25: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

24

seção 2.1 o fator que justifica a implementação pela estrutura direta e na seção 2.4.2

os motivos para a escolha do método de projeto equiripple. As freqüências de corte

são basicamente definidas pela aplicação e portanto estão explicadas no início da

seção 4. É intuitivo perceber que o desvio da faixa de passagem δp ótimo tende à

zero, porém para não gerar um filtro de tamanho desnecessário este parâmetro foi

adotado como 1 dB. Já o desvio da faixa de rejeição δs ótimo tende a infinito, porém

também para não gerar um filtro de tamanho desnecessário esse parâmetro foi

adotado como 40 dB, que corresponde a uma atenuação de 10 × 104 vezes.

Feitas as especificações do filtro digital, assim como na aplicação mostrada na

seção 3.1 e em muito outros projetos, o projeto do filtro foi realizado com a

ferramenta FDA Tool do Matlab (THE MATHWORKS, 2009). Na figura 16 são

mostradas as especificações inseridas no FDA Tool.

Figura 16 - Especificações inseridas no FDA Tool para projeto do filtro Fonte: Autoria própria, 2011.

Analisando a figura 16 verifica-se que o único parâmetro especificado no FDA

Page 26: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

25

Tool que não consta no quadro 2 é o fator de densidade (density factor). Ele controla

a resolução em freqüência do filtro. Aumentando seu valor aproxima-se o filtro de um

filtro ideal, o que também aumenta o número de coeficientes (THE MATHWORKS,

2011). Seguindo a idéia já adotada, para não gerar um filtro de tamanho

desnecessário, foi mantido o fator de densidade padrão sugerido pela ferramenta,

que é de 20. Concluída a especificação utiliza-se o botão design filter para que o

software faça os cálculos necessários. Em seguida um conjunto de informações

completas a respeito do filtro projetado é fornecido.

A figura 17 mostra o relatório com informações gerais a respeito do filtro.

Observa-se que ele é estável, tem fase linear conforme esperado e é feito com 82

coeficientes.

Figura 17 - Relatório com informações gerais a respeito do filtro projetado Fonte: Autoria própria, 2011.

No quadro 3 estão os 82 coeficientes gerados, referenciados no formato

decimal. Na seqüência da implementação, serão armazenados na FPGA para

computação do filtro.

Page 27: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

26

Quadro 3 - Coeficientes no formato decimal do filtro projetado Fonte: Autoria própria, 2011.

Page 28: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

27

A figura 18 mostra a resposta em freqüência do filtro projetado. Observa-se que

ela atende rigorosamente a especificação inserida no FDA Tool. Também é

interessante observar que, conforme a característica dos filtros projetados através

do método equiripple mostrado na seção 2.4.2, o ripple nas faixas de passagem e de

rejeição é constante.

Figura 18 - Resposta em freqüência do filtro projetado Fonte: Autoria própria, 2011.

4.2 Implementação da lógica programável usando a li nguagem VHDL

Da mesma forma que o projeto do filtro, sua implementação no hardware digital

também envolve algumas especificações. Assim, no quadro 4 constam as

especificações utilizadas como referência para a implementação da lógica

programável usando a linguagem VHDL.

Quadro 4 - Especificações para a implementação da lógica programável Fonte: Autoria própria, 2011.

Page 29: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

28

Conforme comentado no início da seção 4, foi especificada a freqüência de

processamento da voz amostrada como 34 kHz para recuperar com qualidade o

sinal no momento da reconstituição. Também por esse motivo, optou-se por

trabalhar com uma resolução de 16 bits para a voz quantizada. A FPGA adotada

como referência para a implementação foi a de referência EP1C6Q240, família

Cyclone, da fabricante Altera, pois esse é o componente montado na placa de

desenvolvimento existente no Centro Universitário La Salle, chamada de UP3

Educational Kit. Visando um trabalho futuro, a lógica gerada nessa implementação

pode ser gravada nessa FPGA para a realização de testes. Por fim, também

importante para a especificação da implementação, os relógios disponíveis na placa

de desenvolvimento para a FPGA mostrados no quadro 4 são de conhecimento

necessário, pois delimitam a arquitetura lógica do filtro para executar a aplicação.

Informações referentes à placa de desenvolvimento foram extraídas de (SYSTEM

LEVEL SOLUTIONS, 2007).

De posse das especificações do quadro 4 foi iniciada a implementação. Assim,

ela partiu pela definição de como os dados seriam representados no sistema digital,

como seriam realizadas as operações de multiplicação e soma aritmética e como

isso seria realizado na linguagem VHDL. Para entender como surge essa discussão

é necessário dar-se conta de que nos sistema digitais os números são

representados através de bits agrupados e que na implementação em questão é

necessário trabalhar com números reais, como mostrado no quadro 3, onde estão os

coeficientes do filtro projetado. Portanto deve-se pensar em um sistema que

represente e distingua o sinal do número, a parte inteira e a parte decimal. Conforme

é detalhado na seção 4.2.1, nesse trabalho foi adotada a notação de ponto flutuante

simples, que é definida na norma IEEE 754-1985 (INSTITUTE OF ELECTRICAL

AND ELECTRONICS ENGINEERS, 1985). Ela especifica como representar um

número real através de 32 bits.

Nas especificações para a implementação da lógica programável do quadro 4,

foi definido trabalhar com a voz quantizada com 16 bits. Assim, antes de realizar o

processamento para a filtragem digital é necessário converter os 16 bits binários

representativos da voz e disponibilizados à lógica programável para a notação de

ponto flutuante simples. O inverso ocorre na saída gerada, ou seja, existe a

necessidade de converter o resultado na notação de ponto flutuante simples para 16

bits binários, de modo a disponibilizar o resultado do filtro a um DAC para a

Page 30: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

29

reconstituição do sinal. Assim, podemos organizar a lógica programável em três

blocos principais, conforme ilustrado na figura 19.

Figura 19 - Três blocos principais da lógica programável implementada Fonte: Autoria própria, 2011.

Na seção 4.2.2 é detalhada a implementação do bloco de conversão de

entrada. A implementação do bloco de conversão de saída é detalhada na seção

4.2.3. Para facilitar o detalhamento da implementação do filtro propriamente dito, em

função dos diversos processos realizados nesse bloco, como multiplicações e

somas, ele foi dividido em três sub-blocos, conforme mostrado na figura 20.

Figura 20 - Três sub-blocos para detalhamento do bloco de filtragem Fonte: Autoria própria, 2011.

A maneira como foi implementado o armazenamento dos coeficientes e das

amostras encontra-se explicada na seção 4.2.4.1. Na seção 4.2.4.2 está detalhada a

arquitetura utilizada para implementar o filtro. Uma discussão sobre os relógios

Page 31: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

30

utilizados e os sinais de controle seqüencial da lógica é apresentada na seção

4.2.4.3.

4.2.1 Representação dos dados e aritmética

A representação e manipulação eficiente dos números reais são necessárias

em muitos campos da ciência, engenharia e finanças. Desde o início da computação

eletrônica, diferentes formas de representação de números reais têm sido

estudadas. Porém, a notação em ponto flutuante é a mais amplamente utilizada na

computação moderna. Simular uma precisão infinita com a precisão das máquinas

não é uma tarefa fácil, deve-se encontrar um ponto ótimo entre velocidade, precisão,

facilidade de uso e implementação e custo de armazenamento. Assim, a notação de

ponto flutuante com parâmetros adequadamente escolhidos é uma solução muito

boa para essa tarefa (MULLER, 2009, p. 3).

A notação em ponto flutuante é definida na norma IEEE 754-1985, mas se

desejado for, pode ser implementada de forma proprietária. Mesmo a norma

estabelece diferentes precisões, sendo as principais a que utiliza 32 bits para

representar um número, chamada de precisão simples, e a que utiliza 64 bits para

representar um número, chamada de precisão dupla. A precisão simples pode

representar números numa faixa de 1,18 × 10-38 a 3,4 × 1038 com precisão de 2-23.

Mesmo sendo a de menor precisão, essa representação que utiliza 32 bits mostra-se

interessante pois já oferece uma precisão aceitável para muitas aplicações sem

gerar um custo computacional muito elevado. Devido a essas características, foi a

solução adotada nesse trabalho.

Um número x é expresso na notação em ponto flutuante com precisão simples,

conforme mostrado em (9) (KUO, 2005, p. 99 - 100). Ele consiste em um bit de sinal

S, 8 bits de expoente exp e 23 bits de mantissa man. O bit S é zero para números

positivos e um para números negativos. O expoente exp é quem implementa o ponto

flutuante, sendo compensado por fator 127 para permitir o deslocamento do ponto

para a esquerda, para representar a parte fracionária, e para a direita, para

representar a parte inteira.

Page 32: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

31

� � �19 : 2�<=���>?� : 1. A�� (9)

Os bits que compõem S, exp e man são organizados conforme mostrado na

figura 21. Assim, S é o bit de número 31, exp compreende os bits de número 30 a 23

e man os bits de número 22 a 0.

Figura 21 - IEEE 754-1985 precisão simples Fonte: Kuo, 2005, p. 100.

Na figura 22 são apresentados dois exemplos de números representados

segundo a norma IEEE 754-1985 com precisão simples.

Figura 22 - Exemplos de números segundo IEEE 754-1985 precisão simples Fonte: Autoria própria, 2011.

A norma IEEE 754-1985 também define números chamados especiais, sendo

alguns mostrados na figura 23. NaN (not a number) é utilizado para representar

operações inválidas, como por exemplo divisão por zero.

Page 33: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

32

Figura 23 - Números especiais definidos pela IEEE 754-1985 precisão simples Fonte: MULLER, 2009, p. 59.

Os procedimentos para realizar as operações aritméticas com ponto flutuante

também são explicados na norma em questão e podem ser verificados em livros

como (Kuo, 2005), (MULLER, 2009) e (CARTER, 2003). Não serão aqui detalhados

porque a implementação em lógica programável das operações de soma e

multiplicação em ponto flutuante necessárias para gerar o filtro digital foi realizada

através de um núcleo pronto retirado do sitio da OpenCores, a maior comunidade

mundial de desenvolvimento de códigos fonte abertos voltados para hardware, que

segue os ideais do movimento de software livre.

Esse núcleo chama-se Fpu100 (AL-ERYANI, 2011). Consiste numa

implementação em VHDL que realiza as operações aritméticas de adição,

subtração, multiplicação, divisão e radiciação quadrada com números em ponto

flutuante de precisão simples, conforme recomendado na norma IEEE 754-1985. Foi

compilado e sintetizado com sucesso no Quartus II, tendo como alvo a FPGA da

família Cyclone, referência EP1C6Q240. No OpenCores seu status de

desenvolvimento está como estável e existem diversos registros de correções de

bugs, portanto consiste em um núcleo já maduro.

As características citadas contribuíram para a decisão de utilizar o núcleo

Fpu100 na implementação desse trabalhado. A seguir estão detalhadas as

informações mais importantes e necessárias para a implementação usando esse

núcleo, mas informações adicionais podem ser consultadas no datasheet presente

em Al-Eryani (2011).

O núcleo Fpu100 pode operar até uma freqüência máxima de 100 MHz.

Precisa de 7 ciclos de relógio para a computação da soma e 12 ciclos de relógio

para a computação da multiplicação. No momento da implementação, o seu

funcionamento pode ser abstraído por um bloco com sinais de entrada e saída

conforme mostrado na figura 24.

Page 34: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

33

Figura 24 - Abstração do núcleo Fpu100 com sinais de entrada e saída Fonte: Autoria própria, 2011.

opa_i e opb_i são os operandos a serem computados, cada um composto por

32 bits organizados conforme a notação de ponto flutuante de precisão simples,

definida pela norma IEEE 754-1985. fpu_op_i são 3 bits utilizados para definir a

operação aritmética a ser realizada, codificados conforme mostrado no quadro 5.

rmode_i são 2 bits utilizados para especificar o modo de arredondamento,

codificados de forma também mostrada no quadro 5. clk_i é o relógio de referência

do núcleo. Após ativadas todas essas entradas, um pulso deve ser dado em start_i

para iniciar a operação aritmética. Quando a operação for concluída, o bit ready_o

vai para nível lógico 1, indicando que nos 32 bits de output_o está o resultado válido

da operação. Os demais bits de saída indicam resultados especiais, como por

exemplo operação inválida, representada por qnan_o e snan_o, e divisão por zero,

representada por div_zero_o.

Page 35: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

34

Quadro 5 - Codificação dos bits de entrada fpu_op_i e rmode_i Fonte: AL-ERYANI, 2011.

4.2.2 Conversão de entrada

Conforme já comentado, a conversão de entrada consiste em converter os 16

bits binários representativos da voz e provenientes de um ADC em notação de ponto

flutuante com precisão simples. Tendo em mente que a natureza do sinal de voz

assume como imagem apenas valores positivos e que no caso deste trabalho os

números representativos da voz a serem convertidos são provenientes de um ADC,

a implementação da conversão de entrada restringiu-se a converter números inteiros

e positivos, além do zero.

O processo de conversão baseou-se na constatação, após estudos da notação

de ponto flutuante de precisão simples, de que a parte inteira do número a ser

representado encontra-se na forma binária na notação de ponto flutuante em parte

do termo 1.man da equação mostrada em (9). O detalhe é que o termo mantissa

man contém também a representação da parte fracionária do número, e portanto o

termo expoente exp é quem tem a função de separar a parte inteira da fracionária na

mantissa man. É interessante notar que o conceito de ponto flutuante advém

justamente dessa idéia.

Na figura 25 é ilustrada como exemplo a conversão do número 13 decimal para

Page 36: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

35

notação de ponto flutuante, que parte da constatação mencionada. O bit S é zero

para representar o número positivo, assim como sempre ocorre com o sinal de voz a

ser convertido. Os bits mais significativos da mantissa man são formados pelo

binário representativo do número inteiro a ser convertido, excluído o 1 mais

significativo. O restante da mantissa man, ou seja, os seus bits menos significativos,

são preenchidos com zeros. O expoente exp é formado pela soma de 127 com o

número de algarismos do binário representativo do número inteiro a ser convertido

(excluído o 1 mais significativo).

Figura 25 - Exemplo com número 13 de conversão para ponto flutuante Fonte: Autoria própria, 2011.

Seguindo a idéia da figura 25, foi implementada a lógica programável em VHDL

para a conversão de entrada, a qual é mostrada na figura 26.

Page 37: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

36

Figura 26 - Implementação da lógica para a conversão de entrada Fonte: Autoria própria, 2011.

Observando a figura 26, verifica-se que na lógica gerada o sinal dos 16 bits

binários representativos da voz a serem convertidos estão disponíveis em um

registrador chamado xn. Essa lógica utiliza um loop for para contar quantos

algarismos tem o binário representativo do número inteiro a ser convertido (excluído

o 1 mais significativo). Essa contagem é armazenada no registrador e, e após

somada com o fator 127 para gerar o expoente exp. A mantissa man é gerada pela

rotação para a esquerda dos bits do registrador xn, realizada 16 – e vezes, ou seja,

o suficiente para que os bits binários representativos do número inteiro a ser

convertido (excluído o 1 mais significativo) fiquem nos bits mais significativos da

mantissa man. O preenchimento com zeros nos bits menos significativos é realizado

automaticamente, juntamente com as rotações. Após encontrados o expoente exp e

a mantissa man, o número em notação de ponto flutuante é montado por

concatenação e armazenado no registrador fpu_entrada. Vale lembrar que como o

número a ser convertido é sempre positivo, na concatenação o bit de sinal S é

sempre montado como 0. O bloco também verifica se o registrador xn é zero, e caso

positivo força o registrador fpu_entrada para zero em notação de ponto flutuante.

Isso porque, conforme mostrado na figura 23, o zero é um número especial na

notação de ponto flutuante, e deve ser tratado como tal. Ainda na figura 26, observa-

se que são realizadas algumas conversões de formato entre os registradores,

necessárias devido aos formatos exigidos pelas sintaxes utilizadas.

Na figura 27 é mostrada uma simulação de conversão do número 13 em

Page 38: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

37

notação binária para a notação de ponto flutuante, realizada com o bloco de

conversão de entrada implementado. Verifica-se que após dois ciclos de relógio o

registrador fpu_entrada exibe o número 13 na notação de ponto flutuante com

precisão simples.

Figura 27 - Simulação realizada com o bloco de conversão de entrada Fonte: Autoria própria, 2011.

4.2.3 Conversão de saída

Conforme já discutido, esse bloco tem a função de converter o resultado do

filtro armazenado na notação de ponto flutuante para 16 bits binários, os quais

podem ser ligados a um DAC para a reconstituição do sinal de voz filtrado. Em

função desse resultado do filtro constituir-se em um número real, que

necessariamente é convertido para a notação binária com 16 bits, o bloco de

conversão de saída implementado desconsidera a parte fracionária do número. Além

disso, da mesma forma que o sinal de voz na entrada do bloco de conversão de

entrada, o resultado do filtro é sempre positivo, portanto a saída do bloco de

conversão de saída também é considerada sempre positiva.

A implementação do bloco de conversão de saída também baseou-se na idéia

ilustrada na figura 25 e explicada na seção 4.2.2. Ainda é possível considerá-la

como a lógica inversa da conversão de entrada. Assim, a lógica implementada em

VHDL para a conversão de saída é mostrada na figura 28.

Page 39: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

38

Figura 28 - Implementação da lógica para a conversão de saída Fonte: Autoria própria, 2011.

Na figura 28 verifica-se que o dado na notação de ponto flutuante a ser

convertido encontra-se armazenado no registrador fpu_saida. Usando a mesma

idéia de concatenação extrai-se o expoente exp presente nos bits de número 23 ao

de número 30 do registrador fpu_saida. Ao expoente exp é subtraído o fator 127, e o

resultado é armazenado no registrador e_saida, que é utilizado adiante para

deslocar os bits da mantissa man para gerar os 16 bits binários de saída do bloco. O

registrador mantissa_add é formado pela concatenação de um bit 1 como MSB com

a mantissa man do dado em notação de ponto flutuante a ser convetido. Assim,

nesse registrador mantissa_add temos armazenado o termo 1.man da equação

mostrada em (9), que conforme já mencionado contém na forma binária a parte

inteira do número representado e mais a parte fracionária. O registrador

mantissa_add_conv, que constitui-se no mantissa_add apenas convertido de

formato, tem seus bits deslocados 24 - (e_saida + 1) vezes para a direita, e

armazenados no registrador yn_24. Com esse deslocamento, o que está sendo feito

é a exclusão da parte fracionária do número que se está convertendo. Assim, nesse

registrador yn_24 já temos o dado na notação ponto flutuante convertido para

binário. Porém, como a especificação do bloco de conversão de saída compreende

seu resultado no formato binário com 16 bits, é utilizada a idéia de concatenação

Page 40: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

39

para armazenar no registrador de saída do bloco yn o resultado com tamanho de 16

bits. Da mesma forma que o bloco de conversão de entrada, o bloco em questão

também preocupa-se com o dado zero a ser convertido, fazendo uma conversão

forçada nesse caso. Observa-se que na notação de ponto flutuante o dado zero

pode ser positivo ou negativo. Assim, na implementação, em qualquer desses casos,

o registrador yn tem seus 16 bits forçados para zero. Por fim, vale lembrar que

também são realizadas conversões de formato entre os registradores.

Na figura 29 é mostrada uma simulação de conversão do número 13,55 em

notação de ponto flutuante para a notação binária de 16 bits, realizada com o bloco

de conversão de saída implementado. Observa-se que a parte fracionária do número

é desconsiderada e que são necessários dois ciclos de relógio para completar a

conversão.

Figura 29 - Simulação realizada com o bloco de conversão de saída Fonte: Autoria própria, 2011.

4.2.4 Filtro

Conforme mostrado na figura 20, o detalhamento do bloco de filtragem

propriamente dito está dividido em três sub-blocos: armazenamento dos coeficientes

e das amostras, arquitetura utilizada para implementar o filtro e relógios e sinais de

controle seqüencial da lógica. A seguir são detalhados esses blocos.

Page 41: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

40

4.2.4.1 Armazenamento dos coeficientes e amostras

Os coeficientes do filtro são constantes e assim podem ser armazenados na

linguagem VHDL de maneira análoga a uma memória somente de leitura (ROM,

read only memory). Em função dessa característica da ROM, para utilizá-la não são

necessários sinais de relógio e de habilitação de escrita (PEDRONI, 2004). Como

mostrado na figura 30, essa memória contém uma pilha de palavras words, que são

selecionadas através de um endereço addr e lidas em um registrador de dados data.

Figura 30 - Diagrama de uma ROM Fonte: PEDRONI, 2004.

Na figura 31 é exibida a lógica programável em VHDL escrita para implementar

a ROM de armazenamento dos coeficientes. Os coeficientes são armazenados em

vetores e o arranjo desses vetores forma a ROM. Como na linguagem VHDL não

existe um tipo de dado definido para representar um arranjo de vetores, foi

necessário definir o tipo vector_array_rom e especificar que ele contém de 1 a 82

vetores, dada a necessidade de armazenar os 82 coeficientes do filtro presentes no

quadro 3, e que cada vetor contém 32 bits, dado que os coeficientes são

armazenados na notação de ponto flutuante com precisão simples. Esse arranjo de

vetores compõem a constante memory_rom na qual o dado é armazenado. Na figura

31, por simplicidade de representação, estão mostrados apenas alguns coeficientes

armazenados.

Page 42: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

41

Figura 31 - Armazenamento dos coeficientes na linguagem VHDL Fonte: Autoria própria, 2011.

A leitura dos coeficientes é feita como mostrado na figura 32. O registrador

pont_rom é o endereço cujo conteúdo é lido de memory_rom e armazenado no

registrador opa_i_mult.

Figura 32 - Leitura de um coeficiente na linguagem VHDL Fonte: Autoria própria, 2011.

Ao contrário dos coeficientes, as amostras variam conforme o sinal de voz e

devem ser armazenadas à medida que são recebidas e descartadas quando já

foram multiplicadas por todos os coeficientes. Essa característica sugere que as

amostras sejam armazenadas na linguagem VHDL de maneira análoga a uma

memória de acesso aleatório (RAM, random access memory). Conforme

apresentado na figura 33, a RAM requer um relógio clk para funcionar e possui um

sinal wr_ena para habilitação da escrita. Assim, esse processo é feito com a escrita

de nível lógico 1 em wr_ena, seleção do endereço addr onde se deseja escrever e

escrita do dado a ser armazenado em data_in. A leitura é feita com a escrita

desabilitada através de nível lógico 0 em wr_ena, seleção do endereço addr que se

deseja ler e recebimento do dado através de data_out.

Page 43: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

42

Figura 33 - Diagrama de uma RAM Fonte: PEDRONI, 2004.

A definição da RAM na linguagem VHDL foi feita de maneira semelhante a uma

ROM, como pode ser observado na figura 34. A diferença é que como os dados são

dinâmicos, eles são armazenados e lidos à medida que a lógica é executada.

Figura 34 - Definição da RAM na linguagem VHDL Fonte: Autoria própria, 2011.

Para possibilitar as escritas das amostras na RAM foi implementada a lógica

mostrada na figura 35, a qual é executada permanentemente. Sempre que a escrita

for habilitada através do nível lógico 1 em wr_ena, o dado presente em data_in é

armazenado no endereço addr_ram da RAM memory_ram. A leitura de um dado é

executada de forma semelhante à da ROM, com o detalhe que a escrita deve estar

desabilitada através do nível lógico 0 em wr_ena.

Figura 35 - Bloco em VHDL que permite escritas na RAM Fonte: Autoria própria, 2011.

Page 44: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

43

4.2.4.2 Arquitetura do filtro implementado

Em lógica programável existem inúmeras maneiras de implementar o filtro FIR

em estrutura direta mostrado na figura 2. A arquitetura adotada nesse trabalho é

semelhante à de compartilhamento de recursos utilizada por Pora e Siriluangtong

(2002) e mostrada na seção 3.3. Assim, para implementar as 82 multiplicações dos

coeficientes do filtro projetado pelas amostras de entrada e as 81 somas dos

resultados dessas multiplicações, compartilha-se apenas um multiplicador e um

somador, conforme mostrado na figura 36.

Figura 36 - Arquitetura do filtro implementado Fonte: Autoria própria, 2011.

Acompanhando a arquitetura ilustrada na figura 36, para gerar uma amostra na

saída do filtro os coeficientes e as amostras de entrada são multiplexados na

entrada do multiplicador i_fpu_mult, implementado com o núcleo Fpu100

mencionado na seção 4.2.1. Ele realiza uma multiplicação por instante de tempo,

tendo sua saída diretamente conectada à entrada do somador i_fpu_add, também

implementado com o núcleo Fpu100. Este operador realiza a soma do resultado da

multiplicação com o registrador somatorio, que inicia em zero para cada amostra de

Page 45: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

44

entrada e é incrementado com os resultados das somas de produto. Quando todos

os coeficientes e amostras de entrada foram computados, o contador cont habilita a

escrita do registrador somatorio no fpu_saida para gerar a saída do filtro. A cada

amostra de saída a ser gerada o processo é repetido.

Na figura 37 é mostrada a implementação em lógica programável com VHDL

da arquitetura descrita. Observa-se ela consiste basicamente em operar o núcleo

Fpu100 para que sejam realizadas as operações de multiplicação e soma. Os

operandos da multiplicação são buscados da ROM e da RAM. Ao final de todas as

operações, o contador cont chega ao valor 1000 e o resultado é enviado através do

registrador fpu_saida.

Figura 37 - Implementação em VHDL da arquitetura do filtro Fonte: Autoria própria, 2011.

Page 46: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

45

4.2.4.3 Relógios e sinais de controle seqüencial

As especificações para a implementação da lógica programável presentes no

quadro 4 definiram a freqüência de amostragem da voz como 34 kHz. Isso significa

que a cada 29,4 us toda a arquitetura do filtro mostrada na figura 36 deve ser

executada para receber a amostra, realizar as somas de produtos e gerar uma

amostra de saída do filtro. Portanto, além do relógio de 34 kHz para amostragem, a

lógica programável precisa de um relógio com freqüência superior. Para definir a

freqüência desse relógio o método usado foi estimar o total de número de ciclos para

a execução da arquitetura de somas de produto e das conversões de entrada e

saída. Esse número de ciclos deve ser executado em uma freqüência tal que o

tempo total desses ciclos seja inferior a 29,4 us.

No quadro 6 encontra-se a estimativa para a implementação planejada nesse

trabalho. É importante destacar que ela contém folgas para evitar erros. Assim, para

a conversão de entrada e de saída a estimativa baseia-se nas simulações

mostradas nas figuras 27 e 29. Para a gravação da amostra de entrada precisa-se

de 1 ciclo somado a 2 ciclos de folga. A estimativa para a execução da arquitetura

de somas de produto parte do fato de que a operação que mais exige ciclos é a de

multiplicação, que exige 12 para cada operação. Como são 82 multiplicações, um

total de 984 ciclos são necessários, adicionados de alguns de folga.

Quadro 6 - Estimativa do número de ciclos para execução do filtro Fonte: Autoria própria, 2011.

Em suma, conforme mostrado no próprio quadro 6, a implementação planejada

precisa de 1209 ciclos. Na placa de desenvolvimento UP3 Educational Kit, onde a

FPGA alvo é montada, temos disponíveis os relógios mostrados no quadro 4.

Utilizando-se o de 66,66 MHz, a execução da implementação ocorrerá em 18,1 us,

Page 47: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

46

um tempo adequado, portanto, pois é menor que 29,4 us da amostragem.

Dessa forma, os relógios utilizados na implementação são de 34 kHz e 66,66

MHz. Considerando o de 66,66 MHz como sendo o principal, proveniente de um

oscilador externo à FPGA, o relógio de 34 kHz é gerado através da divisão desse

principal.

Definidos os relógios e a forma como são usados, é preciso também definir um

sincronismo para os processos mostrados no quadro 6, de forma que para gerar

cada amostra de saída eles sejam executados na ordem mostrada nesse quadro. A

idéia para fazer esse sincronismo foi implementar um contador que inicia em zero

quando ocorre um pulso de 34 kHz, o qual habilita a conversão de entrada, e que é

incrementado a cada ciclo do relógio principal de 66,66 MHz. Assim, como temos o

quadro 6, que fornece a estimativa de ciclos para a execução de cada processo,

quando o contador chegar em 3 sabemos que a conversão de entrada finalizou e

que pode ser iniciada a gravação da amostra de entrada na RAM. Quando o

contador chegar em 6 sabemos que esse último processo foi concluído e que a

arquitetura de somas de produto pode ser iniciada. E assim por diante até concluir

todos os processos, conforme ilustrado na figura 38.

Figura 38 - Sincronização dos processos através do registrador cont Fonte: Autoria própria, 2011.

Page 48: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

47

5 RESULTADOS

Os resultados desse trabalho partem da análise dos relatórios de síntese da

lógica implementada gerados pelo Quartus II (ALTERA, 2011). São verificadas

informações referentes aos blocos de arranjo lógico (LABs, logic array blocks),

elementos lógicos (LEs, logic elements), tabelas de busca (LUTs, look up tables),

blocos e bits de memória e freqüência máxima de operação. Como é necessário

conhecer o conceito desses parâmetros para o entendimento e análise dos

resultados, na seção 5.1 é realizada uma breve revisão da arquitetura de FPGAs, a

qual é caracterizada basicamente por LABs, LEs e LUTs. Na seção 5.2 são

apresentadas as características desses parâmetros para a família Cyclone, da

Altera, tendo em vista que a FPGA alvo da implementação é a EP1C6Q240, que

pertence a essa família. Por fim, na seção 5.3 são apresentados os resultados com

base nos conceitos e características verificados nas seções 5.1 e 5.2.

5.1 Revisão dos conceitos de arquitetura de FPGAs

Floyd (2007) apresenta os conceitos de forma facilmente compreensível e

também semelhante à arquitetura das FPGAs da família Cyclone da Altera. Assim

sendo, nessa seção utiliza-se a abordagem desse autor.

A estrutura de uma FPGA é composta de três elementos básicos: os LABs, as

interconexões programáveis e os blocos de entrada e saída (FLOYD, 2007, p. 41),

conforme ilustrado na figura 39. Os blocos de entrada e saída estão nas bordas da

estrutura e proporcionam acesso individualmente selecionável de entrada, saída ou

bidirecional ao mundo externo. A matriz de interconexões programáveis é

responsável pela comunicação entre os LABs e as conexões para as entradas e

saídas.

Page 49: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

48

Figura 39 - Estrutura básica de uma FPGA Fonte: Adaptado de FLOYD, 2007, p. 645.

Cada LAB é formado de múltiplos LEs e uma interconexão programável local

que é usada para interconectar os diversos LEs dentro de um LAB, conforme

mostrado na figura 40.

Page 50: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

49

Figura 40 - LEs dentro de interconexões programáveis globais Fonte: Adaptado de FLOYD, 2007, p. 645.

Um LE em um LAB pode ser configurado como lógica combinacional, lógica

registrada ou uma combinação de ambas. Na figura 41 é mostrado o diagrama em

blocos de um típico LE baseado em LUT, a qual é um tipo de memória programável

usada para gerar funções lógicas combinacionais de soma-de-produtos (FLOYD,

2007, p. 646).

Figura 41 - Diagrama básico de um LE Fonte: Adaptado de FLOYD, 2007, p. 646.

A organização de uma LUT consiste em um número de células de memória

igual a 2n, onde n é o número de variáveis de entrada. Assim, uma LUT com três

variáveis de entrada pode produzir uma expressão de soma-de-produtos com até

oito termos-produto. Um padrão de uns e zeros é usado para programar a saída de

cada produto. Cada nível 1 significa que o termo-produto associado aparece na

soma-de-produtos e cada 0 significa que o termo-produto associado não aparece na

Page 51: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

50

saída de soma-de-produtos. Por exemplo, na figura 42, a saída soma-de-produtos

resultante é Ā2Ā1Ā0 + Ā2A1A0 + A2Ā1A0 + A2A1A0.

Figura 42 - LUT programada com determinada saída Fonte: FLOYD, 2007, p. 646.

5.2 Características das FPGAs da família Cyclone da Altera

O quadro 7 mostra as características referentes à arquitetura das FPGAs da

família Cyclone, da Altera. Tomando como referência a FPGA EP1C6Q240, alvo da

implementação desse trabalho, verifica-se que ele possui 32 × 20 LABs e 5980 LEs.

Todas as FPGAs dessa família possuem cada LAB formado por 10 LEs. Na

arquitetura Cyclone estão incluídos também blocos de RAM com tamanho de 128 ×

36 bits cada. Como a FPGA EP1C6Q240 possui 20 desses blocos, o total de bits de

RAM disponível é 92160 (ALTERA, 2008, p. 1.1 - 2.3).

Page 52: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

51

Quadro 7 - Características referentes à arquitetura das FPGAs Cyclone Fonte: Adaptado de ALTERA, 2008, p. 1.1 - 2.2.

A arquitetura interna dos LEs da família Cyclone é mostrada na figura 43.

Observa-se que cada LE possui uma LUT de 4 entradas de dados. À direita da LUT

observa-se o circuito lógico referido na seção 5.1, o qual possui as saídas

conectadas às interconexões programáveis locais (ALTERA, 2008, p. 2.6).

Figura 43 - Arquitetura interna dos LEs da família Cyclone Fonte: ALTERA, 2008, p. 2.6.

Page 53: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

52

5.3 Resultados da síntese da lógica implementada

A síntese da lógica implementada foi realizada pelo Quartus II configurado com

o parâmetro de otimização no tempo como padrão e o parâmetro de otimização do

tamanho do hardware como balanceado. No quadro 8 são mostrados os resultados.

Quadro 8 - Resultados da síntese da lógica implementada Fonte: Adaptado de ALTERA, 2011.

No quadro 9 é realizado um comparativo de alguns recursos exigidos pela

lógica implementada em função dos recursos disponíveis na FPGA alvo da

implementação, ou seja, o EP1C6Q240. Verifica-se que o percentual de exigência

de LEs e LABs da lógica pela FPGA EP1C6Q240 excede 100 %. Dessa forma, a

Page 54: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

53

quantidade exigida desses recursos é maior do que a quantidade disponível. Esse

resultado mostra que não é possível sintetizar e gravar a lógica gerada na FPGA

EP1C6Q240.

Quadro 9 - Comparativo supondo FPGA alvo EP1C6Q240 Fonte: Autoria própria, 2011.

Para viabilizar a síntese e gravação da lógica em questão sem a necessidade

de otimização desta, é necessário utilizar uma FPGA com quantidade maior de

recursos. Por exemplo, conforme mostrado no quadro 10, isso seria possível através

da FPGA EP1C12Q240, também da família Cyclone. Comparando os recursos

disponibilizados por essa FPGA, mostrados no quadro 7, com os recursos exigidos,

mostrados no quadro 8, verifica-se que a síntese e gravação na situação desejada

seria possível.

Quadro 10 - Comparativo supondo FPGA EP1C12Q240 Fonte: Autoria própria, 2011.

Apesar das limitações de hardware impostas pela lógica gerada para a sua

síntese e gravação no FPGA EP1C12Q240, caracterizadas conforme visto pelas

quantidades de LEs e LABs necessários, sob o ponto de vista do atraso imposto

Page 55: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

54

pelo caminho crítico da lógica, ela não apresenta impedimentos para ser

implementada na aplicação a que foi definida. Ou seja, a lógica foi planejada para

trabalhar com o relógio principal em 66,66 MHz, de maneira a permitir a

implementação da arquitetura de compartilhamento de recursos. Em contrapartida,

os relatórios de síntese apontaram para a freqüência máxima do relógio principal

como 82,05 MHz, demonstrando que a implementação não apresenta restrições

nesse sentido.

Page 56: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

55

6 CONCLUSÃO

O trabalho abordou a implementação de filtros digitais em lógica programável

usando a linguagem VHDL. A aplicação de referência escolhida foi a filtragem da

voz humana, bastante comum e de utilização em diversos sistemas. Realizou-se o

projeto do filtro digital para atender as especificações da aplicação e a construção da

lógica com foco na FPGA EP1C6Q240, da família Cyclone, da Altera.

Os relatórios da síntese da descrição de hardware implementada permitem

verificar que os LEs e LABs são parâmetros críticos na definição de recursos

disponíveis em uma FPGA para a gravação de uma lógica programável. No caso

desse trabalho, não é possível gravar a lógica gerada na FPGA inicialmente definida

para utilização. Verifica-se que é necessário um dispositivo com mais recursos.

Outro parâmetro importante em um projeto é a máxima freqüência de operação

dos relógios. A especificação desse parâmetro é basicamente definida pela

aplicação, assim cuidados devem ser tomados na implementação da lógica para que

o circuito gerado possibilite a operação na freqüência desejada. Nesse trabalho

planejou-se a operação do relógio principal em 66,66 MHz e os relatórios de síntese

indicaram a máxima freqüência para esse relógio como 82,05 MHz, portanto

possibilitando a operação do filtro conforme planejado.

Visando a continuidade desse trabalho, os seguintes caminhos podem ser

adotados:

a) embora com arquitetura definida e coerente, foi verificado que o código

VHDL gerado e presente no apêndice A apresenta alguns erros na

simulação que o impedem de funcionar conforme o esperado. Pode-se

realizar as correções desses erros e simulações para validação da lógica

como filtro digital;

b) estando o código VHDL funcional, comprovadamente através de simulações,

pode-se partir para a implementação de um sistema de DSP conforme

ilustrado na figura 1. Ou seja, gravar a lógica em uma FPGA e conectar esse

dispositivo a um ADC e um DAC. Isso forma um sistema DSP totalmente

construído em hardware, que permite análises diversas;

c) uma perspectiva de continuidade interessante é utilizar o código VHDL

gerado nesse trabalho como base para análises de melhores práticas para a

Page 57: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

56

construção de lógicas programáveis, com vistas à otimização de recursos de

hardware. Essas análises são importantes para não repetir o que ocorreu

nesse trabalho, de a lógica demandar mais recursos do que o disponibilizado

pela FPGA alvo;

d) deixando os sistemas digitais um pouco de lado, é possível realizar um

estudo da teoria de DSP em busca de estruturas de filtros digitais e métodos

de projetos com complexidade reduzida, que permitem implementação em

hardware com maior facilidade e menor custo.

Page 58: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

57

REFERÊNCIAS

AL-ERYANI, Jidan. FPU100. Version 19. Disponível em: <http://opencores.org/project,fpu100>. Acesso em: 5 maio 2011. ALTERA. Cyclone Device Handbook: Volume 1. Version 1.5. San Jose: Altera, 2008. ALTERA. Quartus II. Version 10.1. [S.l.]: Altera, 2011. BARROS, André Macário. Projeto de Filtros FIR através de Algoritmos Genéticos. 2006. B277p. Dissertação (Mestrado em Ciências) – Programa de Pós-Graduação em Engenharia Elétrica e Informática Industrial, Universidade Tecnológica Federal do Paraná, Curitiba, 2006. CARTER, Nicholas. Arquitetura de computadores. Porto Alegre: Bookman, 2002. CHAND, Rakesh et al. FPGA Implementation of Fast FIR Low Pass Filter for EMG Removal from ECG Signal. In: INTERNATIONAL CONFERENCE ON POWER, CONTROL AND EMBEDDED SYSTEMS (ICPCES), 2010, Allahabad. Proceedings… Piscataway: IEEE, 2010. p. 1-5. DATACOM. A Datacom quer conhecer você . Disponível em: <http://www.datacom.ind.br/new/ pt-br/voce>. Acesso em: 12 set. 2010. DINIZ, Paulo S. R.; SILVA, Eduardo A. B. da; LIMA NETTO, Sergio. Processamento Digital de Sinais: Projeto e Análise de Sistemas. Porto Alegre: Bookman, 2004. FLOYD, Thomas L. Sistemas Digitais: Fundamentos e Aplicações. 9. ed. Porto Alegre: Bookman, 2007. HAYES, Monson H. Teoria e Problemas de Processamento Digital de Sina is . Porto Alegre: Bookman, 2006. INSTITUTE OF ELECTRICAL AND ELECTRONICS ENGINEERS. IEEE Standard 754-1985: IEEE Standard for Binary Floating-Point Arithmetic. [S.I.]: IEEE, 1985.

Page 59: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

58

KUO, Sen M.; GAN, Woon-Seng. Digital Signal Processors: Architectures, Implementations and Applications. Upper Saddle River: Prentice Hall, 2005. MESSAI, A.; NOUR, A.; ABDELLANI I. Optimal Digital Filtering in Gamma-ray Spectroscopy. In: INTERNATIONAL CONFERENCE ON ADVANCEMENTS IN NUCLEAR INSTRUMENTATION MEASUREMENT METHODS AND THEIR APPLICATIONS (ANIMMA), 1., 2009, Marseille. Proceedings… Piscataway: IEEE, 2009. p. 1-6. MEYER, U. Digital Signal Processing with Field Programmable G ate Arrays . 3rd ed. Berlin: Springer, 2007. MITRA, Sanjit K. Digital Signal Processing: a computer based approach. 3rd ed. New York: McGraw-Hill, 2006. MULLER, Jean-Michel et al. Handbook of Floating-Point Arithmetic. New York: Birkhäuser Boston, 2010. OPPENHEIM, Alan V.; SCHAEFER, Ronald W.; BUCK, John R. Discrete-Time Signal Processing. 2nd ed. Upper Saddle River: Prentice Hall, 1999. PAO, Sammy; KHOO, Kei-Young; WILSON JR., Alan N. A Programmable FIR Filter for TV Ghost Cancellation. In: IEEE MIDWEST SYMPOSIUM ON CIRCUITS AND SYSTEMS, 39., 1996, Ames. Proceedings… Piscataway: IEEE, 1996. p. 133-136. PEDRONI, Volnei A. Circuit Design with VHDL. Cambridge: MIT Press, 2004. PINHEIRO, Fred S. R. Telefonia. Natal: UFRN, [20--]. (Apostila da disciplina Sistemas de Telecomunicações I, Curso de Engenharia Elétrica, Universidade Federal do Rio Grande do Norte). Disponível em: <www.dee.ufrn.br/~fred/arquivos/Telefonia.pdf>. Acesso em: 29 maio 2011. PORA, Wanchalerm; SIRILUANGTONG, Pahol. A TV Ghost Canceller Using FPGA-based FIR Filters. In: ASIA-PACIFC CONFERENCE ON CIRCUIT AND SYSTEMS (APCCAS), 2002, Bali. Proceedings… Piscataway: IEEE, 2002. p. 289-292. RABINER, L. R.; SCHAFER, R.W. Digital Processing of Speech Signals. Englewood Cliffs: Prentice Hall, 1978. SYSTEM LEVEL SOLUTIONS. UP3 Education Kit: Cyclone Edition (EP1C6). Version 1.3. San Martin: System Level Solutions, 2007.

Page 60: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

59

THE MATHWORKS. Matlab R2009A. Version 7.8.0.347. [S.l.]: The MathWorks, 2009. THE MATHWORKS. Signal Processing Toolbox: Introduction to the Filter Design and Analysis Tool (FDA Tool). Disponível em: <http://www.mathworks.com/products/signal/demos.html?file=/products/demos/shipping/signal/introfdatooldemo.html>. Acesso em: 23 abr. 2011. TOCCI, Ronald J.; WIDMER, Neal S.; MOSS, Gregory L. Sistemas Digitais: Princípios e Aplicações. 10. ed. São Paulo: Prentice Hall, 2007.

Page 61: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

60

APÊNDICE A – CÓDIGO VHDL GERADO NO TRABALHO

Page 62: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

61

Page 63: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

62

Page 64: IMPLEMENTAÇÃO DE FILTROS DIGITAIS EM LÓGICA · PDF file1 INTRODUÇÃO ... VHSIC hardware description language ) (DATACOM, 2010), uma das linguagens mais utilizadas para descrever

63