Você está na página 1de 19

Consideraes prticas para a implementao de filtros de Ponto-Fixo FIR

1 Introduo

1.1 Motivao

O tipo mais basico de filtro em processamento de sinal digital o filtro de resposta ao impulso finita (FIR). Por definio, um filtro FIR classificado como se tem uma transformada de forma

onde denota os nmero reais, denota os nmeros inteiros, e denota os nmeros complexos. Este referido como um filtro FIR N-tap. Em geral um filtro FIR pode ser causal ou no-causal. No entanto, os filtros FIR so sempre estveis, e, na verdade, a principal razo pela qual eles so amplamente utilizados.

A equao diferencial a qual resulta de

Simplificando para N=M

Este o conhecido resultado da convoluo discreta do filtro com os valores de entrada. As equaes acima so idealizadas, Matematicamente representando um filtro FIR, porque as operaes aritmticas de soma, subtrao, multiplicao e diviso so realizadas ao longo do domnio dos nmeros reais , ou seja, no sistema de nmeros reais (ou

no campo dos nmeros complexos se os dados ou coeficientes possuem valores

imaginrios). Na prtica, ambos os coeficientes e os valores dos dados so limitados para ser de ponto fixo rotacional, um subconjunto dos rotacionais. Enquanto este conjunto fechado, no "pouco limitado", ou seja, o nmero de bits necessrio para representar um valor em ponto fixo rotacional pode ser arbitrariamente grande. Em um sistema prtico a palavra de entrada do filtro limitada a um nmero finito de bits dos coeficientes e dos filtros de sada. A maioria dos atuais processadores digitais de sinal fornecem as unidades aritmticas lgicas e as arquiteturas de memria para suportar palavras de tamanho de 16 bits, 24 bits ou 32 bits, no entanto, eles pode implementar arbitrariamente longos comprimentos, personalizando as multiplicaes e adies de software e utilizando mais ciclos do processador e da memria. Decises semelhantes podem ser feitas em implementaes de hardware digital. As escolhas finais so regidas por muitos aspectos do projeto, tais como velocidade, consumo de energia, SNR, custo, etc.

1.2 Convenes

Vamos representar quantidades reduzidas de .

notao descrita em

Geralmente, h dois mtodos de operar os dados de ponto fixo utilizados atualmente, sendo - inteira e fracional. O mtodo inteiro interpreta os dados como nmeros inteiros (ou binria natural ou complemento de 2) e executa aritmtica dos inteiros. Por exemplo, o Texas Instruments TMS320C54x DSP uma mquina integradora. O mtodo fracionrio assume que os dados so ponto fixo rotacionais delimitados entre -1 e +1. O DSP Motorola 56002 um exemplo de uma mquina que utiliza aritmtica fracional. Exceto para um extra shift esquerdo realizada na multiplicao fracionria, estes dois mtodos podem ser considerados equivalentes. Neste artigo, vamos utilizar o mtodo de integrao porque acho mais simples e estou mais familiarizado com ele.

2 O Dimensionamento dos Coeficientes FIR

Considere um filtro FIR com N coeficientes

. Da notao

descrita, vemos que em aritmtica de ponto fixo uma palavra binria pode ser interpretada como um ponto fixo rotacional com ou sem sinal. Embora haja um nmero de situaes em que os coeficientes do filtro poderiam ter valores com o mesmo sinal (e portanto, poderiam ser representado usando valores sem sinal), deixe-nos supor que eles no so, por

conseguinte, que devemos utilizar ponto fixo rotacional com sinal para os nossos coeficientes. Assim, temos de encontrar uma forma de representar, ou, mais precisamente, de uma aproximao, os coeficientes do filtro usando ponto fixo rotacional com sinal.

Um ponto fixo rotacional um nmero na forma

, quando Bi e b so inteiros,

e M o tamanho da palavra utilizada para os coeficientes, podemos determinar a aproximao determinar como do coeficiente , escolhendo um valor de e, em seguida,

ento

De um modo geral,

apenas uma aproximao de

por causa do

arredondamento. Esta aproximao fenomenal referida como coeficiente de quantizao porque, em um sentido real, estamos quantizando os coeficientes em amplitude, exatamente como um conversor A/D faz a quantizao em amplitude de um sinal analgico de entrada. Podemos determinar o erro de quantizao" a diferena entre eles: entre a aproximao e o valor real, tomando

Onde

indica arredondamento em bits para Y do valor binrio X. O

valor Y = 0 round nas unidades de bits, com valores negativos que vo direita da casa decimal e os valores positivos que vo para a esquerda das unidades de bits. Por exemplo:

