VGAPS2

by

= Descripción =

En este proyecto se utiliza una descripción VHDL para un sistema que visualiza en un monitor con interfaz VGA dos franjas verticales de distinto color. El sistema también permite visualizar un cursor según el movimiento de un mouse con interfaz PS/2. El color de cada franja puede ser cambiado por medio del clic derecho accionado sobre la franja a la que se quiere realizar el cambio de color. Así mismo al realizar la acción de clic izquierdo sobre una de las dos franjas, esta se torna de color blanco reflejando la acción, la franja retorna a su color original una vez no exista acción de clic.

El proyecto fue implementado en la Tarjetas de desarrollo FGPA Spartan3 en el Laboratorio del Departamento de Ingeniería Eléctrica y Electrónica (DIEE).

Diagrama de caja negra
El sistema cuenta con 9 salidas, dos de ellas corresponden a entradas del sistemas, cinco para la interfaz al monitor VGA y dos para la interfaz del mouse PS/2.




 * Señales de entrada del sistema (INPUT)
 * Clk_50: Señal de reloj del sistema a 50 MHz.
 * RST: Señal de reset del sistema en activo alto.


 * Señales de Salida (OUTPUT)
 * Blue: Salida al canal Azul de la interfaz VGA del monitor
 * Grn: Salida al canal Verde de la interfaz VGA del monitor
 * Red: Salida al canal Rojo de la interfaz VGA del monitor
 * Hs: Señal de sincronización Horizontal con la interfaz VGA del monitor
 * Hs: Señal de sincronización Vertical con la interfaz VGA del monitor
 * PS_c: Señal de reloj  a la interfaz PS/2 del mouse (INOUT)
 * PS_d: Señal de datos  a la interfaz PS/2 del mouse (INOUT)

Diagrama de Bloques
El sistema consta de 5 bloques tres de los cuales se encuentran disponibles en el sitio web del fabricante de las tarjeta de desarrollo, un módulo generado por el "asistente de generación de arquitecturas de Xilinx (Xilinx Architecture Wizard)" y un módulo de control de diseño propio.



MouseRefComp
Este bloque se encarga de comunicarse con el mouse via interfaz PS/2 decodificando la la posición (X,Y), el estado de los botones y la rotación de rueda. La descripción completa del funcionamiento de este bloque se  encentra en el sitio web del fabricante de la  Tarjetas de desarrollo FGPA Spartan3 Digilent


 * Código fuente -- Download

VgaRefComp
Este bloque se encarga de generar las señales de visualización para el monitor con interfaz VGA. La descripción completa del funcionamiento de este bloque se  encentran en el sitio web del fabricante de  la  Tarjetas de desarrollo FGPA Spartan3 Digilent


 * Código fuente -- Download

Mouse_displayer
Este bloque se encarga de implementar el cursor de un mouse para ser visualizado en un monitor con interfaz VGA. Este módulo recibe la posición actual del mouse (MouseRefComp) y la posición del pixel que se esta vizualizando en el instante (VgaRefComp). La descripción completa del funcionamiento de este bloque se  encuentran en el sitio web del fabricante de  la  Tarjetas de desarrollo FGPA Spartan3 Digilent. Este módulo fue modificado para efectos de cumplir con las especificaciones del diseño, i.e. eliminar los efectos de capas (effects_layer), con lo cual  se facilita el diseño del módulo de control.


 * Código fuente -- Download

CLK_40
Este módulo es un controlador digital de reloj (Digital Clock Manager, DCM) que fue generado por medio del (Xilinx Architecture Wizard). Este bloque permite generar a partir de la señal de reloj del sistema (CLK_IN) señales de 100 MHz (CLK2X_OUT), 50 MHZ (CLK0_OUT') y 40 MHZ (CLKFX_OUT''), las cuales son requeridas por lo demás módulos del sistema.



display_Crtl
Este módulo genera de dos franjas de color verticales, controladas por los botones de un mouse ps2. La acción de clic izquierdo sobre una de las dos franjas hace que esta zona se muestre blanca. La acción de clic derecho sobre una de las dos franjas genera un cambio de color de la misma.


 * Entradas
 * H_count(10:0):  Número de píxel seleccionado en el eje horizontal, señal generada por el módulo VgaRefComp
 * Mouse_ps(2:0): " Señal que reúne tres de las señales generadas por el módulo MouseRefComp: Left (1) y Right (2) que corresponden al estado de los botones del mouse, y New_event (0)''  que informa cuando  se ha generado un nuevo evento en alguno de los botones del mouse.
 * ''x_pos(9:0): " Posición en x del mouse, señal generada por el módulo MouseRefComp


 * Salidas
 * ''RGB(2:0): " Señal de los canales de color de la interfaz VGA. (2)-Red (1)-Green (0)-Blue



Este bloque esta compuesto por cinco módulos:


 * Cont_L:  Contador de tres bits que controla el color de la franja izquierda, al presentarse una flanco de subida en la señal New_event, el contador aumente su cuenta en uno si la señal x_pos es menor a 410 y la señal Right  se encuentra en uno. (Con lo cual se consigue cambiar el color de la franja izquierda)
 * Mux_L:  Multiplexor que entrega al multiplexor Mux_H "111" si la señal x_pos es menor a 410 y la señal  Left  se encuentra en uno, de lo contrario entrega la señal de salida del contador Cont_L. (Con lo cual se consigue que la franja vuela a blanco al hacer clic sobre ella)
 * Cont_R:  Contador de tres bits que controla el color de la franja derecha, al presentarse una flanco de subida en la señal New_event, el contador disminuye su cuenta en uno si la señal x_pos es mayor a 410 y la señal  Right  se encuentra en uno.  (Con lo cual se consigue cambiar el color de la franja derecha)
 * Mux_R:  Multiplexor que entrega al multiplexor Mux_H "111" si la señal x_pos es mayor a 410 y la señal  Left  se encuentra en uno, de lo contrario entrega la señal de salida del contador Cont_R. (Con lo cual se consigue que la franja vuela a blanco al hacer clic sobre ella)
 * Mux_H:  Multiplexor que entrega de salida del Mux_L si la señal H_count es menor a 410 de lo contrario entrega la señal del multiplexor Mux_R. (Con lo cual se consigue generar las dos franjas)



= Materiales =

Dispositivos Hardware

 * Tarjetas de desarrollo FGPA Spartan3
 * Monitor LCD 4:3 con puerto VGA
 * Cable VGA
 * Mouse de puerto PS/2

Herramientas Software

 * Xilinx ISE 13.1
 * Xilinx iMPACT

= Código fuente =

Tarjeta de desarrollo Spartan-3 Starter Board

 * Archivos .VHD y .UCF Download
 * Proyecto en Xilinx ISE 13.1 [[Media:MOUSE_VGA-Spartan 3.zip|Download]]

Tarjeta de desarrollo Spartan 3E Starter Board

 * Archivos .VHD y .UCF Download
 * Proyecto en Xilinx ISE 13.1 [[Media:MOUSE_VGA-Spartan 3E.zip|Download]]