En la tercera practica realizada en la fpga, se busca implementar un diseño de un memoria rom haciéndolo aplicable a un contador asíncrono el cual funcionara a partir de una frecuencia ajustable (mediante el uso de divisor de frecuencia) este contador nos permitirá seleccionar cada una de las posiciones reservadas en la memoria rom, esta memoria nos entregara valores establecidos, cargados previamente en el código. la salida (los bits) de esta memoria es entregada de forma paralela, por lo cual se usa un convertidor paralelo-serie, que nos permitirá obtener una salida en serie, que sera por el código como un vector para poder asignarle los pines en la basys de forma mas cómoda
Como primer paso, se crea un proyecto con la metodología mencionada en anteriores posts, luego de esto pasamos a configurar el divisor de frecuencia, donde utilizamos el reloj interno de la fpga en su selección de 50Mhz (Este valor es seleccionable con el uso de un jumper externo en la tarjeta de basys) utilizando la ecuación dado por el docente la cual es:
Donde obtendremos un valor de escala el cual debe incluirse en el código del divisor, tomamos la frecuencia de trabajo interno de la fpga, la dividimos a la frecuencia deseada, y el valor obtenido se divide en 2 dando así la escala necesaria para generar la frecuencia deseada, en nuestro caso 4Hz, en el código se vera lo siguiente:
El funcionamiento de este código es un contador el cual tiene como valor máximo la escala obtenida por la ecuación y sus cambios obedecen a los cambios del reloj de la tarjeta basys.
Posteriormente se añade al proyecto un contador el cual nos dispondrá de elegir la cantidad de bits a utilizar (es decir cuantos bits necesita para llegar al conteo deseado) y de ser necesario generar un truncamiento del conteo, como se podrá ver se utiliza flip-flops jk para generar el conteo, en modo asíncrono y sin truncamiento para nuestro caso:
Posteriormente se añade al proyecto la memoria rom, la cual dispondrá de las posiciones y los valores que desea cargar en dicha posición dentro de esta, y a su vez dispone del selector con el cual de acuerdo al conteo del reloj, mostrara el valor asignado para dicha posición de memoria
Uniendo todo esto en el esquemático obtendremos la finalización de nuestro código, y se vera de la siguiente manera
No hay comentarios.:
Publicar un comentario