You are on page 1of 15

[ESCRIBA EL NOMBRE DE LA COMPAA]

PRACTICA VGA
DISEO DE CIRCUITOS LOGICOS
Pablo Alejandro Merino

Pablo Alejandro Merino

Diseo de Circuitos Lgicos

71021985-D

Contenido
1 Objetivo del proyecto ................................................................................................................. 1 2 Diseo de la prctica .................................................................................................................. 2 2.1 Ficheros de cdigo VHL ....................................................................................................... 2 2.1.1 Contador VHL ............................................................................................................... 2 2.1.2 Comparador VHL .......................................................................................................... 5 2.1.3 Generador de la frecuencia de pxel ............................................................................ 8 2.1.4 Gencolor ....................................................................................................................... 9 2.1.5 Generador de colores ................................................................................................. 11 2.2 Diseo del circuito ............................................................................................................. 13

1 Objetivo del proyecto


En esta prctica se realizara el diseo de un proyecto el que se conectara un dispositivo FPGA a un monitor VGA, y mediante una serie de contadores sncronos generaremos las seales necesarias para controlar nuestro monitor en modo 60Hz. Utilizaremos para ello nuestro dispositivo FPGA para poder darle funcionalidad a nuestra practica asignndole los diferentes componentes de este dispositivo. Para ello crearemos una serie de ficheros de cdigo vhl y diagramas de bloque para poder implementar el funcionamiento de esta prctica. Los ficheros que necesitaremos contendrn: Contador con reset sncrono y seal de habilitacin. Comparador sncrono. Generador de la frecuencia de pxel. Dividir la frecuencia de reloj por dos para obtener una seal de 25MHz. Generador de color, este bloque asegura que el can slo est activo el tiempo en que est apuntando a la pantalla. Generador de colores que genera los colores (R, G y B) deseados en funcin de las coordenadas de pantalla.

Pablo Alejandro Merino

Diseo de Circuitos Lgicos

71021985-D

Despus se conectaran todos estos dispersivos en un bloque para poder lograr los objetivos marcados en la prctica. Estos se conectan tal y como muestra la imagen.

2 Diseo de la prctica
2.1 Ficheros de cdigo VHL
Se realizaran una serie de ficheros vhd que contendrn el cdigo VHL que definir los diferentes dispositivos necesarios para la realizacin del proyecto, estos ficheros son contador.vhd, comparadorh.vhd, comparadorv.vhd, divujo.vhd, gen_color.vhd, y frec_pixel.vhd.

2.1.1 Contador VHL

Tenemos un archivo llamado contador.vhd, en este archivo tenemos el cdigo VHL que nos programara el contador que necesitamos para el desarrollo de nuestra prctica. Este contador se encargara de ir movindonos por la posiciones de la lnea en la que estamos movindonos, tanto para la lnea horizontal como para la lnea vertical, por ello necesitaremos dos dispositivos contadores en nuestro programa. Los diferentes apartados de este archivo son:

Pablo Alejandro Merino

Diseo de Circuitos Lgicos

71021985-D

Declaracin de libreras, en este apartado se introducen las variables que sern necesarias para el programa.

Declaracin de la entidad con las diferentes variables necesarias para la implementacin del programa, y la arquitectura donde incluiremos el proceso que har funcionar al contador. Las variables de la entidad sern: clk: Reloj. reset: Reset asncrono activo a nivel alto. enable: Seal de habilitacin activa a nivel alto. Si enable=1 el contador avanzar uno en la cuenta en el flanco positivo de reloj. resets: Reset sncrono activo a nivel alto. Si resets=1 el contador pasar a cero en el siguiente flanco positivo de reloj. Q: Salida de Nbit igual a la valor de la cuenta. En esta variable es en la que se guardara la cuenta que estamos realizando.

Pablo Alejandro Merino

Diseo de Circuitos Lgicos

71021985-D

Proceso que har funcionar el programa contador, este proceso depender de las variables, clk, reset, enable, resets. Dentro del proceso tenemos una estructura if, donde tendremos un reset, este reste podemos activarlo nosotros cuando lo deseemos y resetear la cuenta, dentro de este if tenemos otra estructura if, en ella tenemos otro reset llamado resets, si ese reset es activado por ejemplo cuando llegamos al final de la lnea, el programa resetea el contador, si no con cada pulso del reloj aumenta el contador para ir moviendos por la lnea. Para realizar la cuenta es decir la variable que tenemos de contador tendremos una variable llamada COUNT, de tipo lgico, est variable es un vector de Nbit, (10), que ser donde se realiza el aumento y despus se guarda en nuestra variable de salida Q. Despus de comprobar que cdigo funciona correctamente crearemos en smbolo de este archivo para utilizarlo en nuestra prctica.

