VGA (Video Graphics Array) – Parte I

Hello my friends,

Neste tutorial será desenvolvido um projeto utilizando circuito VGA (Video Graphics Array) disponível na placa DE1 da Altera.

Primeiramente farei uma breve introdução sobre o padrão descrevendo suas características, funcionalidades e posteriormente para o desenvolvimento do código em VHDL.

INTRODUÇÃO

Desenvolvido pela empresa IBM em 1987 o padrão VGA contém informações sobre as imagens apresentadas nos monitores de computadores e televisores.

A primeira versão permitiu uma resolução de 640×480 pixels com 16 cores podendo serem visualizados em uma taxa de 60Hz  e utilizando um clock de 25MHz (T = 40ns), desde então surgiram muitas revisões, como exemplo o Super VGA (SVGA) com resoluções tais como 800×600 or 1024×768 pixels.

INTERFACE

A interface possuem dois tipos de sinais, dados e controle. Os sinais de dados são níveis de tensão no  RGB (Red Green Blue) para determinar a cor de cada pixel do monitor e os sinais de controle fornecem o sincronismo horizontal e vertical.

A exibição das imagens na tela do monitor é um processo de varredura das linhas (retraço horizontal) e colunas (retraço vertical), ou seja, da esquerda para direita e de cima para baixo onde serão acesos cada pixel de acordo com sua tonalidade de acordo com a figura a abaixo:

Figura 01
Figura 01: Varredura Horizontal e Vertical.

A duração total de um linha são 800 pulsos de clock (32μs) denominado Scanline Time (A), o sincronismo horizontal se dá pela transição de descida do pino HSYNC que indica que uma linha foi finalizada e que próxima linha será iniciada que deverá permanecer por um período B (tempo de sincronismo) de 96 pulsos de clock (3.84μs) de acordo com a Figura 02:

Após o período B possui um período chamado de Back Porch  (tempo de guarda inicial) com 48 pulsos de clock (1.92μs) antes de iniciar a região ativa da linha (área visível) com 640 pulsos de clock (25.6μs). Após serem transmitidos todos os pixels da linha haverá um tempo de guarda final denominada Front Porch com 16 pulsos de clock (0.64μs) deve ser aguardado até que o sinal HSYNC seja colocado em zero novamente.

Figura 02
Figura 02: Sincronismo Horizontal.
 O sinal de sincronismo vertical inicia-se com a transição de descida do pino VSYNC indicando que um quadro foi finalizado e que o próximo será iniciado com duração de 2 linhas (0.0064ms), em seguida terá o tempo de guarda inicial (Back Porch) de linhas (0.45ms), possuindo uma área visível de 480 linhas (15.25 ms) e antes de terminar o frame existe  0 tempo de guarda final (Front Porch) de 31 linhas (1.02ms) conforme apresentado na figura a seguir.
Figura 03
Figura 03: Sincronismo Vertical.
Temporização de outras resoluções

Para outras resoluções existem uma temporização diferente do que apresentado acima para 640×480. Abaixo podemos verificar os tempos de acordo com a resolução e a taxa de amostragem.

Tabela 01
Tabela 01: Temporizações para alguns formatos.

Neste link você encontrará outras resoluções com sua respectivas temporizações.

Esquema Elétrico DE1

O kit DE1 inclui um conector de 16 pinos para o padrão VGA. Os sinais de sincronização do VGA estão conectados diretamente no FPGA Cyclone II, um DAC com resolução de 4 bits usando uma rede de resistores para fornecer os sinais de dados analógicos. Abaixo pode ser visto o esquema elétrico do circuito da placa de desenvolvimento.

Figura 04
Figura 04: Circuito VGA.
Pinagem Cyclone II

A tabela são exibidos as conexões entre os pinos do FPGA ao circuito VGA do kit.

Tabela 02
Tabela 02: Conexões.

Na próxima Parte II iniciaremos um simples código em VHDL sendo capaz de apresentar uma imagem no monitor.

Até mais!

Anúncios

2 comentários sobre “VGA (Video Graphics Array) – Parte I

  1. leonardo

    Boa noite muito bom artigo, foi o único escrito de forma clara o suficiente para me fazer dar alguns passos, agradeço por disponibilizar esse material na internet, realmente me ajudou muito, apesar de tudo gostaria de lhe perguntar, me deparei com um problema que não estou conseguindo resolver, em meus teste o monitor tenta ligar apesar de não aparecer nenhuma cor na tela (a tela fica piscando), testei com o osciloscópio, e os tempos estão bons, por ex a frequência ficou 59,9hz, você se deparou com esse problema em alguma fase do seu projeto?
    agradeço desde já,
    Leonardo Silva Oliveira

    Curtir

    1. Alexandre Magalhães

      Olá Leonardo infelizmente Eu não pasei por esta situação. Mas se vc quiser me passa seu email que Eu encaminho meu Codigo fonte para que vc possa analisar e talvez resolver seu problema.

      Curtir

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s