Sunday, December 18, 2016

Filtro Promedio Móvil Usando Vhdl


Tengo una pregunta relacionada con el promedio continuo del valor de ADCs. El enfoque que he utilizado es el promedio continuo de ejemplo 256 muestras. El valor adcaout (mostrado en el código de abajo) que recibo en mi GUI aumenta lentamente. Por ejemplo, si espero un valor de 100mA, Mi GUI muestra 4mA, 8mA, 15mA. Y después finalmente después de 2 minutos consigo el valor estable de 100mA. Quiero ver el 100mA directamente en mi GUI de adcaout en lugar de valores de incremento y la estabilización después de algún tiempo. Otra pregunta es que, puedo de alguna manera hacer este proceso rápido para que no tenga que esperar 3 minutos para recibir 100 mA estable de adcaout. El reloj clk en el diseño digital a continuación es de 20 MHz. El reloj para recibir valores ADC en la placa FPGA es 15 KHz. - el archivo adc. vhd está abajo: Su código se modifica de la siguiente manera: La salida final que estoy viendo en mi GUI es slvvalue1 y slvvalue2 Qué tal esto: al restablecer (o en cualquier otro momento si lo desea), asigne el Dato de valor a todos los elementos de la matriz de etapa. Esto debería establecer instantáneamente su promedio en el valor actual: El ejemplo siguiente muestra el código completo para una calculadora de promedio móvil. Mi sugerencia es que lo estudies hasta que lo entiendas. Luego, trate de usarlo en su diseño. Por último, y sólo después de tener un circuito básico de trabajo, se puede cambiar para satisfacer sus limitaciones de diseño (ancho de los datos, el número de muestras, rango de enteros, el uso de firmado vs entero, etc) Por último, si desea utilizar El código anterior para mantener dos promedios separados para dos señales distintas, basta con instanciar la entidad de promedio dos veces: Editar: Según entiendo de sus comentarios, puede que necesite una entrada adicional para establecer el promedio instantáneamente al valor de entrada actual. En ese caso, puede utilizar una entrada de carga como se muestra a continuación: respondió Nov 26 13 a las 15:45Moving Avergare Filter (MAF) en VHDL 2008 para DE0-NANO con FPGA Cyclone IV. Este filtro funciona con punto fijo que el número de bits depende del ADC. Acerca del filtro de media móvil Un filtro de media móvil es un filtro digital que el promedio de las entradas de los últimos términos M 1, como la siguiente expresión: Usando la segunda forma directa podemos definir hn como esto: hn xn hn-1 Así que yn puede ser Expresada en esta ley: yn (hn - hn - M) / (M 1) Estructura del filtro La jerarquía superior es maftop. vhd que define toda la estructura de los filtros. Para generar de hn-1 a hn-M, los flip-flops se utilizan para retrasos. No puedes realizar esa acción en este momento. Has iniciado sesión con otra pestaña o ventana. Vuelve a cargar para actualizar tu sesión. Saliste en otra pestaña o ventana. Recargar para actualizar su session. Thread: promedio continuo usando VHDL Tengo una pregunta relacionada con la programación VHDL. Quiero calcular el promedio continuo. Mi código de ejemplo es: En cada borde positivo del reloj, el valor de quotout-valquot cambia. Quiero tomar continuamente el promedio de quotout-valquot. Quiero tomar un promedio de 32 valores de forma continua. Hay una manera en la que puedo tomar un promedio de 32 valores de forma continua hasta que el reloj se está ejecutando. Por favor, hágamelo saber cómo puedo hacer eso. También puede modificar el código anterior. Muchas gracias, 19 de noviembre de 2013, 07:01 AM 2 Tengo una pregunta relacionada con la programación de VHDL. Quiero calcular el promedio continuo. Mi código de ejemplo es: En cada borde positivo del reloj, el valor de quotout-valquot cambia. Quiero tomar continuamente el promedio de quotout-valquot. Quiero tomar un promedio de 32 valores de forma continua. Hay una manera en la que puedo tomar un promedio de 32 valores de forma continua hasta que el reloj está funcionando. Por favor, hágamelo saber cómo puedo hacer eso. También puede modificar el código anterior. Muchas gracias, primero usted necesita corregir su sintaxis (no utilice el guión pero el subrayado) Para el filtro medio corriente, la manera más fácil es entrada del retardo a través de 32 etapas. Restar la última etapa de la entrada y acumular el resultado. 19 de noviembre de 2013, 07:03 AM 3 Fecha de Ingreso Sep 2012 Mensajes 41 Rep Power 1 Re: Promedio continuo usando VHDL En realidad usé subrayado en mi código original. No sé por qué escribí-1 aquí. Su out1 Lo siento por la confusión. Puede describir con un ejemplo cómo hacer un promedio continuo. 19 de noviembre de 2013, 07:22 4 Fecha de Ingreso Oct 2008 Ubicación London Mensajes 3,389 Rep Power 1 Re: promediado continuo usando VHDL En realidad usé guión bajo en mi código original. No sé por qué escribí-1 aquí. Su out1 Lo siento por la confusión. Puede describir con un ejemplo cómo hacer un promedio continuo. Gtgtgt de entrada. 32 etapas ----------------- gt sustraer la etapa 32 de la entrada actual poner el sustractor al final del tubo de retardo para sustraer la última etapa de la entrada actual y luego tomar el resultado de la sustracción en un acumulador (Sumador de retroalimentación con un registro). Truncar la suma del acumulador como adecuada. El promedio continuo usando VHDL toma entonces el resultado de la substracción en un acumulador (sumador de la regeneración con un registro). Truncar la suma del acumulador como adecuada. Descarte 5 LSB del resultado del acumulador. Las primeras 31 muestras iniciales no serán correctas, pero el flujo se ajustará a la derecha. Kaz Sólo como un ejemplo, estoy haciendo promediado continuo para 4 valores. Puede comprobar si mi enfoque es correcto. Sum es el valor promedio de salida. El código anterior funciona si tengo números sin firmar. Pero quiero que el promedio del vector stdlogic. El datain se define como: datain: in stdlogicvector (11 downto 0) Por favor, ayúdame a resolver este problema. Modifique el código anterior para poder obtener valores promediados continuos para el valor vectorial. 20 de noviembre de 2013, 12:09 PM 9 Fecha de Ingreso Oct 2008 Ubicación London Publicaciones 3,389 Rep Power 1 Re: Promedio continuo usando VHDL kaz A modo de ejemplo, estoy haciendo promediado continuo para 4 valores. Puede comprobar si mi enfoque es correcto. Sum es el valor promedio de salida. El código anterior funciona si tengo números sin firmar. Pero quiero que el promedio del vector stdlogic. El datain se define como: datain: in stdlogicvector (11 downto 0) Por favor, ayúdame a resolver este problema. Modifique el código anterior para poder obtener valores promediados continuos para el valor vectorial. No veo cómo funciona su enfoque. Si soy yo, simplemente seguiré el diagrama que posteé anteriormente. Por ejemplo Re: promediado continuo usando VHDL Su enfoque no funcionó para mí. Comprobé la salida en el FPGA, pero no funcionó para mí. Básicamente estoy tratando de estabilizar los valores de salida ADC. Es por eso que estoy promediando los datos entrantes o los datos capturados con ADC. Outval y outval2 son las salidas ADC de 12 bits. Ill mostrar cómo he utilizado su enfoque a continuación. Corregirme amablemente si estoy equivocado: mido los valores de adc (corriente y voltaje) quotadcaout y adcboutquot después de usar el acercamiento antedicho y consigo valores incorrectos. Por favor, hágamelo saber dónde estoy haciendo mal.

No comments:

Post a Comment