Funcionamento das Interfaces de Vídeo

    Não há dúvida em relação à interação homem máquina que existe, sendo a mesma feita essencialmente através do video.

    No entanto, o microprocessador não é capaz de criar imagens, somente manipular dados, como bem sabemos. Portanto, o microprocessador não gera imagens. 0 que ele na verdade faz é definir a imagem como será e enviar os dados relativos a essa imagem a uma interface capaz de gerar imagens- a interface de vídeo. A interface de vídeo, por sua vez, é conectada a um dispositivo capaz de apresentar as imagens por ela geradas-o monitor de vídeo.

    Quando o processador quer escrever dados na tela (desenhar janelas. por exemplo), ele escreve os dados em um lugar chamado memória de vídeo, que está na interface de vídeo. 0 controlador da interface de vídeo pega os dados presentes na memória de vídeo e os converte em sinais eletrônicos compatíveis com o monitor de vídeo.
 
 


Modo Texto

    Porém, como o microprocessador gera imagens? Desde a primeira interface de vídeo criada pela IBM para o seu primeiro PC-a MDA (Monochrome Display Adapter)-, a maneira com que o microprocessador manipula textos é a mesma. A tela do monitor de vídeo é dividida em 80 colunas por 25 linhas, como se fosse um grande reticulado. Temos, portanto, em uma tela assim constituida, 2.000 posições diferentes. Cada posição será ocupada por uma letra. um número ou um símbolo.

 

    Dessa maneira, quando o microprocessador deseja escrever na tela "OI!" no canto superior esquerdo, issa signifìca que ele colocará a letra O na primeira coluna da primeira linha, a letra I na segunda coluna e fìnalmente "!" na terceira coluna.

    O microprocessador, no entanto, não conseguirá executar essa tarefa, pois o mesmo trabalha somente com números. O microprocessador não sabe o que é um "O", um "I" ou um "!". E como resolveremos ísso?

    Isso será facilmente resolvido graças à existência de um padrão de conversão de números em letras (e símbolos diversos),  chamado ASCII (American Standard Code for Information Interchange - Código Padrão Americano para a Troca de Informações). Esse código define que cada símbolo capaz de ser apresentado na tela possui um valor numérico correspondente. Assim, a letra O vale 79, a letra I vale 73 e o "I" vale 33. Como tanto o microprocessador quanto a interface de vídeo estarão trabalhando sob um mesmo padrão, eles conseguirão trocar   informações satisfatoriamente.

    Tradicionalmente, o código ASCII (pronuncia-se asquii) é um código de 7 bits. Dessa forma, seria um código capaz de reproduzir = 128 caracteres diterentes. No entanto. a menor unidade utilizada pelo microprocessador para representar 7 bits seria 8 bits, ou 1 byte. Para não haver desperdício, é adotado em microcomputadores um código ASCII de 8 bits, representando =256 caracteres diferentes. Para manter compatibilidade com o código ASCII padrão, os valores de 0 a 127 representam igualmente os caracteres do código ASCII padrão, utilizado por todos os microcomputadores e periféricos. Para valores de 128 a 255 são reproduzidos caracteres especiais. como símbolos gráticos de molduras e letras acentuadas.

    Dessa maneira, os valores do código ASCII entre 128 e 255 podem variar. Poderemos ter vários códìgos ASCII "secundários" para essas posições. Esse código ASCII "estendido" é chamado código de pàgina ou Code Page. Para o padrão PC, internacionalmente utiliza-se no ASCII secundário o código de página 437 (os cádigos de página são rotulados por números). No Brasil deveremos utilizar o código de página 850, pois nesse código ASCII secundáric é que encontraremos caracteres de letras com acentuação.

    Se cada uma das 2.000 posições linha vs. coluna é preenchida por um número de 8 bits, será necessário um local contendo2.000 bytes. Esse local chama-se memória de vídeo e está localizado fisicamente na interface de vídeo. Para uma tela texto, necessitamos de 4.000 bytes de memória de vídeo (arredondamos para 4 KB - 4.096 bytes - por ser o valor inteiro mais próximo): 2.000 bytes contendo os caracteres em si e 2.000 bytes contendo os atributos para cada posição. Atributos são indicadores de estado de cada posição, como por exemplo se está sublinhado, piscando, invertido, intensificado, etc.
Resumidamente, o microprocessador escreve os dados que queremos que sejam apresentados na tela na memória de vídeo. A interface de vídeo lê o conteúdo da memória de vídeo e converte o mesmo em sinais elétricos de modo que sejam compreendidos pelo monitor de vídeo.
    Isso é mais fácil ainda do que você está pensando. Embora a memória de vídeo esteja localizada na própria interface, a mesma é acessada através de um banco de memória dentro do 1 MB que o microprocessador acessa em modo real. Isso significa que o microprocessador acessa facilmente os dados contidos na memória de vídeo. Esse é um processo conhecido como escrita direta em video.
    Como um banco de memória possui 64 KB e a interface MDA possuía somente 4 KB de memória de vídeo, não havia qualquer problema. A memória devídeo MDAocupa o banco 11 (B) a partir de BOOOOh.
 
 
                                Banco 0 
                                    a 
                                 Banco 9
                    Memória Convencional
       Banco  10 ( A0000h  a AFFFFh)                       Vazio ( 64 KB )
       Banco  11 ( B0000h a B0FFFh )             Memória de Vídeo MDA
       Banco  11 ( B1000h a BFFFFh )                       Vazio ( 60 KB )
       Banco  12 ( C0000h a CFFFFh )                        Vazio ( 64 KB )
       Banco 13 ( D0000h a DFFFFh )                        Vazio ( 64 KB )
       Banco 14 ( E0000h a EFFFFh )                        Vazio ( 64 KB )
       Banco 15 ( F0000h a FFFFFh )                         BIOS (64 KB )
 
           Figura 15.2 : Mapa de Memória de um micro com interface de vídeo MDA
 


Modo Gráfico


    Apesar de poder escrever texto de diversas formas, a intertace MDA não permitia que gráflcos fossem apresentados. Gráficos e cores só foram possíveis a partir da interface de vídeo CGA (Color Graphics Adapter). Porém, como gráficos podem ser escritos?

    Apesar de cada uma das 2.000 posições existentes na tela serem rígidas, cada caractere é formado por uma máscara contendo diversos pontos. Para a interface CGA essa máscara era de 8 x 8 pontos.
 

Figura 15.3: Letra Z apresentada por uma interface CGA ( matriz 8x8 )
    Cada ponto dessa máscara é o menor ponto que pode ser apresentado na tela e recebe o nome de pixel ou pel (picture element). Se cada ponto dessa máscara é o menor ponto que pode ser apresentado, chegaremos à conclusão de que uma interface CGA era capaz de apresentar 80 x 8 = 640 por 25 x 8 = 200 pontos na tela.

    Apresentar gráficos consiste somente na capacidade de manipular tais pontos de modo a mostrar uma outra combinação de pontos acesos e apagados, não se prendendo ao código ASCII ou a qualquer outro tipo de código. Para um ponto aceso poderíamos ter um bit "1" e para um ponto apagado um bit "0", de acordo com a posição do ponto dentro da memória de vídeo.

    No caso da interface CGA, a tela no total possui 640 x 200 = 128.000 pontos. Isso significa que precisaríamos de uma memória de vídeo de 128.000 bits ou 128.000+ 8 = 16.000 bytes (não se esqueça de que 1 byte = 8 bits). A memória de vídeo possui 16 KB (16.384 bytes), o valor inteiro mais próximo.

    Mas como cores são geradas? Da maneira que apresentamos, explicamos somente a possibilidade de duas condições para cada ponto: aceso ("1) ou apagado ("0"). Para apresentar cores, precisaríamos de mais memória de vídeo disponível, de modo a armazenar informações de cor. Porém, isso não era possível. A memória de video da interface CGA já havia sido definida: 16 KB.

    Nesse caso, optou-se por uma saída interessante. Embora a interface de video CGA consiga gerar 16 cores, em sua resolução máxima de 640 x 200 pixels poderiamos ter somente duas cores. Poderíamos programar a interface de vídeo de modo que o "0" não significasse "apagado", mas sim "aceso com a cor de fundo" (background) e, da mesma maneira, o "1" não significava simplesmente "aceso", mas sim "aceso com a cor de frente" (foreground). Assim poderíamos ter um gráfico vermelho sobre um fundo branco. Se em um determinado momento mudassemos a cor de vermelho para azul, todo o gráfico seria imediatamente apresentado em azul sobre um fundo branco.

    Daí surge uma noção muitissimo importante de ser notada: apesar de uma interface de vídeo conseguir gerar muitas cores, normalmente não são todas as cores que conseguimos que sejam apresentadas ao mesmo tempo. O universo de cores que a interface de vídeo é capaz de gerar é chamado de palette (aquarela) e a quantidade de cores disponiveis simultaneamente chamamos simplesmente de cores simultâneas.

    Temos duas maneiras para apresentarmos mais cores simultâneas: ou aumentamos o tamanho da memória de vídeo (o que era impossível em interfaces CGA) ou diminuímos a resolução, liberando mais memória de vídeo para armazenarmos informações relativas a cor.

    Assim, poderíamos ter um segundo modo em CGA com a metade da resolução máxima. Esse segundo modo geraria gráficos de 320 x 200 pixels. Isso significa que poderíamos ter quatro cores simultâneas, pois a memória de video necessária agora era 8 KB e possuíamos 16 KB de memória de vídeo na interface. Com isso dobramos a capacidade de cores simultâneas.
 


Interface CGA (Color Graphics Adapter)


 
    O banco de memória que a MDA ocupava estava amplamente vago. Como a memória de vídeo CGA possuía somente 16 KB, o mesmo banco 11 foi reservado para uso com a CGA, porém a partir de endereço diferente (B8000h).

 
                         Banco 
                           a 
                         Banco 9
                 Memória Convencional 
                     ( 640 KB )
Banco 10 ( A0000h a AFFFFh )
Vazio ( 64 KB )
Banco 11 ( B0000h a BFFFFh )
Vazio ( 32 KB )
Banco 11 ( B8000h a BBFFFh )
Memória de Vídeo CGA ( 16 KB )
Banco 11 ( BC000h a BFFFFh )
Vazio ( 16 KB )
Banco 12 ( C0000h a CFFFFh )
Vazio ( 64 KB )
Banco 13 ( D0000h a DFFFFh )
Vazio ( 64 KB )
Banco 14 ( E0000h a EFFFFh )
Vazio ( 64 KB )
Banco 15 ( F0000h a FFFFFh )
BIOS ( 64 KB )
               Figura 15.4: Mapa de memória de um micro com interface de vídeo CGA.
 


Interface Hercules

    Interessante notar que a interface MDA gerava cada caractere a partir de uma matriz 9 x 14 pixels.

Figura 15.5: Letra M apresentada por uma interface MDA/Hercules (matriz 9 x 14).

    Com isso, chega-se à conclusão de que seus caracteres eram mais "rebuscados" que os apresentados pela interface CGA. E isso é verdade. No entanto. a interface MDA não poderia produzir gráficos.

    Uma empresa percebeu que, se fosse possível, interface  MDA apresentaria gráficos de 80 x 9 = 720 por 25 x 14 = 350 pixels. Essa empresa concebeu um controlador gráfico de modo a ser conectado a monitores MDA que permitia gerar gráficos de 720 x 350 pixels em preto-e-branco (uma vez que não existiam monitores MDA em cores!). Esse controlador gráfico chamado HGC (Hercules Graphics Controller) tornou-se tão popular que foi o primeiro (e um dos únicos) padrão não-IBM a se popularizar e se firmar no mercado, principalmente por conta dos softwares.

    Como a interface Hercules (como é mais conhecida) não é um padrão criado pela IBM, quem quisesse criar programas que a utilizassem teria de suprir drivers especiais. Como muitos utilizam o padrão Hercules, a maioria dos programas gráficos o reconhecem (inclusive o Windows).

    Do ponto de vista técnico, a interface Hercules é somente uma evolução da MDA. A maioria dos programas reconhece a interface Hercules como MDA se nada for dito a respeito. Para que programas de teste de hardware como o Checkit testem a interface Hercules, deveremos executar o driver Hercules que acompanha o MS-DOS, na linha de comando: MSHERC.

    Com o aumento da escala de integração de componentes, as interfaces MDA/Hercules e CGA passaram a ser incorporadas em uma só interface, conhecida como Dual. Essa interface geralmente apresentava também uma porta paralela.

    Importante notar que, para cada tipo de interface, deveremos ter um tipo de monitor específico. O sucesso do Hercules se deu justamente por esse fato: para utilizarmos a interfaces Hercules não precisaríamos de nenhum gasto adicional com monitor de vídeo: o próprio monitor MDA era utilizado.

    Tais interfaces Dual permitem que sejam utilizadas como Hercules caso tenhamos um monitor MDA conectado e como CGA caso tenhamos um monitor CGA conectado. Essa seleção é feita através de um jumper na interface.

    Os monitores MDA/Hercules de última geração eram também "dual", pois poderiam ser "chaveados" para CGA. Nesse caso, a interface de vídeo era configurada para MDA/Hercules (bem como o setup do microcomputador) e o chaveamente entre MDA/Hercules e CGA era feito atravé,. do MS-DOS, utilizando-se o comando MODE:

    O MODE MONO: Coloca a interface e o monitor em modo MDA/Hercules.
    O MODE C080: Coloca a interface e o monitor em modo CGA.

    Esse procedimento era de extrema importância, uma vez que nem todos os programas funcionavam no modo Hercules (já que não era padrão IBM). Nesse caso poderíamos tentar executa o programa em modo CGA.
 


Interface EGA (Enhanced Color Graphics Adapter)

    A interface de vídeo EGA - lançada em conjunto com o PC AT - deu uma nova força aos programas gráficos. principalmente por ser um padrão, aliado ao lançamento da NEC, tradicional fabricante japonês, de um monitor de vídeo chamado Multisync, que permitia diversas resoluções diferentes em um só monitor (algo parecido com e monitor dual).

    A partir da interface de vídeo EGA, todas as interfaces de vídeo passaram a ter uma ROM própria, de modo a melhor controlar o maior número de cores disponíveis, a maior resolução e, principalmente, a rnaior quantidade de memória de vídeo que isso implicaria (até então, as interfaces usavam rotinas do Próprio BIOS do micro).

    Dessa forma. todas as ìnterfaces de vídeo modernas possuem ROM, significando que poderemos executar shadow da mesma, conforme a interface.
 
Banco 0
a
Banco 9
Memória Convencional
( 640 KB )
Banco 10 ( A0000h a AFFFFh )
Memória de vídeo EGA ( 64 KB )
Banco 11 ( B0000h a BFFFFh )
Memória de vídeo EGA ( 64 KB ) 
Banco 12 ( C0000h a C3FFFh )
ROM da interface EGA ( 16KB )
Banco 12 ( C4000h a C3FFFh )
Vazio ( 48 KB )
Banco 13 ( D0000h a DFFFFh )
Vazio ( 64KB )
Banco 14 ( E0000h a EFFFFh )
Vazio ( 64KB )
Banco 15 ( F0000h a FFFFFh )
BIOS ( 64KB )

Figura 15.6: Mapa da memória de um micro com interface de vídeo EGA.

    Os caracteres do modo texto da interface EGA são apresentados em uma matriz 8 x 14. Com isso, a interface EGA permite uma resolução máxima de 640 x 350 pixels, com 16 cores simultâneas de uma palette de 64 cores. Para apresentar esse modo máximo, a interface teria de possuir 256 KB de memória de vídeo, através de uma sobreplaca de expansão de memória que era conectada à mesma.

    Acontece que só possuímos dois bancos reservados para acesso a memória de vídeo. Com isso, temos urna área de somente 128 KB para acessarmos 256 KB. O acesso a memória de vídeo é feito dividindo-se a mesma em quatro bancos de 64 KB, sendo que somente dois podem ser acessados pelo microprocessador. Quando há a necessidade de se ler ou escrever em um dos bancos que o microprocessador não esteja vendo, ocorre uma troca de bancos, o que faz com que o banco "distante" do microprocessador passe a ser visto pelo mesmo e o banco que estava sendo visto pelo microprocessador passe a estar "distante".

    A partir do lançamento da interface EGA e do monitor Multisync da NEC, diversos fabricantes passaram a produzir interfaces de video mais avançadas para microcomputadores do padrão IBM. No entanto, tais interfaces nunca chegaram a ser massificadas pelo simples fato de serem tecnologias proprietárias e sem divulgação técnica a respeito das mesmas, o que dificultava programadores a criarem programas para as mesmas. O mesmo ocorreu com outros padrões mais avançados lançados mais tarde pela prãpria IBM. Dentre esses padrões podemos citar o PGA (Professional Graphics Adapter), o MCGA (Memory Controller Gate Arrayl e o 8514/A. Dos padrões que "deram certo" podemos citar a interface TARGA (Truevision Advanced Raster Graphics Adapter), que pemite a captura, a manipulação e a sobreposição de imagens de vídeo.
 


Interface VGA (Vídeo Graphics Array)

    O microcomputador lançado em seguida pela IBM era de arquitetura fechada. Para o modelo "topo de linha" do IBM PS/2, havia sido desenvolvido um novo padrão de vídeo: o VGA (Video Graphics Array). Interessante notar que a IBM não lançou a interface VGA, somente o padrão VGA, uma vez que o circuito equivalente a intertace de vídeo VGA vinha montado diretamente sobre a placa-mãe do PS/2.

    Atualmente, o padrão mínimo a ser utilizado em um microcomputador é o VGA. A interface de video VGA permite uma resolução máxima de 640 x 480 pixels, com 16 cores simultâneas de uma pallete de 262.144 cores (256K cores). Em modo texto, os caracteres VGA são apresentados em uma matriz 9 x 16.

    Da mesma forma que a EGA em sua configuração máxíma, a interface de vídeo VGA possui Z56 KB de memôria de vídeo, sendo necessário troca de bancos para preencher completamente uma tela gráfica.
 
 
Banco 0
a
Banco 9
Memória Convencional
( 640 KB )
Banco 10 ( A0000h a AFFFFh )
Memória de vídeo VGA ( 64 KB )
Banco 11 ( B0000h a BFFFFh )
Memória de vídeo VGA ( 64 KB )
Banco 12 ( C5000h a C5FFFh )
ROM da interface VGA ( 24 KB )
Banco 12 ( C6000h a CFFFFh )
Vazio ( 40 KB )
Banco 13 ( D0000h a DFFFFh )
Vazio ( 64 KB )
Banco 14 ( E0000h a EFFFFh )
Vazio ( 64 KB )
Banco 15 ( F0000h a FFFFFh )
BIOS ( 64 KB )
Figura 15.7: Mapa de memória de um micro com interface de vídeo VGA.

    A interface VGA é um marco tão grande que todas as alterações posteriores basearam-se na mesma. E isso é muito importante, pois a interface VGA permitia que programas escritos para interfaces EGA, CGA e MDA fossem executados sem maiores complicações. Os já citados padrões MCGA e 85141A, por exemplo, baseavam-se no padrão VGA.
 


Interface Super VGA (SVGA) (Super Video Graphics Array)

    Chamamos de Super VGA qualquer interface de video que utilize padrões de video acima do VGA. e que também possuam total compatibilidade com o padrão VGA. Isso permite que programas compatíveis com os modos "Super VGA" da interface de video pensem que estão operando com uma simples interface de vídeo VGA, que é padronizada e amplamente utilizada.

    O grande problema era padronização. Apesar de resoluções como 800 x 600, 1024 x 768 e 1280 x 1024 serem comuns em interfaces de vídeo SVGA, cada controlador de video opera de maneiras diferentes, dependendo do fabricante.

    O grande problema não diz respeito a sistemas operacionais prontos, como o Windows 3.x, o Windows 9x, o Windows NT e o OS/2. Inevitavelmente boas intertaces de video virão com um disquete ou CD-ROM contendo diversos drivers para elas. O grande problema diz respeito à criação e elaboração de novos prograrnas. Se um programador quiser escrever um programa utìlizando uma resolução de 800 x 600 pixels, ele deverá programar de acordo com a interface de vídeo que ele possua. O programa, se executado utitizando outra interface de vídeo, não funcionará.

    Um programa escrito para o "modo Super VGA" da interface de vídeo Trident não funcionará em uma interface de vídeo Oak, por exemplo.
 


0 Padrão VESA

    Algo havia de ser feito. Como padronizar o modo Super VGA? A IBM ainda tentou ísso em 1990, estipulando o padrão XGA (eXtended Graphics Array). Infelizmente tarde demais, pois já havia muitos fabricantes de interfaces "Super VGA" no mercado e que não estavam nem um pouco interessadas em jogar fora todo o trabalho que vinham desenvolvendo para simplesmente aceitar um padrão imposto pela IBM.

    Os fabricantes de interfaces de vídeo se uniram e criaram uma associação internacional para a padronização de vídeo e afins-a VESA (Video Electronics Standards Association) , que congregava na época mais de 150 fabricantes.

    0 primeiro passo da VESA foi padronizar o Super VGA, criando um conjunto de comandos universais que seriam compatíveis com todas as interfaces de vídeo existentes no mercado. Para isso, um driver VESA faria a conversão dos comandos VESA em comandos específicos do controlador de vídeo. Esse driver VESA atualmente vem embutido dentro da memória ROM da interface de video.

    Você pode verificar se uma intertace de video possui o driver VESA embutido, através de programas como PC-Config, Troubleshooter ou mesmo o MSD que acompanha o MS-D05. Atualmente todas as intertaces de vídeo são Super VGA e todas são compatíveis com o padrão VESA. Drivers de vídeo padrão Super VGA são drivers que operam com comandos VESA, como veremos mais adiante.

 
 


Controlador de Vídeo

    Classificamos uma interface de vídeo por seu controlador de vídeo (o controlador de vldeo pode também ser chamado de processador de vídeo ou de chipset de vídeo). Na maioria das vezes, o fabricante da placa de vídeo e o fabricante do controlador de vídeo são distintos.
 
    Por esse motivo, na maioria das vezes chamamos uma interface de vídeo por seu controlador e não por seu fabricante. Uma interface que utilize o controlador Trident 9680 pode ser feita pela empresa Janton, porém chamaremos a interface de "Placa Trident 9680". O mesmo ocorre, por exemplo, no caso das placas produzidas pela Diamond, que em geral utilizam controladores de video da S3.

    Saber o controlador de vídeo é extremamente importante para configurarmos o vídeo corretarnente. O driver de vídeo a ser utilizado no sistema operacional deverá ser específico para o controlador de vídeo .

    O controlador de vídeo é o maior circuito existente na interface de vídeo, conforme você pode conferir na Fìgura 15.10. No caso, a interface de vídeo utiliza o controlador Trident 9680. Você pode descobrir qual é o controlador de vídeo de uma interface de vídeo simplesmente olhando para ele (maneira mais confiável), porém você também poderá utilizar programas com essa finalidade, como é o caso do PC-Config. Veja, na Figura 15.8, na linha "VGA chipset", que esse programa reconheceu corretamente o controlador de video.

 
Figura 15.10: Detalhe do controlador de vídeo. No caso é um Trident 9680.
    Há diversas diferenças entre controladores de fabricantes diferentes e também entre os modelos de um mesmo fabricante. As principais diferenças são as resoluções máximas que o controlador de vídeo é capaz de gerar no monitor e, principalmente, a velocidade com que o controlador consegue ler dados da memória de vídeo e mostrar na tela-ou seja, desempenho.
 


Memória de Vídeo

    Como não é um padrão, poderemos ter interfaces de vídeo SVGA com os mais diterentes tamanhos de memória de vídeo. Alguns valores típicos são 512 KB, 1 MB, 2 MB, 4 MB ou até mais. Quanto mais memória de vldeo, resoluções mais altas podem ser geradas, além de um maior número de cores simultâneas.

Figura 15.11: Detalhe da memória de vídeo em uma interface de vídeo.

    Na Figura 15.12, você contere o mapa de memória para intertaces de vídeo Super VGA.
 
 
Banco 0
a
Banco 9
Memória Convencional
( 640 KB )
Banco 10 ( A0000h a AFFFFh )
Memória de vídeo Super VGA ( 64 KB )
Banco 11 ( B0000h a BFFFFh )
Memória de vídeo Super VGA ( 64 KB )
Banco 12 ( C5000h a C7FFFh )
ROM da interface Super VGA ( 24 KB )
Banco 12 ( C8000h a CFFFFh )
Vazio ( 32 KB )
Banco 13 ( D0000h a DFFFFh )
Vazio ( 64 KB )
Banco 14 ( E0000h a EFFFFh )
Vazio ( 64 KB )
Banco 15 ( F0000h a FFFFFh )
BIOS ( 64 KB )

Figura 15.12: Mapa de memória de um micro com interface de vídeo Super VGA.

    A princípio, ter mais memória de video significa desempenho mais baixo. Se vocë reparar, temos somente dois bancos de 64 KB (totalizando 128 KB) disponíveis para acessar a memória de vídeo. O processador acessa a memórìa de vídeo através da técnica de troca de bancos, fazendo com que a memória de vídeo seja dividida em bancos de 64 KB. Uma interface de vídeo com 1 MB terá sua memória de vídeo dividida em 16 bancos e uma intertace com 2 MB de memória de vídeo terá sua memória dividída em 32 bancos. Ou seja, quanto maior o tamanho da memória da vídeo, mais trocas o processador precisará etetuar para acessar toda a memórìa de vídeo, fazendo com que a taxa de atualização da tela (ou seja, o desempenho) caia consideravelmente.

    A solução para esse problema é uma técnica chamada abertura de vídeo (ou endereçamento linear) e baseia-se em um dado óbvio: a limitação do mapa de memória existe para manter compatibilidade com o XT! Como dificilmente estaremos trabalhando com o processador em modo real hoje em dìa, podemos endereçar a memória de vídeo como se ela estìvesse localizada após a memória RAM do micro. Afinal, os processadores conseguem acessar até 4 GB de RAM e dificilmente teremos algo perto disso em nosso micro.

    Em um micro com 8 MB de memórìa e com interface de vídeo com 1 MB, o processador "pensa" que o micro possui na verdade 9 MB de RAM, acessando a memória de vídeo linearmente e utilizando instruções de 32 bits, aumentando o desempenho do micro.

 
Figura 15.13: Funcionamento da abertura de vídeo (endereçamento linear).

    Para que essa técnica seja utilizada, o sistema operacional deverá estar com os drivers da interface de vídeo corretamente instalados. A habilitação desse recurso é automático quando 0 driver de video está corretamente instalado.

    Portanto, quando o driver de vídeo está corretamente instalado, ter mais memória de video signifìca mais desempenho. Como o processador conseguirá acessar a memória de vídeo linearmente, ele poderá utilizar a técnica de tela virtual: enquanto o controlador de vídeo mostra na tela do monitor o conteúdo da memória de vídeo, o processador pode escrever antecipadamente dados em uma porção não utilizada da memória de vídeo. Quando for a hora de o controlador mostrar a próxima tela, o processador não precisará enviar os dados, pois ela já estará armazenada na memória de vídeo, fazendo com que a interface ganhe tempo, aumentando o desempenho do micro.

 


Resolução

    As cores disponíveis estão relacionadas a quantidade de bits com que cada pixel é armazenado dentro da memõria de vídeo, conforme nos mostra a tabela.
 
                        Quantidade de Bits por Ponto                             Cores Simultâneas Disponíveis
                                         2                                                                        4
                                         4                                                                        16
                                         8                                                                        256
                                         15                                                        32.768 ( 32 K ) ( Hi Color )
                                         16                                                        65.536 ( 64 K ) ( Hi Color )
                                         24                                                  16.777.216 ( 16 M ) ( RGB True Color )
                                         32                                               4.294.967.296 ( 4 G ) ( CMYK True Color )
 

    Atualmente o ideal é trabalharmos com a qualidade RGB True Color ou CMYK True Color. 256 cores simultâneas é o mínimo do minimo para visualizarmos gráficos corretamente.

    A resolução e a quantidade de cores simultãneas que uma interface de vídeo é capaz de exibir estão relacionadas à quantidade de memória de vídeo que a interface possui. Você poderá saber de antemão o quanto de memória de vídeo é necessário para trabalhar em uma determinada resolução. O cálculo é simples:

    resolução horìzontal x resolução vertical x bits por ponto / 8 = quantidade mínima de memória de vídeo

 
    Por exemplo, para que você consiga ter a resolução de 640 x 480 em RGB True Color, você precisará de uma interface de vídeo com 640 x 480 x 24/8=921.600 bytes de memória de vídeo, ou seja, uma interface de vídeo com 1 MB consegue mostrar essa resolução.

    Já para ter a resolução 800 x 600 em RGB True Color, você precisará de uma interface de vídeo com 800 x 600 x 24/8= 1.440.000 bytes de memória de vídeo, ou seja, uma interface de vídeo com 1 MB não consegue mostrar essa resolução (seria necessário uma interface de vídeo com 2 MB de memória).

    Você pode fazer essa conta livremente. Para facilitar, compilamos uma tabela com a quantidade de memória de vídeo necessária para apresentar as resoluções mais utilizadas em RGB True Color.

 
                     Resolução em RGB True Color                                 Memória de Vídeo Mínima
                                   640x480                                                                 1 MB
                                   800x600                                                                 2 MB
                                  1024x768                                                                4 MB
                                  1280x1024                                                              4 MB
 
 


Barramento de Expansão

    Atualmente encontramos interfaces de vídeo para os seguintes barramentos de expansão:

    Para micros modernos aconselhamos o usó de interfaces de vídeo PCI ou mesmo AGP caso sua plar:a-máe possua esse tipo de harramento.

    Tome muito cuidado, principalmente em upgrades, para não aproveitar interfaces de vídeo ISA em micros modernos.

 
Figura 15.14: Interface de vídeo Super VGA para barramento ISA.

    No caso de interfaces de video VLB, devemos ter cuidado na hora da aquisição, uma vez que possuímos dois padrões VESA regendo interfaces de vídeo: o padrão VESA para programação (driver VESA ou BIOS VESA) e o padrão VESA de barramento local (VLB). Devemos estar atentos, pois vendedores desinformados poderão vender uma interface de vídeo ISA ou rnesmo PCI como sendo "VESA" - pois, a partir do momento em que ela possui driver VESA em ROM, é considerada "VESA". No momento da aquisição, enfatize que o padrão VESA que você pretende é o de barramento local (VLB). Veja a Figura 15.25.

Figura 15.15: Interface de vídeo Super VGA para barnmento VLB.

    Já no caso de interfaces de vídeo PCI, (Figura 15.16) o cuidado a ser tomado é no tamanho do barramento. Vimos   que a maioria dos micros utiliza slot PCI de 32 bits. Porém, é comum encontrarmos placas de vídeo PCI para slots PCI de 64 bits e que vocé poderá comprar por engano. Além disso, muita gente confunde tamanho do barramento de expansão (que, no caso do PCI, é tipicamente de 32 bits) com o tamanho do barramento interno da interface de vídeo (que pode ser de 32 bits, 64 bits, 126 bits ou mesmo mais).

Figura 15.16: Interface de vídeo Super VGA para barramento PCI.
    A principal característica de uma interface de vídeo AGP (Figura 15.17) é o modo em que ela trabalha: x1 x2 ou x4.
Figura 15.17: Interface de vídeo Super VGA para barramento AGP.
 


 Barramento Interno

    A comunicação do controlador de video com a memória de vídeo não precisa obedecer nenhum padrão específico, a não ser o próprio padrão do controlador de vídeo. Por esse motivo, é muito comum encontrarmos controladoros de vídeo que se comunicam com a memóría de video a uma quantidade maior de bits por vez ou ertão a taxas de clock mais elevadas.

    Atualmente é muito comum encontrarmos interfaces de vídeo de "64 bits", "128 bits", "256 bits" ou mais. Esses tamanhos de dados referem-se ao barramento interno da placa de vídeo, ou seja, a comunicação que é feita entre o controlador de vídeo e a memória de video, não tendo nenhurna ligação com o barramento de expansão.

    Há casos em que o barramento de dados interno trabalha em taxas de clock mais elevadas, de modo a obter um desempenho maior, Vários usuários. inclusive, conseguem configurar um overclock no barramento interno da interface de vídeo, aumentando o desempenho do vídeo, especialmente para gráficos.
 

Figura 15.18: Funcionamento do barramento interno da interface de vídeo
 


Tecnologias de Memória de Vídeo

    A memória de video pode ser construida com diversas tecnologias, entre elas:
 

    A tecnologia da memária de vídeo influi diretamente no desempenho da interface de vídeo.

Desempenho

Há vários fatores que influenciam no desempenho de uma interface de vídeo, especialmente:
 

    Fizemos diversos testes em nosso laboratório, utilizando os programas PC-Bench e Winbench para comprovarmes isso (TORRES, Gabriel. O poder das placas de vídeo. O Dia Informática, Rio de Janeiro, 31 de outubro de 1997). Reproduzimos, nas Figuras 15.19 e 15.20, os resultados de nossos testes, onde você pode ver a diferença de desempenho que há quando utilizamos um driver padrão do Windows 95 (que vem junto com o sistema operacional) e quando utilizamos um driver específico da interface de vídeo (que vem junto com a placa).
 
 
                     Figura 15.20: Comparando o desempenho de drivers de vídeo com uma interface Diamond 2500.

    Já em outro teste que realizamos em nosso laboratório, comparamos o desempenho das placas de vídeo mais vendidas no Brasil (TORRES, Gabriel. Turbinada custa R$ 100,00. In: O Dia lnformática, Rio de Janeiro, 24 de abril de 1998). Há diferenças brutais no desempenho obtido, conforme você pode observar na Figura 15.21. O micro utilizado nos testes foi um Pentium-133 com placa-mãe Soyo com chipset Intel 430 TX e com 16 MB de memória EDO. 0 programa utilizado foi o W inbench. Entre as sessões de teste, o únicoiìtem diferente era a placa de vídeo. Os resultados apresentados estão em milhões de pixels por segundo.
 

 
 


Configuração da Interface de Vídeo

    Atualmente a maioria dos programas exige que o vídeo esteja configurado com, pelo menos, 256 cores simultãneas, para que imagens possam ser apresentadas corretamente. No caso da Internet, grande parte das imagens presentes na WWW estão em formato JPG, que utilizam qualidade True Color. Se o vídeo do micro não estiver configurado corretamente, as imagens seráo apresentadas sem definição e/ou com as cores trocadas.

    Outro fator muito importante para configurarmos o vídeo é a velocidade. Vimos que drivers específìcos para a interface de vídeo apresentam um desempenho muito maior do que os drivers genéiìcos que acompanham o sistema operacional.

    Dessa forma, deveremos configurar o vídeo a apresentar, no mínimo, 256 cores simultâneas. Quanto rnais cores simultâneas, melhor. Na resolução de 640 x 480 (a que a maioria dos usuários usa), mesmo com uma placa de video com 1 MB de memória de vídeo conseguimos obter a qualidade RGB True Color (ver a seção Resolução).

    Para configurar o vídeo, você precisará do disquete ou CD-ROM contendo os drivers da sua interface de vídeo. O Wìndows 95 já vem com os drivers para as interfaces de vídeo mais comuns. 0 Windows 95 apresenta diversos drivers padronizados, em sua maioria com desernpenho maïs baixo que os drivers do fabricante.

    Se você não tiver o disquete ou CD-ROM da interface de vídeo, você poderá baixar no site do fabricante na Internet os drivers para a sua interface de vídeo. Você precisará saber o modelo do controlador de vídeo e o fabricante. Veja, no Apëndice C, os endereços Internet dos principais fabricantes.
 
    É    muito irnportante que você utilize drivers específicos para o sistema operacional utilizado. No disquete (ou CD-ROM) que contém os drivers da interface de vídeo, os drivers são separados em diretórios de acordo com o sistema operacional.
Instale drivers do diretório correspondente ao sistema operacional instalado.

    Aliás, ocorre um grande problema quando usuários inexperientes fazem um upgrade do Windows 3.x para Windows 9x diretamente: o novo sistema irá aproveitar o driver de vídeo do antigo sistema, que apresentará diversos problemas de compatibilidade.
 


Configurando o Video no Windows 9x

    No Windows 9x, a configuração do vídeo é feita em duas etapas: primeiro, devemos conferir e instalar, se necessário, o driver de vídeo apropriado; a segunda etapa é a configuração de cores simultâneas e resolução.

Configurando o Driver de Vídeo

    Você deverá conferir, no Gerenciador de Dispositivos, qual é o driver de vídeo que está instalado no micro. Há duas maneiras de se chegar até o Gerenciador de Dispositivos: clicando no ícone Sistema do Painel de Controle ou clicando com o botão direito sobre o ícone Meu Computador. escolhendo a opção Propriedades do menu que aparecerá.

    Clique em Adaptadores de Vídeo para verificar qual driver está instalado. Se o driver não especificar o modelo da sua interface de vídeo, significa que é um driver padrão do próprio Windows (ver Figura 15.32). Nesse caso, devemos substituir o driver padrão do Windows por um driver específico da interface de video. Além de drivers padrão serem mais lentos. eles em geral não permitem que você configure mais do que 256 cores simultâneas. Se um driver específico já estiver instalado (ver Figura 15.33). não há necessidade de alterarmos o driver de vídeo.

    Para alterar o driver de vídeo, clìque duas vezes sobre o driver, escolhendo a seguir a guia Driver da janela que aparecerá. Nessa janela, vocë deverá clicar na caixa Alterar driver ( W indows 95) ou Atualizar driver (Windows 95 OSR2 e Windows 98).
 

 
    O próximo procedimento varia um pouco de acordo tom a versão do Windows 9x que você estiver utilizando. No Windows 95, você deverá clicar na caixa "Com disco" da janela que aparecerá, informando, a seguir, o caminho onde estão armazenados os drivers de video para Windows 95 de sua interface de vídeo (ver Figura 15.35). Não se esqueça de que, normalmente, os drivers para Windows 95 ficam armazenados em um diretório WIN95 ou similar no disquete ou CD-ROM da interface.

    No Windows 95 OSR2, vocé deverá responder com "Sim" à pergunta "Deseja que o Windows procure o driver?", conforme mostra a Figura 15.36.

 
 
    A seguir, o Windows 95 OSR2 avisará que não foi possível encontrar o driver. Basta clicar na caixa Outros locais, conforme você pode acompanhar na Figura 15.37.
 

    Basta você clicar na caixa Procurar da próxíma janela que aparecerá, apontando o diretório onde os drivers podem ser encontrados.

 
    Já o Windows 98 iniciará o Assistente para atualização do driver de dispositivo, que consegue, inclusive, baixar uma versão mais atualizada do driver diretamente da Internet. Como você provavelmentejá tem o driver em disquete ou CD-ROM, selecione a primeira opção ("Procure um driver melhor do que está sendo usado por seu dispositivo). Veja a Figura 15.39.
 
    A seguir, você deverá selecionar o local de onde você quer instalar os drivers (ver Figura 15.40), por exemplo, unidade de disquete, unidade de CD-ROM, Internet (opção Microsoft Windows Update), ou, por último, especificar o local manualmente (note que você pode selecionar simultaneamente mais de uma opção). Em nosso caso, recomendamos a última opção, clicando na caixa Procurar.
 
    Após selecionar a procura manual por drivers, você deverá informar ao Windows 98 em qual diretório o driver está realmente localizado (Figura 15.41).
 
 
    Após instalar o driver de vídeo, o W indows 9x precisará reiniciar. Quando o Windows 9x for carregado novamente, confira se o driver de video foi corretamente instalado no Gerenciador de Dispositivos (ver Figura 15.42).

    Esse procedimento de instalação possui um atalho: clicando no icone Vídeo localizado no Painel de Controle ou então clicando com o botão direito sobre a área de trabalho, escolhendo a opção Propriedades do menu que aparecerá. Selecione a guia Configurações e, a seguir, a caixa "Alterar tipo de monitor" (no Windows 95), Propriedades avançadas (no Windows 95 0SR2) ou Avançadas (no Windows 98). No Windows 95, você deverá clicar na caixa Alterar do campo "tipo de adaptador".

 
 
 

Configurando o Vídeo

    Após instalar o driver de vídeo correto no Windows 9x, basta você configurar o vídeo (esse procedimentc é igual para todas as versões do Windows 9x). Para isso. clique no ícone "Vídeo" do Painel de Controle ou então clique com o botão direito sobre a área de trabalho, escolhendo a opção "propriedades" do menu que aparecerá. Selecione a guia "Configurações".

 
     Selecione a resolução que vocë quer usar em "Área de trabalho". A seguir, no campo Paleta , de cores, selecione o maior número possível de cores simultâneas. O vídeo da Figura 15.45 está configurado em 640 x 480 RGB True Color, por exemplo.