Como se muestra en el diagrama de bloques a continuación. Genero un reloj de 128 KHz y una secuencia de pulsos conocidos en 10 ms (el temporizador de 10 ms se implementa en el contador de impulsos al dividir los 128 KHz por 1280) y los envío al contador de impulsos en el sistema bajo prueba.
El problema es que cuando envío 1000 pulsos en 10 mseg, el contador no cuenta exactamente 1000. Sigo obteniendo conteos más bajos (982 ~ 998). Cuando acabo de sondear los 128 KHz en el punto de prueba que se muestra (¡o lo toco con mi dedo!), El número contado disminuye mucho hasta alcanzar los 400 conteos a pesar de que el 128 KHz detectado está limpio y no tuvo problemas.
¿Alguna idea de lo que está pasando aquí ?!
¡Problema resuelto!
El resistor pull up en la salida del optoacoplador es 4K, por lo que la corriente máxima del optoacoplador es ~ 1.2mA, que es tan pequeña para controlar la entrada FPGA. Reemplazar la resistencia por 400 ohmios solucionó este problema y el conteo ahora es estable cuando pruebo o toco con mi dedo.
Gracias a todos por su contribución.