Simple moving average vhdl
Para o meu projeto, eu preciso reduzir o ruído de uma saída de ADC e implementar um filtro de média móvel simples em VHDL. Embora funcione em simulação (veja a imagem): tem algum comportamento estranho se eu a exibir no chipscope quando o sistema está sendo executado no FPGA (veja a imagem): O código VHDL que uso para a média móvel é o seguinte: I Use a ferramenta Xilinx Vivado 2015.2 rodando no Ubuntu 14.04 x64. Você poderia me ajudar a identificar o problema, de modo que os resultados na simulação correspondem aos resultados após a síntese? Tenho uma questão relacionada à média contínua do valor dos ADCs. A abordagem que usei é a média contínua do exemplo 256 amostras. O valor adcaout (mostrado no código abaixo) que recebo na minha GUI aumenta lentamente. Como exemplo, se eu estou esperando o valor 100mA, My GUI mostra 4mA, 8mA, 15mA. E depois, depois de 2 minutos, obtenho um valor de 100mA estável. Eu quero ver o 100mA diretamente na minha GUI de adcaout em vez de valores de incremento e estabilizando depois de algum tempo. Outra pergunta é que, eu posso de alguma forma tornar este processo rápido, de modo que eu não tenho que esperar por 3 minutos para receber 100 mA estável de adcaout. O clock clk no design digital abaixo é de 20 MHz. O relógio para receber valores ADC na placa FPGA é de 15 KHz. - o arquivo adc. vhd está abaixo: Seu código é modificado da seguinte forma: A saída final que eu estou visualizando na minha GUI é slvvalue1 e slvvalue2 Como sobre isso: na reinicialização (ou em qualquer outro momento, se desejar), atribua a Valor de dados para todos os elementos em sua matriz de estágio. Isso deve definir instantaneamente sua média para o valor atual: o exemplo abaixo mostra o código completo para uma calculadora média móvel. Minha sugestão é que você estuda até que você entenda isso. Em seguida, tente usá-lo em seu projeto. Finalmente, e somente depois de ter um circuito básico funcionando, você pode mudá-lo para satisfazer suas restrições de design (largura de dados, número de amostras, intervalo de inteiros, uso de assinado versus inteiro, etc.). Finalmente, se você quiser usar O código acima para manter duas médias separadas para duas sinais distintas, simplesmente instanciar a entidade de média duas vezes: Editar: Como eu entendo dos 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: respondido 26 de novembro às 15h45
Комментарии
Отправить комментарий