domingo, 24 de mayo de 2009

Bloque de control RGB da interfaz VGA

O bloque de control de RGB consta de tres compoñenetes distintas (aínda que moi parecidas), pero teñen unha parte en común. Sen embargo tamén será necesario explicar cada unha por separado:

a) Común ás compoñentes RGB.

Cada unha das compoñentes é a encargada de mandar os píxeles de cor vermella, verde e azul ó conversor D/A. Así temos o dato a representar como entrada e un sinal de 8 bits á saída de cada un dos tres bloques, que será a entrada do conversor (se os 8 bits están a 0, non terá compoñente da core en cuestión, e a medida que aumenta, aumentará a aportación desa cor).

Deste xeito, a parte dos correspondetes marxes nos que o pixel está desactivo (o pórtico frontal ou esquerdo, o traseiro ou dereito e o retorno) tanto para os píxeles horizontais como para os verticais; incluiremos un borde superior e outro inferior (que decidimos que fose de 5 píxeles cada un) e un dereito e outro esquerdo (de 57 píxeles cada un). Así nos nosos bordes, as compoñentes das cores serán nulas.

Destinaremos 460 píxeles para representar os datos (que é o máximo valor que pode tomar a FFT) en vertical e 512 para a representación horizontal (os píxeles correspondentes ós datos, serán descritas con detalle en cada un dos bloques). Pero a parte dos datos irá bordeada pola esquerda e por abaixo por uns eixos (coa mesma lonxitude de píxeles) que terán 4 píxeles de ancho cada un.

Ademáis, dos eixos decidimos incluir letras para indicar a qué se corresponde cada un dos eixos. Así, para o eixo de ordenadas , onde se representa o módulo ó cadrado da FFT, deixamos 13 píxeles dende o eixo cara a esquerda. Pois, en horizonta, | ocupa un píxel, despois hai 2 en negro; un para o punto entre as barras, dous en negro, outro para a seguinte barra |, dous en negro, tres para representar o 2 e dous en negro de separación entre esto e o eixo. En total son 13 píxeles dedicados os caracteres do eixo, e o resultado será: | • | ²

En canto ó eixo de abscisas, queremos representar unha K. Por iso, deixamos 2 píxeles de separación entre o eixo e a letra, e utilizaremos 5 píxeles para representala en canto á súa altura e 4 para o ancho.

Tanto os eixos como as letras son brancas, por iso esta parte é común ás tres compoñentes.

b)Diferencias entre RGB.

Unha vez descrita a parte común ás tres compoñentes, agora imos falar delas unha a unha. As únicas diferencias entre eles se atopan na zona de datos a representar (descontando na zona activa o espacio dos bordes, os eixos e as letras). Nesta zona, pixel_x ten valores entre 71 y 582 e pixel_y varía entre 5 e 464.

Analicemos primeiro a división de cores en horizontal. A orde desta división será Vermello, Laranxa, Amarelo, Verde, Cyan, Azul, Violeta e Maxenta (a segunda metade será simétrica). Se temos 512 píxeles e 16 colores, teremos 32 píxeles por barra. Logo, activaremos o vermello (en primeiro lugar os 8 bits a 1) para a barra Vermella, Laranxa, Amarela, desactivarémolo para o Verde, Cyan e Azul, e activarémolo para o Violeta e o Maxenta (o mesmo para os seus correspondentes simétricos). É dicir, R permanecerá activo dende 71 a 166, inactivo dende 167 ata 262, activo desde 263 ata 390, inactivo dende 391 ata 486 y activo dende 487 ata 582.

Para incluir intensidades de cores, distinguiremos catro intervalos de píxeles en vertical: 5-119, 120-234, 235-349, 350-464. No máis baixo (nivel máis alto das barras) temos as cores a maior intensidade, logo as compoñentes presentes na cor deben estar a nivel máximo (todo uns). Por exemplo, o vermello debe valer máximo para Vermello, Laranxa e Amarelo (en vermello é a única compoñente, en laranxa o máis forte e en amarelo a medias co verde) máximo en Maxenta, y á metade do máximo en violeta (é máis forte o azul). Nos otros cores (Cyan, Azul e Verde) empezará nun valor e irá baixando a medida que subamos á barra. Esto é difícil de aclarar. Pensemos no Cyan, que ten verde e azul a partes iguais. No nivel máximo dea barra (píxeles 5-119), ámbolos dous están ao máximo e o vermello a 0 (de esta forma temos Cyan intenso). Nos posteriores intervalos o vermello vai aumentando, mentres os outros permanecen constantes, o cal equivale a sumarlle branco á cor e restarlle intensidade ou brillo. Pódense seguir razoamentos similares para os demais cores, establecendo os valores que debe ter a compoñente vermella para cada intervalo.

Os razonamentos sobre as compoñentes verde e azul son os mesmos, o único que varían son os números, polo tanto non os repetiremos.

Por último, cabe destacar que todas as asignacións se fan sobre compoñentes auxiliares, debido á lectura en memoria dos datos. En cada ciclo léense os datos do ciclo seguinte para procesalos e asígnanse as compoñentes auxiliares. Desta forma, non afectamos ao píxel que se está representando. Cando termina o ciclo, os valores das compoñentes auxiliares pásanse ás compoñentes reais.



No hay comentarios:

Publicar un comentario