Página siguiente Página anterior Índice general

15. Representando gráficamente las capacidades del monitor.

Para dibujar el diagrama de un modo del monitor, usted necesitará el paquete gnuplot (un lenguaje de representación gráfica gratuito para sistemas operativos UNIX) y la herramienta modeplot, un script para gnuplot que representa gráficamente el diagrama de las características de su monitor, introducidas como opciones en línea de comandos.

Esta es una copia de modeplot:

#!/bin/sh
#
# modeplot -- genera un gráfico en modo X de los modos de monitor disponibles
#
# Utilice `modeplot -?' para ver las opciones de control.
#
# ($Id: video-modes.sgml,v 1.5 1998/02/21 02:23:11 esr Exp $)

# Descripción del monitor. Ancho de banda en MHz, frecuencias horizontales en KHz
# y verticales en Hz.
TITLE="Viewsonic 21PS"
BANDWIDTH=185
MINHSF=31
MAXHSF=85
MINVSF=50
MAXVSF=160
ASPECT="4/3"
vesa=72.5       # Mínima velocidad de refresco recomendada por VESA

while [ "$1" != "" ] 
do
        case $1 in
        -t) TITLE="$2"; shift;; 
        -b) BANDWIDTH="$2"; shift;; 
        -h) MINHSF="$2" MAXHSF="$3"; shift; shift;; 
        -v) MINVSF="$2" MAXVSF="$3"; shift; shift;; 
        -a) ASPECT="$2"; shift;; 
        -g) GNUOPTS="$2"; shift;; 
        -?) cat <<EOF
opciones de control de modeplot:

-t "<descripción>"      nombre del monitor         por defecto: "Viewsonic 21PS" 
-b <nn>                ancho de banda en MHz      por defecto: 185 
-h <min> <max>      FSH mín y máx (KHz)        por defecto: 31 85
-v <min> <max>      FSV mín y máx (Hz)         por defecto: 50 160
-a <razón de aspecto>  razón ancho/alto           por defecto: 4/3 
-g "<opciones>"        opciones para gnuplot

Las opciones -b, -h y -v son obligatorias, -a, -t, -g son opcionales.
Uste puede utilizar -g para redireccionar la salida de gnuplot para que
el gráfico de modo se imprima en su impresora.  Vea gnuplot(1) para más
detalles.

La utilidad modeplot fue creada por Eric S. Raymond <esr@thyrsus.com> basada
en el análisis y código de Martin Lottermoser <Martin.Lottermoser@mch.sni.de>.
La traducción de esta utilidad al castellano fue realizada por 
David Marín Carreño <davefx@bigfoot.com>.

Esta es la $Revision: 1.5 $ de modeplot.
EOF
                exit;;
        esac
        shift
done

gnuplot $GNUOPTS <<EOF
set title "Gráfico de modos de $TITLE"

# Números mágicos. Desafortunadamente, el dibujo es muy sensible a los cambios
# que se realicen en estos, y pueden hacer que no se represente la realidad
# en algunos monitores.  Necesitamos fijar unos valores para conseguir 
# incluso una aproximación del diagrama de modos.  Estos han salido de
# investigar montones de valores en la base de datos ModeDB.
F1 = 1.30       # factor para convertir la resolución horizontal en anchura de imagen
F2 = 1.05       # factor para convertir la resolución vertical en altura de imagen

# Definiciones de funciones (la multiplicación por 1.0 fuerza los cálculos en reales)
ac = (1.0*$ASPECT)*F1/F2
refresh(hsync, dcf) = ac * (hsync**2)/(1.0*dcf)
dotclock(hsync, rr) = ac * (hsync**2)/(1.0*rr)
resolution(hv, dcf) = dcf * (10**6)/(hv * F1 * F2)

# Pone etiquetas en los ejes
set xlabel 'DCF (MHz)'
set ylabel 'RR (Hz)' 6  # La coloca justo sobre el eje Y

