Thursday 7 December 2017

Moving average filter fpga


Calculando a Média Móvel Este VI calcula e exibe a média móvel, usando um número pré-selecionado. Primeiro, o VI inicializa dois registradores de deslocamento. O registrador de deslocamento superior é inicializado com um elemento e, em seguida, adiciona continuamente o valor anterior com o novo valor. Esse registrador de deslocamento mantém o total das últimas medidas x. Depois de dividir os resultados da função de adição com o valor pré-selecionado, o VI calcula o valor da média móvel. O registro de deslocamento inferior contém uma matriz com a dimensão Média. Este registo de deslocamento mantém todos os valores da medição. A função de substituição substitui o novo valor após cada loop. Este VI é muito eficiente e rápido porque usa a função replace element dentro do laço while e inicializa a matriz antes de entrar no loop. Este VI foi criado no LabVIEW 6.1. Bookmark Ampliar ShareCommunity Criado em: 14 de agosto de 2017 12:56 por SamHorst - Última Modificação: 14 de agosto de 2017 12:58 PM por SamHorst Implementando um Filtro Efficient, Moving Average no LabVIEW FPGA Track / Summit: Embedded Systems Sistemas de controle e monitoramento sofrem de dados de sensores barulhentos, colocando em risco a funcionalidade ea precisão do sistema. Os dados de sensores ruidosos podem ser suavizados usando filtros de média móvel, mas a implementação desses filtros em um sistema CompactRIO com FPGA e restrições de recursos pode ser um desafio. Explore os desafios e as etapas para alcançar um eficiente algoritmo de filtro de média móvel baseado em FPGA. Examine o código LabVIEW FPGA em detalhes e discuta técnicas para ajudar na conservação de recursos. Orador (es): Neville Dholoo, Advanced Measurements Inc. Eu tenho uma pergunta relacionada à média contínua do valor de ADCs. A abordagem que eu usei é média contínua de exemplo 256 amostras. O valor adcaout (mostrado no código abaixo) que recebo na minha GUI aumenta lentamente. Como um exemplo, se eu estou esperando valor 100mA, My GUI mostra 4mA, 8mA, 15mA. E depois, finalmente, depois de 2 minutos eu obter um valor estável 100mA. Eu quero ver o 100mA diretamente em minha GUI de adcaout em vez de valores de incremento e estabilizar depois de algum tempo. Outra pergunta é que, posso de alguma forma fazer este processo rápido para que eu não tenho que esperar por 3 minutos para receber estável 100 mA de adcaout. O clock clk no desenho digital abaixo é de 20 MHz. O relógio para receber valores ADC na placa FPGA é 15 KHz. - o arquivo adc. vhd está abaixo: Seu código é modificado da seguinte forma: A saída final que eu estou vendo na minha GUI é slvvalue1 e slvvalue2 Como sobre isso: em reset (ou em qualquer outro momento se você quiser), atribua o Datain valor para todos os elementos em você palco matriz. Isso deve definir instantaneamente sua média para o valor atual: O exemplo abaixo mostra o código completo para uma calculadora de média móvel. Minha sugestão é que você estuda até que você entenda. Em seguida, tente usá-lo em seu projeto. Finalmente, e somente depois que você tiver um circuito básico funcionando, você pode alterá-lo para satisfazer suas restrições de design (largura de dados, número de amostras, intervalo de inteiros, uso de assinado contra inteiro etc.) Finalmente, se você quiser usar O código acima para manter duas médias separadas para dois sinais distintos, basta instanciar a entidade de média duas vezes: Edit: Como eu entendo de seus comentários, você pode precisar de uma entrada extra para definir a média instantaneamente para o valor de entrada atual. Nesse caso, você pode usar uma entrada de carga como mostrado abaixo: respondida Nov 26 13 at 15: 45Fast aritmética em FPGA Usando o binário binário redundante Abtract A representação binária redundante (RBR) tem muitas vantagens sobre a representação binária tradicional. Este artigo tenta demonstrar a utilidade de RBR em FPGA. São avaliados o desempenho e características de aparelhos para operações aritméticas (adição, subtração e multiplicação) e conversões entre complemento de dois e RBR. Um esquema de conversão mais rápido de RBR para twos complementar e filtro FIR média móvel também são demonstrados. Introdução A representação binária redundante (RBR) é um sistema numérico que usa mais bits do que o necessário para representar um único dígito binário, de modo que a maioria dos números tenha várias representações. RBR é diferente dos sistemas numéricos binários usuais, incluindo twos complementar, que usam um único bit para cada dígito. Muitas das propriedades de RBRs diferem das dos sistemas de representação binários regulares. Mais importante ainda, o RBR permite a adição sem usar um carry típico, mas torna a operação lógica bit a bit mais lenta. Normalmente, cada bit tem um sinal que não é necessariamente o mesmo que o sinal do número representado. Quando dígitos têm sinais, RBR é também uma representação de dígito assinado (1). RBR é um sistema de notação de valor de lugar (2). Em RBR, os dígitos são pares de bits, isto é, para cada lugar RBR usa um par de bits. O valor representado por um dígito RBR pode ser encontrado usando uma tabela de tradução. Esta tabela indica o valor matemático de cada par de bits possíveis. Como na representação binária convencional, o valor inteiro de uma dada representação é uma soma ponderada dos valores dos dígitos. O peso começa em 1 para a posição mais à direita e sobe um fator de 2 para cada posição seguinte. Geralmente, RBR permite valores negativos. Não há nenhum bit de sinal único que informa se um número representado RBR é positivo ou negativo. A maioria dos inteiros tem várias representações possíveis em um RBR. Um valor inteiro pode ser convertido de volta a partir de RBR usando a seguinte fórmula, onde n é o número de dígito e dk é o valor interpretado do k-ésimo dígito, onde k começa em 0 na posição mais à direita: Notação usada O seguinte binário redundante Representação é usada neste artigo: Tabela 1 Exemplo de tabela de conversão binária redundante Esta notação tem vantagens não encontradas em outra representação binária redundante. É possível encontrar facilmente o aditivo inverso de um valor lançando todos os bits do valor representado usando portas NOT. Isso permite que o edifício adder / subtracter unidade mais facilmente. (8) Unidade de adição A adição na representação binária redundante pode ser feita em tempo constante, contrariamente à adição na notação de complemento de dois. Isso pode ser explicado pelo fato de que o carry tem de se propagar através de toda a largura da unidade de adição. Isso não implica que a adição seja sempre mais rápida em RBR do que a representação de complemento de dois, mas que a adição será eventualmente mais rápida em RBR com largura de bit crescente porque o atraso de duas unidades de adição de complemento é proporcional a log (n) (onde n é A largura do bit) (3). Resultados (Xilinx) Tendo em mente, é interessante comparar o desempenho da unidade de somador binário típico e unidade de somador binário redundante considerando sua largura de bit. Os resultados seguintes foram obtidos utilizando a plataforma Altera e Xilinx. Figura 2 Retardo combinatório para o adicionador binário redundante no Xilinx Virtex 5 Tabela 2 Retardo aditivo binário redundante em plataformas Xilinx Esses resultados mostram que a representação binária redundante se torna mais rápida do que a representação complementar de dois em plataforma Xilinx quando os operandos se tornam maiores do que 32 bits. A adição é a pedra angular das operações aritméticas, pode-se esperar que resultados semelhantes sejam obtidos para outras operações aritméticas. No entanto, ele vem com o custo de usar cerca de duas vezes mais recurso LUT. Tabela 3 Retardo combinatório para o adicionador binário redundante em Altera Stratix III O desempenho da unidade de adição de RBR é muito melhor na Plataforma Altera. O somador RBR é sempre mais rápido do que o complementador de complemento de dois pares regular. Isso pode ser explicado pelo fato de que a arquitetura Stratix III FPGA é muito melhor em sete entradas para uma função combinatória de saída (4). Unidade de Subtração A subtração é a mesma que a adição, exceto que o inverso aditivo de um do operando precisa ser encontrado. Essencialmente, a subtração é a adição de um do operando ao aditivo inverso do outro operando. Usando a notação utilizada neste artigo, o aditivo inverso de um valor é facilmente encontrado por inverter cada bit de um operando. Unidade de Multiplicação A unidade de multiplicação aqui avaliada é composta por várias unidades de somador dispostas em uma árvore. A unidade de multiplicação não é pipelined embora poderia facilmente ser. Primeiramente, os parciais são calculados multiplicando-se cada dígito de um operando por cada dígito do outro operando usando a aritmética usual (5): Tabela 5 Retardo combinatório na unidade de multiplicação em Xilinx Virtex 5 O atraso na unidade multiplicadora como visto na Figura 4 e na Tabela 5 é proporcional ao log n em que n é a largura de bit dos operandos. Esta é uma característica inerente à árvore do sumador usada na concepção da unidade multiplicadora. O desempenho de uma unidade multiplicadora RBR começa a ser interessante quando a unidade multiplicadora tem largura de bit maior que 32 bits. Quando este é o caso, o atraso do multiplicador torna-se menor do que o atraso do circuito multiplicador especializado de FPGAs Xilinx. No entanto, ele vem a um custo significativo de LUT (Tabela 6). Além disso, este design poderia ser facilmente pipelined levando a uma diminuição significativa de atraso. Por exemplo, uma unidade multiplicadora de RBR de 64 bits poderia ser implementada como um pipeline de 6 estágios, adicionando o flip-flop D entre cada nível da árvore de somador, utilizando assim mais recursos do FPGA. Considerando-se isso, espera-se que a freqüência seja seis vezes maior. Este projeto seria interessante para um processador que usaria somente a representação binária redundante. Xc5vlx85-3ff676 Redundante (número de LUT) xc4vlx80-12ff1148 Redundante (número de LUT) Tabela 6 Recursos utilizados pela unidade multiplicadora RBR em Xilinx Virtex Results (Altera) Esta unidade de multiplicação não funciona bem em comparação com a unidade de multiplicação incorporada em Altera plataforma. Isso era esperado porque o Stratix III FPGA tem unidade de multiplicação dedicada com suporte nativo até 36 bits (6). Figura 5 Atraso na unidade de multiplicação Altera EP3SE80F1152C2 Twos Complemento Tabela 7 Atraso na unidade de multiplicação Altera Conversor binário para binário redundante O conversor aqui apresentado utiliza circuitos de propagação Xilinx e Altera especializados para acelerar a conversão binária para conversão binária redundante. A idéia básica é converter o número binário redundante para dois twos complementar número que, em seguida, pode ser adicionado com qualquer complemento twos complemento (7). Isso permite usar os recursos FPGA de forma mais eficiente e é na maioria das vezes mais rápido do que um conversor binário binário para conversor binário regular usando um adicionador seqüencial. X sendo um número binário redundante, é possível convertê-lo para 2 twos complemento número: Esses 3 números precisam ser adicionados usando padrão twos complemento adicionador. Um único adicionador é necessário uma vez que 1 pode ser adicionado como um carry in. Assim, o circuito de adicionador especializado de FPGAs pode ser usado para fazer a conversão de RBR para representação binária. Resultados Figura 6 Atraso em RBR para twos complementam unidade de conversão em plataforma Xilinx Tabela 9 Recursos usados ​​por RBR para conversor binário na plataforma Xilinx Os conversores especializados baseados em adicionadores apresentam, para operandos de até 128 bits, os melhores desempenhos em termos de velocidade e recursos utilizados. Filtro FIR. Os filtros FIR de média móvel são usados ​​em uma variedade de aplicações de comunicação. O filtro FIR pode ser representado como uma série de operações aritméticas. Como a melhor velocidade aritmética pode ser alcançada com RBR em FPGA, é esperado um aumento na velocidade do filtro FIR. O filtro FIR estudado aqui é a média móvel. A saída é a soma das n últimas entradas. É implementado como um tampão circular. Durante cada ciclo é lido um valor eo novo valor de entrada é escrito na cabeça do buffer circular. O filtro de média móvel também pode ser expresso recursivamente da seguinte maneira: O último valor é armazenado num registo de modo que pode ser calculado utilizando a fórmula acima durante o ciclo seguinte. Durante cada ciclo, precisamos somar e subtrair. Uma unidade de adição e uma unidade de subtração são usadas para calcular o próximo valor de. Figura 8 Retardo máximo do filtro médio móvel na plataforma Xilinx Tabela 11 Retardo máximo do filtro médio móvel no Altera EP3SE80F1152C2 O resultado da unidade binária redundante é notável. Mais notavelmente, a plataforma Xilinx 5 executa em tempo quase constante usando o binário redundante. Conclusão O resultado mostrado acima mostra que a representação binária redundante é útil para acelerar a operação aritmética mesmo em FPGA. A adição, subtração e multiplicação têm sido mostrar para ser mais rápido quando RBR é usado, mas algum dia apenas para largura de bit de 64 bits e superior. No entanto, esta velocidade tem um custo que é frequentemente aceitável considerando a natureza crítica do tempo do filtro digital. Além disso, é tolerável usar RBR em apenas um subconjunto de um grande circuito considerando que RBR para twos complementar a conversão é relativamente rápido quando feito corretamente. Um estudo mais aprofundado sobre circuitos maiores usando RBR seria interessante. Fácil colocação e operação de rota são esperados devido à natureza simétrica de RBR aparelho. Código-fonte Por este meio, libero este código-fonte sob a GPL. Você pode baixá-lo aqui . A fonte está em VHDL. Movingavg. vhd é um filtro de média móvel. Radder. vhd é um sumador RBR. Raddsub. vhs é um sumador / substractor RBR. Rmul. vhd é um multiplicador RBR. Rconv. vhs é RBR para twos complementar conversor. Tworconv. vhd é um complemento de dois para RBR conversor. Obras citadas 1. Panami, Behrooz. Sistemas Generalizados de Número de Cadastro Assinado. Um Quadro Unificador para Representações Numéricas Redundantes. IEEE TRANSACTIONS ON COMPUTERS, VOL. 39, NO. 1. pp. 89-98. 2. Wikipedia. Notação Posicional. Online Citado: 18 de agosto de 2008. en. wikipedia. org/wiki/Positionalnotation. 3. Pai, Yu-Ting e Chen, Yu-Kumg. O mais rápido transportar somador lookahead. Design Eletrônico, Teste e Aplicações. Segundo Workshop Internacional do IEEE, 2004. 4. Altera. Stratix II: 8-Input Fracturable LUT no ALM. Web site de Altera. Online Citado: 20 de agosto de 2008. altera / products / devices / stratix-fpgas / stratix-ii / stratix-ii / features / architecture / st2-lut. 5. Guoping Wang, Murad Ozaydin, Monte Tull. Divisor de alto desempenho usando representação binária redundante. IEEE. 2002. 6. DSP System Design em dispositivos Stratix III. Altera. Online Citado: 6 de outubro de 2008. altera / literature / an / an504.pdf. 7. Iljoo Choo, R. G. Deshmukh. Um novo esquema de conversão de um número binário redundante para dois complementam o número binário para a arquitetura paralela. IEEE. 2001. 8. Projeto Sistemático de Filtros Recursivos Pipelinados. Lapointe, Marcel, Huynh, Huu Tue e Fortier, Paul. L. l. IEEE TRANSACTIONS ON COMPUTERS, 1993.Moving Avergare Filter (MAF) em VHDL 2008 para DE0-NANO com FPGA Cyclone IV. Este filtro funciona com ponto fixo que o número de bits depende do ADC. Sobre o filtro de média móvel Um filtro de média móvel é um filtro digital que a média das entradas últimos termos M 1, como a seguinte expressão: Usando a segunda forma direta podemos definir hn como este: hn xn hn-1 Então yn pode ser Expresso neste waw: yn (hn-hn-M) / (M 1) Estrutura do filtro A hierarquia superior é maftop. vhd que definem todos os filtros estrutura. Para gerar de hn-1 a hn-M, flip-flops são usados ​​para atrasos. Você não pode executar essa ação neste momento. Você fez login com outra guia ou janela. Atualize para atualizar sua sessão. Você efetuou login em outra guia ou janela. Atualize para atualizar a sessão.

No comments:

Post a Comment