Red de conocimiento informático - Problemas con los teléfonos móviles - Procedimiento de neuroestimulación

Procedimiento de neuroestimulación

Este es un diseño de curso clásico en el campo de la programación de sistemas para circuitos integrados digitales a gran escala.

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

- **************************************** -

-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

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.