round(1,0010110, - 5) = 1.00110.

A pergunta que temos de fazer e ainda no respondida : Como podemos escolher ? A fim de responder a esta pergunta, nota-se que o erro mximo e que um

coeficiente de quantizao pode ser de um meio bit a pode ser arredondado, para

Agora, fcil de ver que, na falta de qualquer outro critrio, o valor ideal de

valor mximo que pode ele pode atingir desde que o resultado tenho a menor quantidade de quantizao do coeficiente erro. Bem, qual exatamente o mximo, mesmo assim? Depois de tudo, certo? de nmeros inteiros e os inteiros vo at o infinito. Assim, o mximo o infinito,

Bem, no. Mais uma vez, considerando-se o tamanho da palavra do coeficiente a ser de M (bits), note que um sinal, complemento 2 tem uma magnitude mxima de 2M-1. Portanto, devemos ter o cuidado de no escolher um valor para que tem uma magnitude maior do que 2
M-1

, que ir produzir um

. Quando um valor torna-se demasiadamente

grande para ser representado pela representao que escolhemos (neste caso , M-bits representado em complemento de 2), dizemos que ocorreu um estouro (overflow). Assim, temos de ter o cuidado de escolher um valor para coeficiente de maior magnitude. Pode-se computar o valor mximo de que no transborde o ,

Onde (x) denota o maior inteiro que menor ou igual a x.

Em resumo, vemos que, na falta de qualquer outro critrio, o valor ideal de

valor mximo que pode ser utilizado sem transbordar os coeficientes e desde de que, forneca o valor mnimo do coeficiente de quantizao de erro. Enfatizamos este importante resultado, declarando o seguinte:

Teorema 1 (primeiro coeficiente Escalonamento Teorema). Deixe que conjunto de coeficientes com fator de escala

um

. A Preciso mxima preservada quando

escolhido para ser o nmero inteiro mximo possvel sem transbordar o coeficiente de representao, isto ,

Onde M o coeficiente do tamanho da palavra em bits.

Exemplo 1: Considerando um filtro FIR 4-tap com os seguintes coeficientes:

Assumindo o tamanho da palavra em 16 bits: a) encontre o fator de escala , com o auxilio de uma rgua .

b) o coeficiente de aproximao

SOLUO:

Visto que

assim que ele , certo? Agora, ns sabemos tudo o que h para saber sobre coeficiente escalar, certo? Bem, no. Lembre-se de que quando eu disse, " ... no existe qualquer outro tipo de critrio ... "? Bem, acho que existem sim, outros critrios. Adio de dois J-valores de bits requer J+1 bits, a fim de manter a preciso e evitar transbordo (overflow) quando no existe a-priori conhecimentos sobre os valores a serem adicionados. Por exemplo, se dois valores de 16-bit com sinal complemento de 2 so

somados 21.583 e 12.042, o resultado 33.625 . Uma vez que o valor mximo de 16-bit do complemento de dois o nmero 32.767, temos de acrescentar um bit extra para evitar transbordamento. Tambm, uma vez que o resultado mpar, o bit menos significativo (bit 0) definido, por isso, no podemos simplesmente tomar a parte superior de 16 bits no resultado de 17 bits sem perder a preciso. Como em contrapartida, considere um fluxo de processamento de dados de qualquer natureza de duas amostras adjacentes e que so conhecidos como de sinais opostos. Neste caso, temos que ser capazes de garantir que a soma dos dois adjacentes J-bit das amostras nunca transborde o J bits.

Podemos facilmente estender esta regra para as somas de vrios valores e estado e o resultado dado como:

Teorema 2 ( Teorema da soma de ponto-fixo). A soma dos N valores de J-bits requer bits para manter a preciso e evitar transbordamento em caso de no ter

informao sobre o tamanho dos valores recebidos.

Consideremos um filtro FIR de N-tap que tem L-bits de valores de dados e M-bits de coeficientes. Em seguida, usando as relaes acima, o N-termo final requer uma soma n para cada intervalo de tempo

requer

bits para manter a preciso e evitar transbordamento em caso de

no ter informao sobre o tamanho dos valores recebidos. Por exemplo, um filtro FIR de 64-tap (N = 64) com coeficientes e valores de dados de 16-bits (L = M = 16) requer bits, a fim de manter preciso e evitar o transbordamento.

A maioria dos processadores e componentes de hardware fornecem a capacidade de multiplicar dois valores de M-bits para formar um resultado de 2M-bits. Por exemplo, o dispositivo integrado Technolgy 7210 multiplier-accumulator realiza uma multiplicao de 16x16 para um resultado de 32-bits. Como propsito geral e alguns processadores DSP proporcionam um acumulador que tem a mesma largura da sada do multiplicador. Por

exemplo, o Texas Instruments TMS320C50 DSP fornece um multiplicador 16x16 e 32-bits no acumulador. Alguns processadores DSP de 2 M + G-bits do acumulador, onde G denota o "guarda bits" (ser explicado em breve). Por exemplo, o Texas Instruments TMS320C54x DSP fornece um multiplicador 16 16 com 32-bits de sada e 40-bits do acumulador (M = 16, G = 8).

sempre que assumimos no termos a informao sobre os dados ou os coeficientes. O ponto chave aqui que o nmero de bits necessrios para incrementar o filtro de sada (em geral, como irrestrita para os coeficiente dos dados de entradas) condiz com o tamanho do filtro. A quantidade crescimento. algumas vezes referida como pouco

Para as situaes em que G = 0 (p. ex., o TMS320C50), podemos ver imediatamente um problema at mesmo para um 2-tap filtro FIR desde que o filtro requer bits e o acumulador de apenas 2M bits. precisamente por esta razo que os G bits extras esto disponveis em alguns processadores e so chamados de "guarda bits", servem de proteo contra transbordo quando so realizar as somas. No entanto, mesmo que o acumulador pode ter o guarda bits, ainda possvel o estouro do acumulador se , se tentarmos usar um filtro que maior do que 2G-tap.

Ento, como resolver o problema? A soluo mais fcil simplesmente decretar que iremos manter uma perspectiva optimista. Em outras palavras, vamos reconhecer que nosso filtro no funciona para "o caso mais geral", e rezar para que os casos (onde aquelas combinaes de N valores de dados ocorreriam) que resultaria em transbordo, para nosso filtro nunca iro ocorrer. No entanto, isso um pouco como enterrar a cabea na areia, pois, se e quando ocorrem, os estouros podem ser catastrficos. Em um sistema de complemento de 2 com sinal, o transbordo causa abruptas variaes dos nveis de sada, que no caso de udio digital, so no mnimo muito audveis para se dizer e parece extremamente rude para ser mais preciso.

Outra soluo redesenhar o filtro para usar menos taps. No entanto, se no houver guarda bits, ento, o filtro seria reduzido para um controle de ganho (ou seja, 1 tap) e mesmo com guarda bits, o nmero de taps do filtro usualmente maior (ou seja, podemos quase sempre usar mais taps para implementar uma filtro melhor).

Ainda, uma outra soluo reduzir a escala dos valores de dados em K bits antes de aplicar ao filtro, permitindo, assim, 2K mais taps de filtro antes do transbordo. Esta , em geral, uma horrvel ideia, porque muito se degrada da relao de sinal-rudo do caminho do sinal de 6 dB por bit.

Uma soluo alternativa , essencialmente, o de conter o "crescimento" dos bits dos coeficientes. Uma vez que um M utilizado na equao (15) o nmero de bits utilizados para os coeficientes, podemos usar um valor alternativo que menor do que os M-bits disponveis em nosso hardware . Depois de tudo, s porque temos um tamanho de palavra de M-bits disponveis para os coeficientes no significa que temos de utilizar todos os M bits. Por conseguinte, utilizemos bits para os coeficientes, onde .

Que tamanho vamos fazer

? Calcular, com base na largura do acumulador:

Onde estamos restringindo

para no ser maior que M.

Podemos resumir esta seo com o seguinte

Teorema 3 (coeficiente Dimensionamento Teorema). Em caso de no conhecer a informao sobre os dados ou os coeficientes da entrada, ento, o coeficiente do tamanho da palavra deve ser

A fim de evitar transbordamento e preservar a preciso em um N-tap na sada do filtro FIR, onde M o coeficiente mximo do tamanho da palavra, A o tamanho da palavra do acumulador, e L o tamanho da palavra dos dados.

AVISO: H um custo associado a esta soluo: o aumento do coeficiente de erro de quantizao. Este fato no deve ser ignorado quando se esta pesando nas opes.

Exemplo 2:

Continuamos com o 4-tap filtro FIR utilizado no exemplo 1. Suponha que o coeficiente mximo do tamanho da palavra seja de 16 bits, o tamanho da palavra dos dados seja 16 bits e o tamanho da palavra do acumulador seja de 32 bits.

A) Encontrar o valor do

