Tabla de contenido:

Programa de pintura VGA: 5 pasos
Programa de pintura VGA: 5 pasos

Video: Programa de pintura VGA: 5 pasos

Video: Programa de pintura VGA: 5 pasos
Video: CUAL ES EL HOMBRE QUE INTRODUCE SU INSTRUMENTO? 🤨🤨 #staryuuki #staryuukiii 2024, Noviembre
Anonim
Programa de pintura VGA
Programa de pintura VGA

Proyecto de: Adam Klein, Ian Strachan, Brandon Slater

El proyecto que nos propusimos completar fue almacenar, analizar y mostrar información de un mouse USB en forma de programa de pintura. La idea detrás del proyecto es poder conectar el mouse y los cables VGA a la placa Basys en sus puertos integrados, y mostrar el mouse como un cuadro de pintura movible en el monitor, cambiando diferentes colores cuando se hacen clic con el botón izquierdo y derecho. usó. En esencia, estaríamos creando un controlador para usar el mouse con la placa base y tener el monitor como nuestra verificación de funcionalidad. Lo que terminó sucediendo realmente fue la creación de un programa de dibujo con el tablero basys como sistema de entrada y un sistema de captura de datos semifuncional para el mouse.

En este instructivo, desglosaremos los pasos desde la entrada del mouse hasta la salida de vga.

Paso 1: Motivación y problema

Motivación y problema
Motivación y problema

Motivación:

La principal motivación de nuestro proyecto fue crear un controlador de mouse para la placa Basys3 que los futuros estudiantes de CPE 133 podrían usar para sus proyectos finales en el futuro. Sin embargo, llevamos esta idea un paso más allá al crear un programa de pintura, uno en el que los futuros estudiantes también podrían desarrollar.

Problema:

El problema que descubrimos fue que no hay un módulo de mouse claro listo para descargar y usar para la placa Basys3. Para resolver este problema, intentamos crear uno nosotros mismos. Al hacerlo, nos esforzamos por crear un módulo de mouse que permitiría a los futuros estudiantes implementar más fácilmente la entrada del mouse en sus proyectos.

Paso 2: Obtener la información de bits sin procesar del USB de Basys

Obtención de la información de bits sin procesar del USB de Basys
Obtención de la información de bits sin procesar del USB de Basys
  • Gran parte de lo que hicimos con el mouse en este proyecto provino de la documentación de Basys3. De la pequeña guía sobre el puerto USB de Basys en ese pdf, encontramos que la placa Basys tiene un reloj incorporado para leer bits a la velocidad correcta desde dispositivos USB.
  • Esencialmente, el mouse envía bits a usb comenzando desde un estado inactivo, lee 32 bits que representan el estado del mouse, la posición xy la posición y, y finalmente termina con otro bit inactivo. Para hacer esto, el componente de entrada del mouse usa un registro de desplazamiento y un contador de 32 bits donde el registro de desplazamiento se usa para almacenar 32 bits de datos entrantes del mouse y el contador de 32 bits se usa para contar el número de bits que se almacenan permitiendo el estado register para restablecer y almacenar el siguiente conjunto de 32 bits entrantes.
  • El código para el registro de desplazamiento, el contador de 32 bits y el lector de datos se pueden descargar a continuación, así como el archivo de restricciones adaptado a nuestro uso del puerto USB como entrada.

Paso 3: analizar la información del USB

Analizar la información USB
Analizar la información USB
Analizar la información USB
Analizar la información USB
  • Después de crear la entrada del mouse al componente usb, el siguiente paso fue crear los bits usb al componente de información vectorial que haría que los datos recibidos por el mouse fueran legibles para el vga.
  • Este componente utiliza una máquina de estado que toma el conjunto de bits enviados por la entrada del mouse a usb y se mueve a través de los estados en función de si se ingresaron nuevos bits que cambian el estado y la posición del mouse.
  • El diagrama de bloques para los dos primeros pasos del proyecto se muestra aquí, y los dos archivos vhdl son para probar la implementación del mouse usando los LED de basys (una prueba que desafortunadamente nunca se aprobó) y para transmitir el flujo de bits desde el USB. puerto a los vectores de velocidad y posición que puede utilizar el VGA.
  • La imagen al lado del diagrama de bloques anterior es una pequeña instantánea (Instructables no nos permite mostrar la imagen de ancho completo) de la información de bits que encontramos en la documentación de basys para completar este paso.

Paso 4: Visualización de la imagen pintada en VGA y edición de lo que se está dibujando

Visualización de la imagen pintada en VGA y edición de lo que se dibuja
Visualización de la imagen pintada en VGA y edición de lo que se dibuja
Visualización de la imagen pintada en VGA y edición de lo que se dibuja
Visualización de la imagen pintada en VGA y edición de lo que se dibuja
Visualización de la imagen pintada en VGA y edición de lo que se dibuja
Visualización de la imagen pintada en VGA y edición de lo que se dibuja
  • El cable VGA tiene 14 bits de salida, 4 bits para cada uno de los tres colores y un bit para sincronización horizontal y sincronización vertical.
  • Otro VGA es el módulo VGA proporcionado y funciona de la siguiente manera:

    • El monitor está dividido en bloques de 40x30 de 16x16 píxeles para una pantalla de resolución de 640x480 como se ve en la imagen de arriba. El módulo selecciona una dirección de bloque para representar uno de los 1200 bloques en el monitor. La dirección del bloque se selecciona mediante la siguiente ecuación: dirección = 40y + x
    • El color está representado por una señal de 12 bits que se correlaciona con un valor RRRRGGGGBBBB que colorea el bloque seleccionado.
  • Nuestro código de control, VGAtest y VGAtestconst, funciona de la siguiente manera:

    • Primero establece el bloque seleccionado en el centro del monitor.
    • El color del bloque está determinado por 12 interruptores en la placa, estableciendo el valor RRRRGGGGBBBB.
    • Los cuatro botones de dirección del tablero cambian la dirección seleccionada. Por ejemplo, presionar el botón derecho agregará 1 a la dirección, seleccionando el bloque uno a la derecha del bloque anterior. Al presionar el botón hacia abajo se agregarán 40 a la dirección, seleccionando el bloque uno debajo del bloque anterior.
    • El botón central se usa para establecer todos los valores de color en 0 cuando se presiona. Esto está destinado a comportarse como un botón de borrado que es fácil de usar para el usuario, por lo que el usuario no tiene que cambiar todos los interruptores a 0 para borrar.
  • La última imagen es el diagrama de bloques del controlador. Es bastante amplio ya que incluye componentes del módulo y es posible que no se muestre por completo.

Paso 5: ¡Disfruta tu creación

Vinculado aquí hay un lapso de tiempo rápido de la diversión que puede tener con el proyecto final, incluso con solo usar los interruptores y botones en el tablero de la base como entrada.

¡Gracias por leer!

Recomendado: