Thursday 31 January 2019

Simple moving average vhdl


Estou tentando escrever um módulo de media móvel VHDL (uniformemente ponderado) que usa FSMD (ata). Pelo que entendi, os estados necessários seria algo como buscar, dividir, produzir. Abaixo está o processo que escrevi, mas sinto que minha lógica está um pouco fora. Note-se que a média de dados Im é apenas uma matriz constante de números de 8 bits, então pensei que deveria ser bom usar um projeto não causal. Os dados têm 64 entradas e, no momento, a janela para a média é 4. Quão errado isso parece Alguns problemas que posso ver imediatamente: você não reinicia a temperatura em qualquer lugar. Você não tem nenhuma verificação de limite para a contagem (é um subtipo ou apenas um inteiro natural. O que acontece com o padrão (counti) quando você se aproxima do limite Como você rola) O seu loop for é 0 para len - você tem certeza de que Não significou 0 para (len - 1) Uma vez que seu processo de decodificação do estado inteiro é sincronizado, você realmente não precisa de nstate. Note que você nem está a inicializar o cstate (mas você ainda está decodificando isso). Ou faça seu estado decodificar um processo combinatório separado ou simplesmente se livrar de nstate e atribuir diretamente ao cstate. Caso contrário, depende dos seus objetivos de design. Se você não se preocupa com a taxa de transferência, mas precisa ser executado em uma taxa de clock muito alta, você pode querer executar a sua adição, seqüencialmente em vez de em paralelo, por exemplo. Respondeu 5 de setembro 14 às 13:32 obrigado, isso definitivamente faz as coisas melhorarem. Sobre o rollover de contagem, eu não tenho certeza de como fazer isso porque, para cada padrão (contagem) até 63, eu quero exibir seu valor e a média da janela em torno dele. Então, se eu mudar de campântano, não deveria sair dos limites, mas não mostrará dados completos. Se eu estivesse fazendo uma implementação causal eu teria algum atraso no começo, é uma coisa semelhante que eu preciso aqui, mas no final do usuário ndash1710566 5 de setembro às 23:23 minha solução era: elsif (evento clk), então, se contar 64 Então conta lt 0 else calcula end if. And no loop for, eu coloco uma saída se count i for maior que 63. ndash user1710566 6 de setembro 14 em 0: 05 Tenho uma questão relacionada à média contínua do valor de 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, minha GUI mostra 4mA, 8mA, 15mA. E, finalmente, depois de 2 minutos, consigo um valor de 100mA estável. Eu quero ver o 100mA diretamente na minha GUI de adcaout em vez de valores de incremento e estabilizar depois de algum tempo. Outra questão é 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 estou exibindo na minha GUI é slvvalue1 e slvvalue2 Como sobre isso: na reinicialização (ou em qualquer outro momento, se desejar), atribua a Valor de data 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é você entender. Em seguida, tente usá-lo no seu projeto. Finalmente, e somente depois de ter um circuito básico funcionando, você pode mudá-lo para satisfazer suas restrições de projeto (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 dois sinais distintos, 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 15: 45 Média móvel simples - SMA BREAKING DOWN Média móvel simples - SMA Uma média móvel simples é personalizável, pois pode ser calculada para um número diferente de Períodos de tempo, simplesmente adicionando o preço de fechamento do título por vários períodos de tempo e dividindo esse total pelo número de períodos de tempo, o que dá o preço médio da garantia durante o período de tempo. Uma média móvel simples suaviza a volatilidade e facilita a visualização da tendência de preços de uma segurança. Se a média móvel simples aponta, isso significa que o preço de segurança está aumentando. Se está apontando, significa que o preço das garantias está diminuindo. Quanto mais tempo for a média móvel, mais suave será a média móvel simples. Uma média móvel de curto prazo é mais volátil, mas sua leitura está mais próxima dos dados de origem. Significado analítico As médias móveis são uma importante ferramenta analítica usada para identificar tendências de preços atuais e o potencial de uma mudança em uma tendência estabelecida. A forma mais simples de usar uma média móvel simples em análise é usá-lo para identificar rapidamente se uma segurança está em uma tendência de alta ou tendência de baixa. Outra ferramenta analítica popular, embora ligeiramente mais complexa, é comparar um par de médias móveis simples com cada cobertura de intervalos de tempo diferentes. Se uma média móvel simples de curto prazo estiver acima de uma média de longo prazo, espera-se uma tendência de alta. Por outro lado, uma média de longo prazo acima de uma média de curto prazo indica um movimento descendente na tendência. Padrões de negociação populares Dois padrões comerciais populares que usam médias móveis simples incluem a cruz da morte e uma cruz dourada. Uma cruz de morte ocorre quando a média móvel simples de 50 dias passa abaixo da média móvel de 200 dias. Isso é considerado um sinal de baixa, que outras perdas estão em estoque. A cruz de ouro ocorre quando uma média móvel de curto prazo quebra acima de uma média móvel de longo prazo. Reforçada pelos altos volumes de negociação, isso pode indicar que ganhos adicionais estão em armazém.

No comments:

Post a Comment