Contador 16 bits por FPGA
Enviado por Antonio • 10 de Enero de 2019 • 1.544 Palabras (7 Páginas) • 390 Visitas
...
Debido a que vamos a leer pulsaciones no requerimos las dos entradas J y K por lo que se conectan en común a un input que deberá siempre estar recibiendo un valor de 1 para poder llevar acabo las pulsaciones del reloj. Respectivamente conectamos un nuevo input para el reloj, esté se encargará de dar las pulsaciones a una frecuencia determinada.
Y finalmente conectamos todas las entradas PRN de los flip-flops a un input de tal forma que en el momento en que este input reciba una señal positiva reinicie el conteo desde cero.
[pic 10]
Una vez compilado el programa nos enfocamos en la asignación de pines dentro de FPGA entrando a la opción de “Pin assigment” donde seleccionaremos el pin en donde queremos que nuestras señales de input y output queden establecidas. Debemos considerar que dentro del FPGA existen algunos pines que por default tienen establecidos ciertos comportamientos tales como el caso de voltaje, tierra y en algunos, frecuencia.
Una vez establecidos los pines, podemos programar la placa y probaremos su correcto funcionamiento por medio de led, asignándole un conteo por medio de un reloj ya generado y observando que los leds encendidos den el número en binario que se programó en el reloj.
[pic 11]
Antes de comenzar la prueba física, Altera nos permite generar una simulación donde se proveen los comportamientos lógicos de nuestras entradas y salidas, logrando observar que el programa funciones como se desea. Para este caso se dio una entrada de reloj de 10ns en la entrada “CLK” y se probó su funcionamiento para las 17 salidas. En la imagen de la simulación podemos observar como en formato ASCII no da el conteo desde “0” en continuidad hasta “18”. De esta forma comprobamos que realmente se está generando un contador ascendente.
Al generar una simulación con un reloj de 1000MHz podemos leer valores hasta el dato 9 dado que el simulador no nos permite superar un transcurso mayor a 1us y una frecuencia mayor a 1000MHz lo cual nos limita debido a que para generar la simulación de 16 bits se requiere que llegue a 13us a una frecuencia de 10MHz.
[pic 12]
[pic 13]
Por medio de “0” y “1” generados por cada ciclo de reloj y leídos por columna es como podemos apreciar el número en binario que se genera dentro del contador.
[pic 14]
Para comprobar su funcionamiento, se generó un programa en Arduino que emitiera una pulsación periódicamente de forma que se repitiera un número programado de veces y se comprobara en binario por medio de los leds que enciendan. En el caso de la imagen, se logra leer el número 98 en binario que fue dado como numero de conteos en el sketch.
[pic 15]
Se generaron otras pruebas simultaneas de conteo de números superiores, obteniendo un resultado positivo para un máximo de 16 bits lo que nos permite contar un total de 131,071 pulsaciones, las cuales se pueden dar en distintas frecuencias.
[pic 16]
Gracias al uso de un osciloscopio se logró medir la frecuencia con la que se generaban las pulsaciones dadas durante la prueba, donde se observa la señal digital con la que se presentan las pulsaciones.
Se generó un contador paralelo de 11bits con la finalidad de probar la máxima frecuencia del FPGA y a su vez está diseñado para dar 3,000 pulsaciones exactas, una vez que ha llegado a este número, el contador se detiene omitiendo la recepción de nuevos pulsos hasta recibir un reset para volver a contar hasta 3,000 como su número máximo. Esto con la idea de poder probar que el número de pulsaciones a una frecuencia mayor de 10MHz no afecte con la calidad y eficacia de la recepción y lectura de datos.
[pic 17]
- Conclusiones
Al generar un contador de pulsos por medio de la aplicación de un FPGA podemos tener un número mayor de acciones debido a que nos permite llevar acabo múltiples tareas distribuidas en sus diferentes pines, lo cual es algo que muchos microcontroladores no nos permiten realizar debido a que aun cuando su nivel de velocidad se bueno, su capacidad de tareas se reduce a una por momento lo cual nos limita y para la creación de un contador podría repercutir de forma tal que el número de conteos no sea el correcto ya que si la frecuencia con la que se genera la pulsación es mayor a la respuesta del microcontrolador, se perderán una gran cantidad de datos lo que implicaría que el microprocesador es demasiado lento para la recepción de datos. Sin embargo la velocidad en la que opera la placa Cyclone II es de hasta 260MHz, lo que nos da una alta velocidad de procesamiento permitiéndonos captar datos a altas frecuencias por lo que su capacidad para leer correctamente los datos dados a una frecuencia de 10MHz está garantizada.
- Referencias
...