# Genera el diagrama
set grid
set label "AB" at $BANDWIDTH+1, ($MAXVSF + $MINVSF) / 2 left
set arrow from $BANDWIDTH, $MINVSF to $BANDWIDTH, $MAXVSF nohead
set label "FSV máx" at 1, $MAXVSF-1.5
set arrow from 0, $MAXVSF to $BANDWIDTH, $MAXVSF nohead
set label "FSV mín" at 1, $MINVSF-1.5
set arrow from 0, $MINVSF to $BANDWIDTH, $MINVSF nohead
set label "FSH mín" at dotclock($MINHSF, $MAXVSF+17), $MAXVSF + 17 right
set label "FSH máx" at dotclock($MAXHSF, $MAXVSF+17), $MAXVSF + 17 right
set label "VESA $vesa" at 1, $vesa-1.5
set arrow from 0, $vesa to $BANDWIDTH, $vesa nohead # style -1
plot [dcf=0:1.1*$BANDWIDTH] [$MINVSF-10:$MAXVSF+20] \
  refresh($MINHSF, dcf) notitle with lines 1, \
  refresh($MAXHSF, dcf) notitle with lines 1, \
  resolution(640*480,   dcf) title "640x480  " with points 2, \
  resolution(800*600,   dcf) title "800x600  " with points 3, \
  resolution(1024*768,  dcf) title "1024x768 " with points 4, \
  resolution(1280*1024, dcf) title "1280x1024" with points 5, \
  resolution(1600*1280, dcf) title "1600x1200" with points 6

pause 9999
EOF

Una vez que sepa que tiene modeplot y el paquete gnuplot en su máquina, necesitará saber las siguientes características del monitor:

El programa de dibujo necesitará asumir algunos datos que no tienen por qué ser correctos. Este es el porqué de que el gráfico resultante es sólo una descripción grosso modo. Estos datos asumidos son:

  1. Todas las resoluciones tienen una razón de aspecto fija RA = RH/RV. Las resoluciones estándar tienen RA = 4/3 o RA = 5/4. El programa modeplot asume 4/3 por defecto, pero usted puede hacer que ésto no sea así.
  2. Para los modos considerados, las longitudes de imagen horizontales y verticales son múltiplos fijos de las resoluciones horizontal y vertical, respectivamente:
            LIH = F1 * RH
            LIV = F2 * RV
    

A ojo de buen cubero, tome F1 = 1,30 y F2 = 1,05 (vea frame "Calculando tamaños de imagen").

Ahora tome una frecuencia de sincronización particular, FSH. Asumiendo los datos que hemos expuesto, cada valor de frecuencia de píxel FRTV ya determina la tasa de refresco TR, esto es: para cada valor de FSH hay una función TR(FRTV). Esta función está definida así:

La tasa de refresco es igual a la velocidad de píxel dividida por el producto de los tamaños de imagen:

        TR = FRTV / (LIH * LIV)         (*)

Por otra parte, la longitud de imagen horizontal es igual a la velocidad de píxel dividida por la frecuencia horizontal de sincronización:

        LIH = FRTV / FSH                        (**)

LIV puede hallarse a partir de LIH con los datos asumidos:

        LIV = F2 * RV
            = F2 * (RH / RA)
            = (F2/F1) * LIH / RA        (***)

Sustituyendo (**) y (***) en (*) obtenemos:

        TR = FRTV / ((F2/F1) * LIH^2 / RA)
           = (F1/F2) * RA * FRTV * (FSH/FRTV)^2
           = (F1/F2) * RA * FSH^2 / FRTV

Para unas FSH, F1, F2 y RA fijas, esta es una hipérbola en nuestro gráfico. Dibujando sendas curvas para los valores mínimo y máximo de la frecuencia de sincronización horizontal, hemos obtenido los dos bordes restantes de la región permitida.

Las líneas rectas que cruzan la región hábil representan resoluciones particulares. Esto está basado en (*) y en lo segundo que hemos asumido:

        TR = FRTV / (LIH * LIV) = FRTV / (F1 * RH * F2 * RV)

Dibujando esas líneas para todas las resolucines en las que se está interesado, se puede averiguar cuáles son las relaciones posibles entre resolución, frecuencia de píxel y tasa de refresco de las que el monitor es capaz, pero ello depende de la segunda ecuación asumida.

La herramienta modeplot le proporciona de una manera fácil de hacer esto. Teclee modeplot -? para ver las opciones de control. Una orden típica tendría este aspecto:

        modeplot -t "Swan SW617" -b 85 -v 50 90 -h 31 58

La opción -b especifica el ancho de banda de vídeo; -v y -h establecen los rangos de frecuencia vertical y horizontal.

Cuando lea la salida de modeplot, siempre recuerde que sólo da una descripción aproximada. Por ejemplo, no tiene en cuenta las limitaciones de LIH resultantes de una anchura mínima requerida para el pulso de sincronización, y solo puede ser preciso hasta donde llegan las condiciones asumidas. Por lo tanto, no es en absoluto un sustituto para unos cálculos detallados (que requieren algo de "magia oscura") tal y como se han desarrollado en Resumiendo. Sin embargo, podría mostrarle de manera más intuitiva qué es posible y qué factores se involucran.


Página siguiente Página anterior Índice general