Utilizaremos dos de estos smbolos para nuestro proyecto, uno para la lnea horizonal y otro para la vertical.

Pablo Alejandro Merino 2.1.2 Comparador VHL

Diseo de Circuitos Lgicos

71021985-D

Tenemos una serie de ficheros llamados, comparadorh.vhd y comparadorv.vhd, en estos archivos se incluir el cdigo necesario para hacer funcionar los comparadores que se encargaran de comprobar si se ha alcanzado los finales de la lnea horizontal y vertical, controla el sincronismo verticales y horizontales, controla si ha llegado al final de la pantalla, es decir el can esta fuera de la pantalla. Utilizaremos el fichero comparadorh.vhd para la lnea horizontal y comparadorh.vhd para la lnea vertical. Por tanto en este programa se implementa la funcin que cuando se ha alcanzado el final de la lnea en la que estamos actualmente resetea el contador para pasar a la siguiente lnea y empezar en ella otra vez desde el principio de la lnea. Como ambos ficheros son iguales, simplemente cambia los valores de las variables generic y para utilizar uno para la lnea horizontal y otro para la vertical, solo explicaremos el funcionamiento de un fichero (comparadorh.vhd). Los diferentes apartados de este archivo son:

Declaracin de libreras, en este apartado se introducen las variables que sern necesarias para el programa.

Pablo Alejandro Merino

Diseo de Circuitos Lgicos

71021985-D

En esta parte del programa vemos la entidad declarada en este cdigo con las variables necesarias, y la arquitectura que incluiremos el proceso que controlara la funcionalidad de nuestro programa. Estas variables son: clk: Reloj. reset: Reset asncrono activo a nivel alto. data: Dato de entrada de Nbit. Sera la salida del contador. End_Of_Screen: controla si llegamos al final de la pantalla. Start_Of_Pulse: variable para controlar los sincronismos verticales y horizontales. End_Of_Pulse: variable para controlar los sincronismos verticales y horizontales. End_Of_Line: controla si llegamos al final de la linea.

Pablo Alejandro Merino

Diseo de Circuitos Lgicos

71021985-D

Este es el proceso que contrala el funcionamiento de este programa se trata de una estructura if que controlan la salida del programa mediante las variables O1, O2, Y O3. O1=controla si ha llegado al final de la pantalla, es decir el can esta fuera de la pantalla. O2=controla el sincronismo verticales y horizontales y controla que el movimiento del can sea correcto. O3=controla los reset de los contadores (y el entable del contador vertical).

Este proceso depende de las variables clk, reset y data. Este if controla cuando se produzca un pulso de reloj: O1=1 si data>End_Of_Screen. O1=0 en caso contrario. O2=0 si Start_Of_Pulse<data<End_Of_Pulse. O2=1 en caso contrario. O3=1 si data=End_Of_Line. O3=0 en caso contrario.

Si se ha activado el reset se resetean las variables O1, O2, O3. A continuacin se mediante la utilizacin de if se controla si llega al final de la linea, al final de la pantalla y se controlan los sincronismos verticales y horizontales. Una vez tenemos creados los archivos creamos los smbolos de ambos para incluirlos en nuestro proyecto. Comparador Horizontal:

Pablo Alejandro Merino Comparador vertical:

Diseo de Circuitos Lgicos

71021985-D

2.1.3 Generador de la frecuencia de pxel

Se implantar en el archivo frec_pixel.vhd este cdigo es generador de la frecuencia de pxel. Dividir la frecuencia de reloj por dos para obtener una seal de 25MHz. Los diferentes apartados de este archivo son:

Declaracin de libreras, en este apartado se introducen las variables que sern necesarias para el programa.

Despus se declara la entidad de este cdigo donde se incluyen las variables necesarias para el funcionamiento. Seguidamente declaramos la arquitectura de nuestro programa. Las variables son: clk: Reloj de entrada.

Pablo Alejandro Merino

Diseo de Circuitos Lgicos

71021985-D

Reset: Reset asncrono activo a nivel alto. Clk_pixel: Seal generada de 25MHz.

A continuacin dentro de la arquitectura incluiremos el proceso de este programa que depender de las variables clk y reset. Este proceso tiene un if que controla si el reset est activado, si es as resetea la salida. Si el reset no est activado y hemos recibido un pulso de reloj se niega la entrada para dividir la salida y dividir la frecuencia del reloj por dos para obtener una seal de 25MHz. Despus de comprobar que el cdigo funciona correctamente creamos el smbolo de este archivo para incluirlo en nuestro circuito.

2.1.4 Gencolor

