Índice:

Programa de pintura VGA: 5 etapas
Programa de pintura VGA: 5 etapas

Vídeo: Programa de pintura VGA: 5 etapas

Vídeo: Programa de pintura VGA: 5 etapas
Vídeo: Por andar de chistosito 😮‍💨 2024, Julho
Anonim
Programa de Pintura VGA
Programa de Pintura VGA

Projeto por: Adam Klein, Ian Strachan, Brandon Slater

O projeto que pretendíamos concluir era armazenar, analisar e exibir informações de um mouse USB na forma de um programa de pintura. A ideia por trás do projeto é ser capaz de conectar o mouse e cabos VGA na placa Basys em suas portas embutidas, e ter o mouse exibido como um quadrado de pintura móvel no monitor, mudando cores diferentes quando os cliques esquerdo e direito são usado. Em essência, estaríamos criando um driver para usar o mouse com a placa basys e tendo o monitor como nossa verificação de funcionalidade. O que acabou acontecendo mesmo foi a criação de um programa de desenho com o basys board como sistema de entrada e um sistema semi-funcional de captura de dados para o mouse.

Neste instrutível, dividiremos as etapas da entrada do mouse à saída vga.

Etapa 1: Motivação e problema

Motivação e problema
Motivação e problema

Motivação:

A principal motivação de nosso projeto foi criar um driver de mouse para a placa Basys3 que os futuros alunos do CPE 133 possam usar em seus projetos finais no futuro. No entanto, levamos essa ideia um passo adiante, criando um programa de pintura, que os futuros alunos também poderiam desenvolver.

Problema:

O problema que descobrimos foi que não há um módulo de mouse claro pronto para baixar e usar para a placa Basys3. Para resolver esse problema, tentamos criar um nós mesmos. Ao fazer isso, estávamos nos esforçando para criar um módulo de mouse que permitiria aos futuros alunos implementar mais facilmente a entrada do mouse em seus projetos.

Etapa 2: Obtendo as informações de bits brutos do USB Basys

Obtendo as informações de bits brutos do USB Basys
Obtendo as informações de bits brutos do USB Basys
  • Muito do que fizemos para o mouse neste projeto veio da documentação do Basys3. A partir do pequeno guia sobre a porta USB Basys naquele pdf, descobrimos que a placa Basys tem um relógio embutido para ler bits na velocidade certa de dispositivos USB.
  • Essencialmente, o mouse envia bits para o usb começando em um estado inativo, lê 32 bits que representam o status do mouse, posição xey posição e, finalmente, termina com outro bit inativo. Para fazer isso, o componente de entrada do mouse usa um registrador de deslocamento e um contador de 32 bits onde o registrador de deslocamento é usado para armazenar 32 bits de dados de entrada do mouse e o contador de 32 bits é usado para contar o número de bits sendo armazenados permitindo o estado registrar para redefinir e armazenar o próximo conjunto de 32 bits de entrada.
  • O código para o registrador de deslocamento, contador de 32 bits e leitor de dados estão disponíveis para download abaixo, bem como o arquivo de restrições adaptado para o uso da porta USB como entrada

Etapa 3: análise das informações USB

Analisando as Informações Usb
Analisando as Informações Usb
Analisando as Informações Usb
Analisando as Informações Usb
  • Depois de criar a entrada do mouse para o componente usb, a próxima etapa foi criar os bits usb para o componente de informação vetorial que tornaria os dados recebidos pelo mouse legíveis para o vga.
  • Este componente usa uma máquina de estado que recebe o conjunto de bits emitidos pela entrada do mouse no usb e se move através dos estados com base na entrada de novos bits que alteram o status e a posição do mouse.
  • O diagrama de blocos para as duas primeiras etapas do projeto é mostrado aqui, e os dois arquivos vhdl são para testar a implementação do mouse usando os LEDs basys (um teste que infelizmente nunca foi aprovado) e para transmitir o fluxo de bits do USB para os vetores de velocidade e posição que o VGA pode usar.
  • A imagem ao lado do diagrama de blocos acima é um pequeno instantâneo (o Instructables não nos permite exibir a imagem completa) das informações de bits que encontramos na documentação do basys para concluir esta etapa.

Etapa 4: Exibir a imagem pintada em VGA e editar o que está sendo desenhado

Exibindo a imagem pintada em VGA e editando o que está sendo desenhado
Exibindo a imagem pintada em VGA e editando o que está sendo desenhado
Exibindo a imagem pintada em VGA e editando o que está sendo desenhado
Exibindo a imagem pintada em VGA e editando o que está sendo desenhado
Exibindo a imagem pintada em VGA e editando o que está sendo desenhado
Exibindo a imagem pintada em VGA e editando o que está sendo desenhado
  • O cabo VGA tem 14 bits de saída, 4 bits para cada uma das três cores e um bit para sincronização horizontal e sincronização vertical.
  • OtherVGA é o módulo VGA fornecido e funciona da seguinte forma:

    • O monitor é dividido em blocos de 40x30 de 16x16 pixels para uma tela de resolução de 640x480, conforme mostrado na imagem acima. O módulo seleciona um endereço de bloco para representar um dos 1200 blocos no monitor. O endereço do bloco é selecionado através da seguinte equação: endereço = 40y + x
    • A cor é representada por um sinal de 12 bits que se correlaciona com um valor RRRRGGGGBBBB que colore o bloco selecionado.
  • Nosso código de controle, VGAtest e VGAtestconst, funciona da seguinte maneira:

    • Primeiro, ele define o bloco selecionado no centro do monitor.
    • A cor do bloco é determinada por 12 interruptores na placa, configurando o valor RRRRGGGGBBBB.
    • Os quatro botões direcionais na placa mudam o endereço selecionado. Por exemplo, pressionar o botão direito adicionará 1 ao endereço, selecionando o bloco à direita do bloco anterior. Pressionar o botão para baixo adicionará 40 ao endereço, selecionando o bloco abaixo do bloco anterior.
    • O botão central é usado para definir todos os valores de cor para 0 quando pressionado. Isso deve se comportar como um botão de apagar fácil de usar, para que o usuário não precise virar todas as chaves para 0 para apagar.
  • A última imagem é o diagrama de blocos do controlador. É bastante amplo, pois inclui componentes do módulo e pode não ser exibido por completo.

Etapa 5: Aproveite a sua criação

Ligado aqui está um lapso de tempo rápido da diversão que você pode ter com o projeto final, mesmo apenas usando os interruptores e botões na placa basys como entrada.

Obrigado por ler!

Recomendado: