Sommario:

Programma di pittura VGA: 5 passaggi
Programma di pittura VGA: 5 passaggi

Video: Programma di pittura VGA: 5 passaggi

Video: Programma di pittura VGA: 5 passaggi
Video: Ingoiare il latte del trallalero fa bene? #shorts 2024, Dicembre
Anonim
Programma di pittura VGA
Programma di pittura VGA

Progetto di: Adam Klein, Ian Strachan, Brandon Slater

Il progetto che ci siamo proposti di completare era archiviare, analizzare e visualizzare le informazioni da un mouse USB sotto forma di un programma di pittura. L'idea alla base del progetto è quella di essere in grado di collegare il mouse e i cavi VGA alla scheda Basys nelle sue porte integrate e visualizzare il mouse come un quadrato di pittura mobile sul monitor, cambiando colori diversi quando si fa clic con il tasto sinistro e destro. Usato. In sostanza, creeremmo un driver per l'utilizzo del mouse con la scheda basys e il monitor come verifica della funzionalità. Quello che è successo davvero è stata la creazione di un programma di disegno con la basys board come sistema di input e un sistema di acquisizione dati semi-funzionale per il mouse.

In questo tutorial, analizzeremo i passaggi dall'input del mouse all'output vga.

Passaggio 1: motivazione e problema

Motivazione e problema
Motivazione e problema

Motivazione:

La motivazione principale per il nostro progetto era creare un driver per il mouse per la scheda Basys3 che i futuri studenti CPE 133 sarebbero stati in grado di utilizzare per i loro progetti finali in futuro. Tuttavia, abbiamo portato questa idea un ulteriore passo avanti creando un programma di pittura, uno su cui anche i futuri studenti potrebbero costruire.

Problema:

Il problema che abbiamo scoperto è che non c'è un modulo mouse chiaro pronto per il download e l'uso per la scheda Basys3. Per risolvere questo problema, abbiamo tentato di crearne uno noi stessi. In tal modo, ci siamo sforzati di creare un modulo mouse che consentisse ai futuri studenti di implementare più facilmente l'input del mouse nei loro progetti.

Passaggio 2: ottenere le informazioni sui bit grezzi da Basys USB

Ottenere le informazioni sui bit grezzi da Basys USB
Ottenere le informazioni sui bit grezzi da Basys USB
  • Gran parte di ciò che abbiamo fatto per il mouse in questo progetto è derivato dalla documentazione di Basys3. Dalla piccola guida sulla porta USB Basys in quel pdf, abbiamo scoperto che la scheda Basys ha un orologio integrato per leggere i bit alla giusta velocità dai dispositivi USB.
  • In sostanza, il mouse invia bit all'USB a partire da uno stato di inattività, legge 32 bit che rappresentano lo stato del mouse, la posizione x e la posizione y e infine termina con un altro bit di inattività. Per fare ciò, il componente di input del mouse utilizza un registro a scorrimento e un contatore a 32 bit in cui il registro a scorrimento viene utilizzato per memorizzare 32 bit di dati in ingresso dal mouse e il contatore a 32 bit viene utilizzato per contare il numero di bit memorizzati consentendo lo stato register per resettare e memorizzare il successivo set di 32 bit in ingresso.
  • Il codice per il registro a scorrimento, il contatore a 32 bit e il lettore di dati sono scaricabili di seguito, così come il file dei vincoli adattato al nostro utilizzo della porta USB come input

Passaggio 3: analisi delle informazioni USB

Analisi delle informazioni USB
Analisi delle informazioni USB
Analisi delle informazioni USB
Analisi delle informazioni USB
  • Dopo aver creato l'input del mouse per il componente USB, il passaggio successivo è stato quello di creare i bit USB per il componente di informazioni vettoriali che rendessero i dati ricevuti dal mouse leggibili per il vga.
  • Questo componente utilizza una macchina a stati che accetta l'insieme di bit emessi dall'input del mouse su USB e si sposta attraverso gli stati in base all'immissione di nuovi bit che modificano lo stato e la posizione del mouse.
  • Lo schema a blocchi per i primi due passaggi del progetto è mostrato qui, e i due file vhdl sono per testare l'implementazione del mouse usando i LED basys (test che purtroppo non è stato mai superato) e per trasmettere il flusso di bit dall'USB porta per velocizzare e posizionare i vettori che il VGA può utilizzare.
  • L'immagine accanto al diagramma a blocchi sopra è una piccola istantanea (Instructables non ci consente di visualizzare l'immagine a tutta larghezza) delle informazioni sui bit che abbiamo trovato nella documentazione di basys per il completamento di questo passaggio.

Passaggio 4: visualizzazione dell'immagine dipinta su VGA e modifica di ciò che viene disegnato

Visualizzazione dell'immagine dipinta su VGA e modifica di ciò che viene disegnato
Visualizzazione dell'immagine dipinta su VGA e modifica di ciò che viene disegnato
Visualizzazione dell'immagine dipinta su VGA e modifica di ciò che viene disegnato
Visualizzazione dell'immagine dipinta su VGA e modifica di ciò che viene disegnato
Visualizzazione dell'immagine dipinta su VGA e modifica di ciò che viene disegnato
Visualizzazione dell'immagine dipinta su VGA e modifica di ciò che viene disegnato
  • Il cavo VGA ha 14 bit di output, 4 bit per ciascuno dei tre colori e un bit per la sincronizzazione orizzontale e la sincronizzazione verticale.
  • OtherVGA è il modulo VGA fornito e funziona come segue:

    • Il monitor è suddiviso in blocchi 40x30 di 16x16 pixel per uno schermo con risoluzione 640x480 come mostrato nell'immagine sopra. Il modulo seleziona un indirizzo di blocco per rappresentare uno dei 1200 blocchi sul monitor. L'indirizzo del blocco viene selezionato tramite la seguente equazione: indirizzo = 40y + x
    • Il colore è rappresentato da un segnale a 12 bit che è correlato ad un valore RRRRGGGGBBBB che colora il blocco selezionato.
  • Il nostro codice di controllo, VGAtest e VGAtestconst, funziona come segue:

    • Per prima cosa imposta il blocco selezionato al centro del monitor.
    • Il colore del blocco è determinato da 12 interruttori sulla scheda, impostando il valore RRRRGGGGBBBB.
    • I quattro pulsanti direzionali sulla scheda cambiano l'indirizzo selezionato. Ad esempio, premendo il tasto destro si aggiungerà 1 all'indirizzo, selezionando il blocco uno a destra del blocco precedente. Premendo il pulsante giù si aggiungerà 40 all'indirizzo, selezionando il blocco uno sotto il blocco precedente.
    • Il pulsante centrale viene utilizzato per impostare tutti i valori di colore su 0 quando viene premuto. Questo è pensato per comportarsi come un pulsante di cancellazione facile da usare per l'utente, quindi l'utente non deve portare ogni interruttore su 0 per cancellare.
  • L'ultima immagine è lo schema a blocchi del controller. È abbastanza ampio poiché include componenti del modulo e potrebbe non essere visualizzato completamente.

Passaggio 5: goditi la tua creazione

Collegato qui c'è un rapido timelapse del divertimento che puoi avere con il progetto finale, anche solo usando gli interruttori e i pulsanti sulla scheda base come input.

Grazie per aver letto!

Consigliato: