0% encontró este documento útil (0 votos)
70 vistas1 página

FSM para Secuencia de Fibonacci en FPGA

Este documento describe tres pasos para diseñar un circuito en FPGA que genera la secuencia de Fibonacci. En el primer paso, se construye un módulo que calcula los términos de Fibonacci de hasta 4 dígitos utilizando una máquina de estados finitos con ruta de datos. En el segundo paso, se modifica el módulo para incluir una interfaz de usuario que recibe el número máximo de iteraciones a través de interruptores y muestra los resultados en displays de 7 segmentos. Finalmente, en el tercer paso se agrega una memoria para almacen
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
70 vistas1 página

FSM para Secuencia de Fibonacci en FPGA

Este documento describe tres pasos para diseñar un circuito en FPGA que genera la secuencia de Fibonacci. En el primer paso, se construye un módulo que calcula los términos de Fibonacci de hasta 4 dígitos utilizando una máquina de estados finitos con ruta de datos. En el segundo paso, se modifica el módulo para incluir una interfaz de usuario que recibe el número máximo de iteraciones a través de interruptores y muestra los resultados en displays de 7 segmentos. Finalmente, en el tercer paso se agrega una memoria para almacen
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Pontificia Universidad Javeriana

Departamento de Electrónica
Diseño Digital en FPGA

Taller de Máquinas de Estados Finitos No. 3:


Finite State Machine with Data Path

Circuito generador de secuencia de Fibonacci


1. La secuencia de Fibonacci constituye una serie de números definidos como:
0 𝑖=0
𝑓𝑖𝑏(𝑖) = 1 𝑖=1
𝑓𝑖𝑏(𝑖 − 1) + 𝑓𝑖𝑏(𝑖 − 2) 𝑖 > 1

Una manera de calcular fib(i) es construir una función iterativa, desde 0 hasta el i-ésimo
término deseado. Esta aproximación requiere dos registros temporales para almacenar dos
los números de Fibonacci más recientes (fib(i-1) y fib(i-2)), y un registro adicional que
almacena el índice i para llevar la cuenta del número de iteraciones. Construya un módulo
parametrizable para calcular una secuencia de Fibonacci de hasta cuatro dígitos utilizando
una FSMD. El parámetro recibido será en este caso, el número de iteraciones deseadas, con
un máximo de 21 que corresponde al número 6,765 (la siguiente iteración, i=22
corresponde al número 10,946. Verifique el funcionamiento el módulo en simulación y en
la tarjeta utilizando SignalTap. La generación de los dígitos sucederá a la velocidad máxima
posible teniendo en cuenta el tiempo de cálculo de la suma, así el registro de los valores
deseados. Utilice un módulo de suma utilizando un módulo IP y generando un circuito
envolvente que reciba enable, dato a, dato b y entregue una señal de data ready y el
resultado de la suma registrado.

2. Modifique el módulo anterior para generar una interface con el usuario. El módulo deberá
recibir de la tarjeta, además del reset asincrónico, una señal adicional de enable (mediante
un switch) que ponga en estado inicial el circuito cuando esté en ‘0’ y dispare el cálculo de
la secuencia cuando esté en ‘1’. Deberá recibir el número de iteraciones deseadas mediante
los switches de la tarjeta. El módulo deberá mostrar el número calculado utilizando los
displays 7-segmentos y permitir la visualización de cada uno de ellos por 1 segundo. Una
vez se cumplan las iteraciones deseadas, deberá encender un LED indicando fin de la
operación.

3. Diseñe un módulo de memoria para almacenar los números de la serie de Fibonacci


calculados. En FPGA no es posible diseñar arreglos de longitud variable como se hace en
lenguajes de alto nivel (ej. Arraylist en Java o malloc en C). La memoria diseñada deberá
definir el tamaño máximo tanto en posiciones como en longitud de palabra en tiempo de
compilación. Modifique el módulo diseñado en el punto 2, de tal forma que incluya dos
señales de entrada provenientes de dos de los botones de la tarjeta. Una vez el cálculo de
la serie es finalizada y desplegada en los 7 segmentos, los botones deberán leer en orden
ascendente y descendente respectivamente las posiciones de la memoria y deberán
desplegar el número leído en los displays 7-segmentos. El recorrido del arreglo deberá ser
circular en ambos sentidos. Recuerde utilizar su circuito Antibouncer.

También podría gustarte