Seguidamente se diseara el fichero gen_volor.vhl este bloque asegura que el can slo est activo el tiempo en que est apuntando a la pantalla. El resto del tiempo, que denominamos en el apartado anterior el color presentando debe ser negro (R=0, G=0 y B=0). Es decir, el can debe estar apagado el tiempo de retorno. Es decir es un bloque combinacional que asegura que el can de electrones est apagado cuando apunta fuera de la pantalla o est volviendo al comienzo de otra lnea. Los diferentes apartados de este archivo son:

Pablo Alejandro Merino

Diseo de Circuitos Lgicos

71021985-D

Declaracin de libreras, en este apartado se introducen las variables que sern necesarias para el programa.

Declaramos la entidad con las variables necesarias para el funcionamiento del programa y seguidamente la arquitectura de este. Las variables son: Blank_h: Indicador de que est fuera de pantalla del comparador horizontal, nos lo indica el comparador horizontal con la variable O1. Blank_v: Indicador de que est fuera de pantalla del comparador vertical nos lo indica el comparador vertical con la variable O1. R_in, G_in,B_in: Entradas de color procedentes del bloque dibuja que nos indicara. que pintamos en la VGA, nos las pasa el dispositivo dibujo que ms tarde explicaremos. R, G, B: Salidas de color del controlador VGA, que nos dibujaran la imagen.

10

Pablo Alejandro Merino

Diseo de Circuitos Lgicos

71021985-D

A continuacin declaramos el proceso de este cdigo, dependera de las variables Blank_H, Blank_V, R_in, G_in, B_in, este proceso comprobara el valor de las variables Blank_H, Blank_V, si alguna de ellas ha sido activada quiere decir que estamos fuera de la pantalla es decir el color representado debe de ser negro, en ese caso igualara las variables, R_in, G_in, B_in a cero para poner la salida a la VGA a cero. Cuando ya est el cdigo preparado se ejecuta y se crea el smbolo para unirlo a nuestro circuito.

2.1.5 Generador de colores

Se creara en el archivo dibujo.vhd este con el cdigo encargado degenera los colores (R, G y B) deseados en funcin de las coordenadas de pantalla. Dependiendo cmo se disee este bloque se representar una imagen diferente en pantalla. Generar, a partir de las coordenadas de pantalla (eje_x y eje_y), las salidas de color necesarias (R, G y B) para producir una imagen. Generar las salidas R, Gy B que mandara a gen_color para dibujar la imagen. Los diferentes apartados de este archivo son:

11

Pablo Alejandro Merino

Diseo de Circuitos Lgicos

71021985-D

Declaracin de libreras, en este apartado se introducen las variables que sern necesarias para el programa.

Declaramos la entidad con las variables necesarias para el funcionamiento del programa y seguidamente la arquitectura de este. Las variables sern: eje_x: Coordenada horizontal del pxel. Slo estarn dentro de la pantalla los pxeles con coordenadas comprendidas entre 0 y 639. eje_y: Coordenada vertical del pxel. Slo estarn dentro de la pantalla los pxeles con coordenadas comprendidas entre 0 y 479. R: Salida de color rojo para el pxel. G: Salida de color verde para el pxel. B: Salida de color azul para el pxel.

Tiene como entradas en eje_x y en eje_y las salidas del contador que son las coordenadas por donde vamos movindonos.

12

Pablo Alejandro Merino

Diseo de Circuitos Lgicos

71021985-D

Despus dentro del proceso que depender de las variables eje_x y eje_y se realiza el cdigo que da funcionalidad a este fichero, para ello se inicializaran las variables G , B y R a 1. Y despus mediante una estructura if las cambiamos para que cambie el color en caso de que este en la zona indicada. Para poder dibujar la imagen deseada. Cuando el programa est terminado creamos el smbolo para aadirlo al circuito.

2.2 Diseo del circuito


En este punto explicamos la conexin de las distintas partes del proyecto para crear el circuito que ejecutara el programa, esto se har uniendo los diferentes smbolos de los archivos anteriormente explicado, en un fichero de diagrama de bloques. Esta conexin se realiza en el fichero vga.bdf. As se diseara el circuito, al que posteriormente le asignaremos las entradas y salidas de nuestra FPGA para poder ver los resultados de nuestro proyecto. De esta forma introducimos unas entradas para poder manejar nuestro circuito:

Estas entradas nos permitirn cambiar los valores del reloj y del reset de nuestro circuito que irn unidas a las entradas de reloj (clk) y reset de los diferentes smbolos de nuestro circuito.

13

Pablo Alejandro Merino

Diseo de Circuitos Lgicos

71021985-D

En esta imagen ya podemos ver todos los smbolos conectados en el diagrama, con las entradas y salidas asignadas a los interruptores y salidas de vga de nuestra FPGA, listo para ejecutarse gravarse en nuestra FPGA y utilizarse.

14

You might also like