Disciplina: Processamento Digital de Sinais Aula 05 - Implementação de Sistemas de Processamento Digital de Sinais (Parte 01) Prof. (eduardo.simas@ufba.br) Programa de Pós-Graduação em Engenharia Elétrica Universidade Federal da Bahia
Conteúdo 1 2 Binárias 3 Efeitos da
Sistemas para processamento digital de sinais são usualmente implementados utilizando: - componentes eletrônicos discretos básicos e circuitos integrados; - dispositivos de lógica programável (Ex: FPGA - Field Programmable Gate Arrays); - circuitos integrados dedicados para a aplicação; - processadores digitais de sinais; - computadores. Nas implementações é importante escolher a representação numérica mais adequada (em ponto fixo ou em ponto flutuante). Independente da plataforma utilizada para a implementação, um aspecto importante é estudar os efeitos da precisão finita sobre o sistema a ser implementado.
Binárias
em Ponto Fixo Uma representação de ponto fixo na base 2 é obtida de: O número x pode ser obtido de: m k=0 x (I ) k 2k + n k=1 B(x) = x m (I )... x (I ) 1 x (I ) 0. x (F ) 1... x n (F ) }{{}}{{} Parte Inteira Parte Fracionária x = B 1 (x (I ) m... x (I ) 1 x (I ) (F ) 0.x x (F ) k 2 k = x (I ) m 2 m +...+x (I ) 1... x n (F ) ) = 1 21 +x (I ) (F ) 0 +x 1 2 1 +...+x n (F ) Considerando-se que os números foram escalados para o intervalo x ( 1, 1): B(x) = x 0.x 1x 2... x n n x = B 1 (x 0.x 1x 2... x n) = x k 2 k = x 0 + x 12 1 +... + x n2 n k=0 2 n
em Ponto Fixo Existem algumas representações de ponto fixo conforme listadas a seguir (estamos considerando que os números foram escalados para o intervalo x ( 1, 1)): Representação em sinal-módulo: Usa-se [x] M = s x.x 1x 2... x n, sendo s x o bit de sinal (x > 0 s x = 0). { B 1 (0, x 1x 2... x n), s x = 0 x = B 1 (0, x 1x 2... x n), s x = 1 Representação em complemento-a-um: [x] 1c = { B(x), x 0 B(2 2 n x ), x < 0 Representação em complemento-a-dois: [x] 2c = { B(x), x 0 B(2 x ), x < 0
em Ponto Fixo A representação de ponto fixo mais utilizada é a de complemento a dois. Essa representação tem a vantagem de realizar, com o mesmo circuito, as operações de adição e subtração. Para obter a representação em complemento de 2 de uma em sinal módulo, basta inverter todos os bits (o que equivale a obter a representação em complemento de 1) e depois somar 1 ao resultado. Considerando, por exemplo, uma representação em complemento de dois de números inteiros positivos e negativos utilizando 4 bits (um bit de sinal e 3 de codificação) temos: Número Representação Número Representação 0 0000-1 1111 1 0001-2 1110 2 0010-3 1101 3 0011-4 1100 4 0100-5 1011 5 0101-6 1010 6 0110-7 1001 7 0111-8 1000
em Ponto Fixo As representações em ponto fixo estão limitadas a uma faixa de valores que depende do número de bits utilizados. Com isso, as implementações que usam representação em ponto fixo estão sujeitas a problemas quando operações internas apresentam resultados que estão fora da faixa de valores que é possível de ser representada. Esses problemas são chamados de: - Overflow - quando o resultado da operação é superior à faixa representada; - Underflow - quando o resultado da operação é inferior à faixa representada. Exemplo: se num sistema de PDS fosse utilizada a representação mostrada no slide anterior e um somador interno fosse alimentado com: 0110 (6 10) e 0010 (4 10), o resultado da operação seria 10 10, que não pode ser representado com apenas 3 bits. Neste caso, ocorreu um overflow e a saída do somador estaria limitada a 0111 (7 10).
Representação em Ponto Flutuante A representação em ponto flutuante permite alcançar uma maior faixa de valores numéricos com o mesmo número de bits. Porém, a aritmética de ponto flutuante é mais complicada que a de ponto fixo, demandando mais recursos computacionais, sendo normalmente utilizada em implementações que dispõem de um maior poder de processamento, como em computadores. A representação em ponto flutuante considera que: x = ±d β e sendo d a mantissa (um número em ponto fixo), β a base da representação e e o expoente. Costuma-se utilizar também a notação F (β, t, m, M) para designar uma representação em ponto flutuante de base β, t bits significativos na mantissa, e expoente variando de m a M.
Representação em Ponto Flutuante Um número binário em ponto flutuante pode então ser representado por: Exemplo: Utilizando F (2, 10, 15, 15) o número 23 pode ser representado conforme descrito a seguir: Sabendo que: 23 = 1 2 4 + 0 2 3 + 1 2 2 + 1 2 1 + 1 2 0, pode-se chegar a: 23 = (1 2 1 + 0 2 2 + 1 2 3 + 1 2 4 + 1 2 0 ) 2 5
Representação em Ponto Flutuante O que nos daria a seguinte representação: A representação em ponto flutuante tem a vantagem de gerar uma representação que tem espaçamento variável, e portanto erro relativo aproximadamente constante em toda a faixa de valores:
Efeitos da
Efeitos da Erros de quantização são inerentes a qualquer implementação de sistema de processamento digital de sinais. Esses erros podem ser classificados em: - Erros devido à quantização dos sinais analógicos de entrada do sistema; - Desvios no comportamento do sistema devido à representação dos parâmetros do sistema (Ex.: constantes multiplicadoras) com palavras de comprimento finito; - Erros ocorridos internamente devido à quantização das saídas de blocos internos (Ex.: multiplicadores ou somadores); - Erros devido a overflow. Os efeitos das diversas formas de erro dependem também do tipo de representação numérica utilizada (em ponto fixo ou em ponto flutuante).
Erro de Quantização dos sinais analógicos Conforme visto no inicio do curso, a conversão analógico-digital está associada a um erro que é inevitável ao processo, o erro de quantização do sinal analógico. O número de níveis de quantização do sinal é dado por: N q = 2 n, sendo n o número de bits da representação digital. Considerando uma quantização com níveis equidistantes, o erro máximo, quando é realizado o arredondamento, é dado por: E qmax = s 2 2 n = q 2, sendo s a excursão total do sinal analógico e q = 2 n o intervalo de quantização. Considerando que o sinal de entrada seja escalado para o intervalo x ( 1, 1) temos: E qmax = 2 2 n 1 = 2 n.
Quantização de Produtos Um multiplicador com comprimento finito pode ser modelado como um multiplicador ideal seguido de uma fonte de ruído aditivo: Como se trata de um tipo de erro de quantização, pode ser estimado do mesmo modo que o erro de quantização na conversão AD. Assim, temos que o erro da quantização de produtos tem a seguinte distribuição de probabilidade (sendo q = q e b = n): Neste caso: σ 2 e = 2 2n 12
Escalamento de Sinal Para prevenir a ocorrência (ou pelo menos mantê-la em níveis aceitáveis) de overflow (saturação) de um nó interno de um sistema digital, em geral realiza-se o escalamento da entrada. O escalamento deve ser realizado considerando-se o fluxo de todas as operações do sistema digital (somas, multiplicações, etc) e identificado-se os nós mais sujeitos a saturação (quando o resultado da operação excede a faixa de valores representáveis pela codificação utilizada). Uma vez identificados estes nós, os sinais de entrada do sistema devem ser escalados para uma faixa que minimize a ocorrência do overflow.
Quantização de Coeficientes Na etapa de projeto, os coeficientes de um sistema digital (um filtro, por exemplo) podem ser calculados com toda a precisão disponível nos computadores. Na implementação, ao usar dispositivos de precisão finita, a resposta do sistema (função de transferência) pode ser modificada devido aos erros de quantização dos coeficientes. Existem vários critérios que avaliam a sensibilidade de um sistema digital à quantização dos coeficientes. Entre os mais utilizados pode-se destacar: I S H(ejω ) m i = H(ejω ) e II S H(e jω ) m i m i = 1 H(e jω ) H(e jω ) m i que avaliam a sensibilidade do módulo da função de transferência à variação do coeficiente m i. Para considerar o efeito de todos os coeficientes: K S(e jω ) = S H(ejω ) m i. i=1
Quantização de Coeficientes - Exemplo Considerando um filtro com os coeficientes listados a seguir e função de transferência: H(z) == b0 + b1z 1 +... + b N z N 1 + a 1z 1 +... + a N z N : Sensibilidade (a) e as variações esperadas na resposta de módulo (b) para uma implementação em ponto fixo utilizando 11 bits.
Ciclos Limite Um problema prático que pode afetar estruturas digitais recursivas (Ex.: filtros IIR) são os ciclos limite. Os ciclos limites são oscilações parasitas que podem ser classificadas em: - Ciclos-limite granulares: ocorrem devido aos sinais de ruído gerados nos quantizadores que podem se tornar correlacionados de amostra para amostra e de fonte para fonte. A estrutura recursiva pode contribuir para uma realimentação positiva desse ruído correlacionado que pode levar à instabilidade. - Ciclos-limite por overflow: a ocorrência de overflow em estruturas recursivas pode dar origem a oscilações auto-sustentáveis de alta amplitude. O adequado escalamento do sinal previne a ocorrência deste problema.
Bibliografia Consultada Na elaboração destes slides foram utilizadas as fontes a seguir: - TOCCI, R, WIDMER, N., MOSS, G. Sistemas Digitais, princípios e aplicações. Pearson, 2011. - DINIZ, P. S. R., da SILVA, E. A. B. e LIMA NETTO, S. Processamento Digital de Sinais. Bookman, 2004. - MITRA, S., Digital Signal Processing, Bookman, 2005. - WEEKS, M. Processamento Digital de Sinais, LTC, 2011. - ANTONIOU, A., Digital Signal Processing, McGraw-Hill, 2006. Algumas figuras foram retiradas na íntegra das referências acima.