Controlador VGA - Parte 1

VGA controlador VGA caracteres ASCII com controlador VGA
Este post faz parte da série Controlador VGA. Leia também os outros posts da série:

Olá, caro leitor! Neste artigo será apresentada uma visão geral sobre um padrão de vídeo bem conhecido, o VGA! Este artigo servirá de base para demonstrar como um controlador VGA bem simples pode ser construído utilizando poucos recursos. Vamos lá!

 

 

Video Graphics Array

 

Com certeza você, leitor, já se deparou em algum momento com o termo VGA. A sigla VGA vem de Video Graphics Array, um padrão de disposição gráfica para vídeo que utiliza sinais analógicos para gerar as cores.

 

Esse padrão foi criado pela IBM em 1987 e possibilita que imagens sejam geradas com resolução de 640x480 pixels ou 320x240 pixels. No VGA são utilizados 6 bits para representar cada componente RGB, logo a paleta de cores possui 262.144 cores (2^6 * 2^6 * 2^6). Conforme a resolução utilizada apenas uma pequena quantidade de cores da paleta pode ser selecionada, neste caso, na primeira resolução o sistema trabalha com 16 cores, já na segunda com até 256 cores.

 

Paleta VGA de 256 cores
Figura 1 - Paleta de 256 cores

  

Logo após o lançamento do padrão algumas variações surgiram com objetivo de aumentar a resolução do vídeo e o número de cores. Entre esses padrões destacam-se o Super VGA (SVGA) com resolução de 800x600 pixels e o eXtended Graphics Array (XGA) com resolução de 1024x768 pixels. Embora vários padrões tenham sido lançados, o nome que ficou mesmo foi VGA! Para outros padrões consulte o material indicado no fim do artigo.

 

 

Especificações

 

No padrão VGA são utilizados 5 sinais de controle. Esses sinais estão presentes na maioria dos sistemas na porta VGA, isto é, no conector VGA.

 

Conector VGA
Figura 2 - Conector VGA

 

Esse modelo de conector foi definido no padrão VGA e adotado também nas extensões desse padrão, ficando conhecido simplesmente como conector VGA independentemente do padrão adotado.

 

Pinagem do conector VGA
Figura 3 - Pinagem do conector VGA

 

Dos pinos mostrados na Figura 3 somente cinco são utilizados no controle de vídeo. São os pinos: 1, 2, 3, 13 e 14. Os pinos 1, 2 e 3 são utilizados para determinar a cor (RGB) de um determinado pixel, já os pinos 13 e 14 são utilizados na sincronização do vídeo.

 

Cabe frisar que R, G e B são sinais analógicos, isto é, a cor varia conforme a intensidade do sinal. Por padrão os pinos 1, 2 e 3 tem uma resistência de 75Ω conectados ao terra.

 

VGA DAC
Figura 4 - VGA DAC com 2 bits

 

Assim o número de bits em cada componente implica na geração de sinais com intensidades diferentes. A Figura 4 mostra o acionamento das componentes utilizando 2 bits. O divisor resistivo é responsável por manter a tensão do sinal numa faixa de 0V a 0,7V, sendo 0V a menor intensidade e 0,7V a intensidade máxima.

 

 

Pixels

 

Antes de analisar como os sinais de controle são utilizados é necessário ter conhecimento sobre como os pixels são dispostos na tela, especificamente como eles são representados em um frame. Se considerarmos uma tela (monitor) como uma matriz, podemos dividi-la em um conjunto de linhas (N) e colunas (M). Para cada unidade linha-coluna temos um pixel com suas componentes RGB.

 

controlador vga: varredura do quadro vga
Figura 5 - Varredura do quadro VGA

  

Na Figura 5 temos o modelo de uma tela, sendo o primeiro pixel alocado no canto superior esquerdo. Para construir uma tela é necessário seguir o processo de varredura de pixels do monitor. A varredura da tela é iniciada da esquerda para a direita e de cima para baixo, sendo os pixels determinados de forma sincronizada. Ao chegar no final de uma linha o processo é iniciado novamente da esquerda para direita. O tempo necessário para estabelecer os pixels de um frame VGA é determinado conforme a resolução da tela. Esses parâmetros são discutidos a seguir.

 

 

Frame VGA

 

Um frame VGA define um conjunto de parâmetros que devem ser seguidos para sincronizar o vídeo com o mecanismo de varredura da tela. A Figura 6 exibe a região ativa de vídeo que corresponde à tela exibida (vide Figura 5).

 

frame vga
Figura 6 - Frame VGA

 