, ou seja, o coeficiente efetivo do tamanho da palavra que

evitar o transbordamento, garantir que a preciso seja preservada na sada do filtro usando a regra 2.

B) Substituir este resultado na escala do coeficiente da regra 1 para obter dimensionamento do coeficiente.

o novo

SOLUO:

A) Simplesmente ligue os nmeros na equao (35):

B) Substituir M=14 na equao (15):

Vemos que a reduo do tamanho da palavra para 2 bits em uma parte tambm resulta em uma reduo do fator do coeficiente escalar em 2 bits e por conseguinte, aumenta o coeficiente de erro de quantizao. Este o preo que se paga para garantir que no resultado no ocorra o transbordo.

Agora estamos realmente fazendo, certo? No, devemos agora saber tudo o que h para saber sobre coeficiente escalar, certo? Bem, no. Lembre-se de que quando eu disse, " ... se nenhuma informao conhecido sobre os dados ou coeficientes ... "? Muitas vezes o caso em que os valores dos coeficientes so conhecidos em tempo de projetar (e no vai mudar). Por isso, no tm informaes sobre os coeficientes. Como podemos usar esta informao para melhorar a arquitetura de nosso filtro? Uma vez que estamos constantemente preocupados com transbordo em ponto fixo no processamento de sinal digital, comecemos por considerar a combinao (ou uma combinao) de N dados dos valores de entrada proporcionando a mxima sada de um dado N-tap no filtro FIR. Para responder a esta questo, recordar o tringulo desigualdade:

Com a bvia relao

, temos ento

Podemos generalizar estes 2-termos de soma de um N-termo de soma. Isso significa que os sinais de x[k] que far os termos soma todos positivos na convoluo

Resultar em uma largura maior de sada. Isso ocorre quando Portanto, podemos reescrever o conjunto de para maximizar a sada como

A convoluo soma agora tem a seguinte aparncia:

Mas observe que

para qualquer valor real r. Portanto

, e temos

O que mais poderamos atribuir a propriedade

que iriam maximizar esta soma? , ento temos

Deveria ser bvio, que se queremos maximizar todas as magnitudes de que maximizar a soma. Pois possvel para . Ento , onde

denota a magnitude mxima

Neste ponto vamos tambm definir o conceito de coeficiente rea, denotado por definido como

de forma que

Vamos fazer uma pausa e considerar nossos resultados at agora. Vemos que o mximo valor de sada de um filtro FIR uma funo do coeficiente rea ,no filtro. Isso

parece intuitivamente bvio. Vamos ver em alguns pargrafos que este coeficiente tambm uma caracterizao mais precisa do bit crescimento do filtro do que o apresentados anteriormente. At agora, estamos operando no estado da infinita preciso (ou seja, real) no domnio real. Agora expressar o resultado em termos de integral no escalar de X e e escala de modo que e : , onde X a escala

Vamos usar a notao anterior de A para o tamanho da palavra do acumulador, L para o tamanho da palavra dos dados, e M para o tamanho da palavra do coeficiente. Regras de aritmtica de ponto fixo dizem que o dimensionamento do resultado . Por conseguinte, ser

Sabemos que o mximo de qualquer T-bit inteiro de complemento 2 T >> 0, podem ser aproximados , simplesmente

, que, quando

. Podemos usar este fato e o ltimo

resultado para determinar a restrio da largura do acumulador A:

Se tomarmos o log de base 2 de ambos os lados e resolver para o

Uma vez que ser

deve ser um nmero inteiro, podemos acertar este condicionalismo para

Esse importante resultado diz que a fim de evitar o transbordamento na sada o valor mximo para o fator escalar do coeficiente estabelecido pelo tamanho da palavra

do acumulador A, do tamanho da palavra dos dados L, e o coeficiente da rea .

Existem, portanto, trs critrios que o fator do coeficiente escalar satisfazer: 1. Procuramos maximizar a fim de reduzir coeficiente do erro quantizao.

procura

2. Tendo em conta o mximo tamanho da palavra do coeficiente M, procuramos restringir a fim de que o coeficiente de maior magnitude seja representvel.

3. Dada o tamanho da palavra do acumulador A, o tamanho da palavra dos dados L e as informaes sobre os coeficientes, que chamamos de coeficiente de rea , procuramos restringir , para evitar o transbordo na convoluo da soma.

Assim, vemos que o valor para o funo:

que atende todos os trs critrios dada pela seguinte

Resumimos estes requisitos no seguinte

Teorema 4 (Teorema do segundo coeficiente escalar). Se

so os coeficientes de

um filtro FIR de comprimento N, M o tamanho da palavra do coeficiente , A a largura do acumulador e L o comprimento da palavra de dados, ento o melhor fator do coeficiente escalar dado pela expresso

onde

Exemplo 3:

Considere o filtro FIR 16-tap em b0 = 1 e b1, b2, . . . , B15 = 0. Supondo um acumulador com a tamanho da palavra de 32 bits, um dos dados com o tamanho da palavra

de 16 bits e um tamanho da palavra de coeficiente de 16 bits, use o Teorema 4 para estabelecer o valor ideal para o fator do coeficiente escalar .

SOLUO: Calcule :

Em seguida:

Neste caso, vemos que o fator limitante o que permite que os coeficientes sejam representados.

Exemplo 4:

Considere o filtro FIR 16-tap - b0, b1, b2, . . . , B15 = 0,0625. Supondo um acumulador com a tamanho da palavra de 32 bits, um dos dados com o tamanho da palavra de 16 bits, e um tamanho da palavra de coeficiente de 16 bits, use Teorema 4 para estabelecer o valor ideal para o fator do coeficiente escalar .

SOLUO:

Calculando :

Em seguida

Neste caso, vemos que o fator limitante o que evita o transbordamento no acumulador.

Exemplo 5:

Considere o filtro FIR 16-tap - b0, b1, b2, . . . , B15 = 0,0625. Supondo um acumulador com a tamanho da palavra de 32 bits, um dos dados com o tamanho da palavra de 16 bits, e um tamanho da palavra de coeficiente de 16 bits, use o Teorema 4 para estabelecer o valor ideal para o fator do coeficiente escalar .

SOLUO: Calculando :

Em seguida

Neste caso, vemos que o fator limitante o que permite que os coeficientes sejam representados, mas s porque este acumulador tem 8 bits de proteo de sobrecarga, caso contrrio, o acumulador limitaria como no exemplo 4. Note tambm que o acumulador

extra, o guarda bits, permite que a quantizao do coeficiente de erro seja inferior a do exemplo 4.

3 A escolha da palavra de Sada do Filtro FIR

Como mencionado anteriormente, um multiplicador de hardware DSP possui um tamanho da palavra de sada que normalmente de duas ou mais vezes o tamanho do tamanho da palavra de entrada. Por exemplo, os TI TMS320C54x normalmente utiliza uma entrada de dados de tamanho de 16-bits da amostra e a 16-bit tamanho da palavra do coeficiente a ser multiplicado para um tamanho da palavra de sada de 32-bits e tem um 40bits do acumulador. Se queremos requantizar o valor de 40-bits do acumulador para os resultados aps a convoluo de soma para uma palavra de tamanho de 16-bits de sada, temos de escolher uma quantidade de bits do acumulador. Como podemos escolher esses bits? Com base em um conjunto de coeficientes de complemento 2, tamanho da palavra M, coeficiente rea e uma entrada com tamanho da palavra de L bits, o nmero de bits necessrio para manter a preciso e ao mesmo tempo evitando o transbordo na convoluo soma

onde

E onde

so os coeficientes de valores reais. A fim de evitar o transbordamento para a largura da sada K, retiramos a parte superior de K

quando truncando esta largura bits, para

, numerando o LSB para o acumulador como bit 0.

Por exemplo: se L=16, M=16 e =3, ento

E se o tamanho da palavra de sada K = 16, ento voc deve tomar bits 18 para 33,

Se o tamanho do acumulador A inferior

, em seguida, o filtro pode transbordar

o acumulador durante a convoluo soma. Neste caso, a melhor opo a escolha mxima de K bits do acumulador.

Algumas quantidades de interesse:

1. A escala de

dos bits de sada

2. A escala mxima dos bits de K 3. Para levar o K-bits de sada para o acumulador direita por -bits (ou superior), desloque a

Exemplo 6:

SOLUO:

1- Calculando

2- Escala de

3- Escala mxima de K-bits para

4- Deslocando a direita:

4 Quantizao de Rudo filtros FIR

5 Concluso

A minha esperana a de que este artigo permita um projeto de um filtro FIR e para ver claramente os efeitos que as escolhas de um tamanho da palavra, escala e arquitetura de processamento tm com a integridade do sinal e que o material claro e preciso. Erros, sugestes, etc., devem ser enviadas para yates@ieee.org .

7 Referencias

[1] R. Yates, Fixed-Point Arithmetic: An Introduction. [2] LogiCORE IP FIR Compiler v5.0, Xilinx, April 2010, product Specification.