Procedimiento de neuroestimulación
El frecuencímetro digital es una de las herramientas de medición importantes en el campo de la tecnología electrónica moderna y también se utiliza ampliamente en muchos otros campos. Un frecuencímetro digital registra el número de pulsos medidos dentro de un tiempo de referencia específico, los convierte en frecuencias y los muestra en forma digital. Se utiliza un frecuencímetro digital para medir la frecuencia de una señal (onda cuadrada, onda sinusoidal u otra señal periódica) y mostrarla como un número decimal. Tiene las ventajas de alta precisión, velocidad de medición rápida, lectura intuitiva y fácil uso.
Un ejemplo implementado en lenguaje VHDL es el siguiente:
-Nombre del proyecto: Frecuencímetro de precisión constante
-Dispositivo de destino: FPGA o CPLD
-Revisión 0.01 -Archivo creado
-Observaciones: clk - Reloj de funcionamiento del sistema, 2MHz.
-Señal de reinicio del sistema, el nivel alto está activo.
- FX es la señal a probar.
-La frecuencia nx es el valor de conteo de la señal a medir.
- freqns es el valor de conteo de la señal estándar.
- freq es la frecuencia de la señal a medir.
-
-
Biblioteca IEEE
Utilizar IEEE. STD_LOGIC_1164. Todos;
Utiliza IEEE. STD_LOGIC_ARITH. Todos;
Utiliza IEEE. STD_LOGIC_UNSIGNED todos;
-
El contador de frecuencia de la entidad es
generic(clk_freq:integer:= 2000000);-frecuencia del reloj de trabajo del sistema
port(clk: en STD_LOGIC;
Reset: en STD_LOGIC;
Fx: en STD_LOGIC; - señal a medir
freq ns : salida natural;
freq NX:salida natural);
-Freq:salida natural);
Medidor de frecuencia de punto final;
-
El comportamiento estructural del frecuencímetro es
-
Inicio de señal: STD_LOGIC - Cuando esta señal es alta, el contador comienza a contar.
Señal CTRL:STD _ LOGIC; - La señal CTRL es una señal de inicio del contador generada por la señal a probar y la señal estroboscópica.
Señal CNTx: Natural; - Contador de señal en prueba
Señal CNT: Natural - Contador de señal estándar
-
Inicio
- **************************************** - p >
-Genera una señal estroboscópica, activa alta.
GateCtrl: proceso(clk)
-
Variable CNT0: rango entero 0 a 2 _ 097 _ 152 contador de señal de puerta
< p; >-Inicio
Si es flanco ascendente (clk), entonces
Si reset='1 ', entonces
CNT 0: = 0;
Otros
CNT 0:= CNT 1
Fin
-
Si reset='1 ', entonces
start& lt= '0';
elsif CNT0 & lt(clk_freq*3/4) entonces
Inicio& lt= '1';
Otro
Inicio& lt= '0';
Finalizar si;
Finalizar si;
Finalizar proceso GateCtrl
- ******************************* ** ******** -
-Genera la señal CTRL, una señal de inicio de contador generada por la señal medida y la señal estroboscópica.
CtrlGen: Proceso (Fx)
Inicio
Si es flanco ascendente (Fx), entonces
Si reset='1 ', Luego
CTRL & lt= '0';
Otros
CTRL & lt=start;
Finalizar si;
Finalizar si;
Finalizar proceso CtrlGen
- ************************* **************** -
-Utilice dos contadores para contar la señal estándar clk y la señal a probar respectivamente.
-
-Señal estándar de conteo, válida durante el nivel alto de CTRL.
Conteo: proceso (reloj)
Inicio
Si es flanco ascendente (clk), entonces
Si reset='1', Entonces
CNTs & lt= 0;
elsif CTRL='1 'Entonces
CNTs & lt= CNTs+1;
Otros
CNT & lt= 0;
Finalizar si;
Finalizar si
Finalizar recuento de procesos
-
-La señal de conteo a medir es válida durante el nivel alto de CTRL.
CountX: Proceso (Fx)
Inicio
Si es flanco ascendente (Fx), entonces
Si reset='1 ', Entonces
CNTx & lt= 0;
elsif CTRL='1 'Entonces
CNTx & lt= CNTx+1;
Otros
CNTx & lt= 0;
Finalizar si
Finalizar si
Finalizar proceso CountX
- **************************************** -
- El flanco descendente de CTRL generará resultados técnicos y valores medidos.
Conteo: Proceso (CTRL)
Inicio
Si es flanco descendente (CTRL), entonces
Si reset='1', entonces
FreqNs & lt= 0;
FreqNx & lt= 0;
-Freq & lt;= 0;
Otros
FreqNs & lt= CNTs
FreqNx & lt= CNTx
-Freq & lt;=(clk_freq/CNTs * CNTx);
Finalizar si;
Finalizar si;
Finalizar recuento de procesos;
Finalizar comportamiento;
Lo siguiente está escrito para Módulo anterior La plataforma de prueba ha pasado la simulación en Modelsim. Debido a la gran cantidad de datos, se recomienda no utilizar la simulación de Altera e ISE.
-
Biblioteca ieee
Utiliza IEEE .STD_Logic_1164. todos;
Utilice IEEE.STD_logic_unsigned.all;
Utilice ieee.numeric_std. Todos;
La entidad tb es
Terminal TB;
El comportamiento arquitectónico de tb es
-Declaración unitaria del dispositivo bajo prueba (UUT )
Medidor de frecuencia de componentes
Puerto (
clk: en std_logic;
Reset: en std_logic;
Fx: en std_logic;
freq ns:OUT natural;
freq NX:OUT natural;
Frecuencia: más allá de lo natural
);
Fin de componente;
-Entrada
Clk de señal:STD_logic:= ' 0 ';
Reset de señal: STD_logic:= ' 1 ';
Fx de señal: STD_logic:= '0';
-Salida
Frecuencia de señal: natural
<; p>Señal FreqNx: natural-Frecuencia de señal: natural
-Definición del período de reloj
Periodo_clk constante: tiempo:= 500ns
Inicio
-Crea una instancia de la unidad bajo prueba (UUT)
uut: Mapeo del puerto del medidor de frecuencia (
clk = & gtclk,
reset = & gtReset,
Fx = & gtFX,
FreqNs = > Frecuencia,
FreqNx = & gtFreqNx,
- Freq => Frecuencia
);
-Definición de proceso de reloj
clk_process: proceso
Inicio
clk & lt= '0';
Esperar clk _ period/2;
clk & lt= '1';
p>Esperar clk _ period/2;
Finalizar el proceso;
-Generar una señal a medir
Fx_process: proceso
Iniciar p>
Fx & lt= '0';
Espera 2 * clk_period
Fx & lt= '1';
Espera 2 * clk_period
Finalizar proceso;
Estimular proceso
Proceso de proceso
Inicio
-permanecer en restablecer el estado durante 100 milisegundos.
Esperar clk_period * 10;
Restablecer & lt= '0';
- Insertar estímulo aquí
Esperar
Finalizar el proceso;
Fin;
Consultar el método principal de medición de frecuencia M/T.