Convém observar que além da região ativa de vídeo outros parâmetros de tempo devem ser respeitados. Tanto na varredura horizontal quanto na vertical são estabelecidos alguns parâmetros como: Back Porch e Front Porch. Esses parâmetros estão relacionados com os sinais Horizontal Sync (H_SYNC) e Vertical Sync (V_SYNC) que são utilizados para sincronizar a varredura da tela.

 

 

Frame VGA: Sincronização Horizontal

 

O sincronismo de varredura horizontal é determinado pelo sinal H_SYNC. O sinal H_SYNC é ativado em nível lógico 0 e indica que uma linha foi finalizada e que próxima linha será iniciada.

 

sincronização horizontal do frame VGA
Figura 7 - Sincronização horizontal do frame VGA

 

Conforme a Figura 7, o sinal H_SYNC deve permanecer em 0 por um período B. Após o período B um tempo C, chamado de Back Porch, deve ser aguardado antes de iniciar a região ativa da linha (pixels correspondentes à linha). Ao transmitir todos os pixels da linha um tempo E, chamado de Front Porch, deve ser aguardado até que o sinal H_SYNC seja colocado em 0 novamente. Veremos adiante que os parâmetros B, C, D e E dependem da resolução e frequência de atualização da tela.

 

 

Frame VGA: Sincronização Vertical

 

O sincronismo de varredura vertical é determinado pelo sinal V_SYNC. O sinal V_SYNC é ativado em nível lógico 0 e indica que um quadro foi finalizado e que o próximo será iniciado. Um quadro é um conjunto N de linhas, sendo que cada linha possui M colunas.

 

Sincronização vertical do frame VGA
Figura 8 - Sincronização vertical do frame VGA

 

Note que na Figura 8 o mesmo mecanismo de sincronização horizontal é utilizado. A diferença está na região ativa que representa todas as linhas do frame. Na figura abaixo é mostrada a relação do sinal V_SYNC com a atualização das linhas (vide Figura 7) do quadro.

 

Sincronização do frame VGA
Figura 9 - Sincronização do frame VGA

 

Convém observar que os parâmetros P, Q, R e S também dependem da resolução e frequência de atualização da tela.

 

 

Temporização

 

Considerando que um sistema para controlar um dispositivo VGA tenha uma base de tempo precisa, pode-se utilizar a tabela abaixo para determinar o período dos parâmetros de controle. A Tabela 1 exibe a relação de pulsos de clock necessários para cada parâmetro (B, C, D, E, P, Q, R e S) conforme a resolução da tela e a taxa de atualização.

 

Tabela 1 - Temporização VGA.

timing VGA

 

 

Conclusão

 

Neste artigo foi apresentada uma breve descrição sobre o padrão VGA. Como foi visto, o padrão especifica uma série de parâmetros que devem ser respeitados para que um quadro seja exibido corretamente.

 

No próximo artigo será discutido e demonstrado como um controlador VGA bem simples pode ser construído utilizando poucos recursos.

 

 

Para saber mais

 

Para conhecer outros padrões VGA consulte:

 

 

Referências

 

http://www.pcmag.com/encyclopedia/term/53801/vga

http://www.infocellar.com/hardware/ga.htm

Figura 1: https://en.wikipedia.org/wiki/VGA_connector#/media/File:Male_VGA_connector.jpg

Figura 2: http://www.theavguide.co.uk/view_page.php?page=18

Tabela 1: http://martin.hinner.info/vga/timing.html

Imagem destacada: https://en.wikipedia.org/wiki/Mode_13h#/media/File:VGA_palette_with_black_borders.svg

Outros artigos da série

Controlador VGA - Parte 2 >>
Este post faz da série Controlador VGA. Leia também os outros posts da série:

NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons
Controlador VGA - Parte 1 por Fernando Deluno Garcia. Esta obra está licenciado com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Fernando Deluno Garcia
Fascinado por computação, especialmente na interface entre hardware e software, me engajei na área de sistemas embarcados. Atuo com desenvolvimento de sistemas embarcados e sou docente da Faculdade de Engenharia de Sorocaba.Para mais informações: https://about.me/fdelunogarcia

6
Deixe um comentário

avatar
 
3 Comment threads
3 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
4 Comment authors
Wendell SilvaHaroldo AmaralFernando Deluno GarciaSérgio Kubrusly Aranha Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Sérgio Kubrusly Aranha
Visitante
Sérgio Kubrusly Aranha

Muito bom. Texto bem objetivo e bem pontuado. Valeu

Wendell Silva
Membro
Wendell Silva

Show de bola essa artigo...
Parabéns!

Haroldo Amaral
Membro
Haroldo Amaral

Excelente artigo, aguardando a continuação!