Controlador VGA – Parte 1

Confira neste artigo uma breve introdução sobre VGA! Conheça as características deste padrão e conheça os parâmetros necessários para criar um controlador.
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 640×480 pixels ou 320×240 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 800×600 pixels e o eXtended Graphics Array (XGA) com resolução de 1024×768 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 >>
Notificações
Notificar
guest
6 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Wendell Silva
Wendell Silva
05/10/2015 17:55

Show de bola essa artigo…
Parabéns!

Fernando Deluno Garcia
Fernando Deluno Garcia
Reply to  Wendell Silva
06/10/2015 09:50

Olá, Wendell.

Obrigado pelo retorno!

Haroldo Amaral
Haroldo Amaral
03/10/2015 22:42

Excelente artigo, aguardando a continuação!

Fernando Deluno Garcia
Fernando Deluno Garcia
Reply to  Haroldo Amaral
06/10/2015 09:47

Obrigado, Haroldo!

Sérgio Kubrusly Aranha
Sérgio Kubrusly Aranha
13/01/2017 00:56

Muito bom. Texto bem objetivo e bem pontuado. Valeu

Fernando Deluno Garcia
Fernando Deluno Garcia
Reply to  Sérgio Kubrusly Aranha
16/01/2017 19:07

Muito obrigado, Sérgio.

WEBINAR

Visão Computacional para a redução de erros em processos manuais

DATA: 23/09 ÀS 17:00 H