stringtranslate.com

Motorola 6845

Controlador CRT Motorola 6845

El Motorola 6845 , o MC6845 , es un controlador de pantalla que se usó ampliamente en computadoras de 8 bits durante la década de 1980. [1] [2] Originalmente pensado para diseños basados ​​en la CPU Motorola 6800 y con un número de pieza relacionado, se usó más ampliamente junto con varios otros procesadores y se encontró más comúnmente en máquinas basadas en Zilog Z80 y MOS 6502 .

El 6845 no es una solución completa para la visualización por sí solo; la función principal del chip es cronometrar correctamente el acceso a la memoria de la pantalla y calcular la dirección de memoria de la siguiente porción que se va a dibujar. Luego, otros circuitos de la máquina utilizan la dirección proporcionada por el 6845 para obtener el patrón y luego dibujarlo. La implementación de ese hardware depende completamente del diseñador y varía ampliamente entre las máquinas. El 6845 está pensado para pantallas de caracteres, pero también se podría utilizar para gráficos basados ​​en píxeles, con una programación inteligente.

Entre sus usos más conocidos se encuentran las tarjetas de visualización BBC Micro , Amstrad CPC y Videx VideoTerm para Apple II . [1] También forma parte de muchas de las primeras tarjetas adaptadoras gráficas para IBM PC , incluidas MDA , Hercules Graphics Card (HGC), Color Graphics Adapter (CGA) y Plantronics Colorplus . [3] Su funcionalidad fue duplicada y ampliada por circuitos personalizados en los adaptadores de vídeo para PC EGA y VGA .

Diseño

Originalmente diseñado por Hitachi como HD46505 , [4] las versiones fabricadas por Hitachi se encuentran en una amplia variedad de computadoras japonesas, desde Sony, Sharp, Panasonic y Casio. Clonado más tarde como MB89321A por Fujitsu. [5] También se lo conoce como 6845 CRTC o CRTC6845 , que significa " controlador de tubo de rayos catódicos ". Esta versión se utilizó en Apricot PC y Victor 9000 para proporcionar una pantalla monocromática con una resolución de 800x400.

Un clon común de este controlador CRT es el controlador CRT UM6845E de United Microelectronics Corporation (UMC) . Durante la época de los embargos tecnológicos de la Guerra Fría , el 6845 fue clonado en Bulgaria bajo la designación CM607 . El 6845 era muy similar y estaba relacionado con el posterior 6545 fabricado por MOS Technology (Commodore Semiconductor Group) y Rockwell (en dos versiones).

[6]

Descripción general

El chip genera las señales necesarias para interactuar con una pantalla de trama , pero no genera los píxeles reales , aunque sí aporta información sobre el cursor y la supresión de vídeo a las señales de vídeo (intensidad) de los píxeles. Se utiliza para producir una sincronización horizontal y vertical correctamente sincronizada y proporcionar la dirección en la memoria desde la que se debe leer el siguiente píxel o conjunto de píxeles. El proceso de leer ese valor, convertirlo en píxeles y enviarlo a un CRT se deja en manos de otros circuitos. Debido a esto, los sistemas que utilizan el 6845 pueden tener cantidades y valores de colores muy diferentes, o pueden no admitir colores en absoluto. [6]

Se admiten modos de salida entrelazados y no entrelazados, así como un cursor de texto de hardware. La generación de sincronización incluye la generación de señales de borrado de vídeo horizontales y verticales, que se utilizan para condicionar los circuitos de generación de píxeles externos. Además, se proporciona un pestillo interno que, cuando se activa, duplicará y conservará una copia de la dirección de vídeo para que la CPU pueda leerla más tarde. Esto es útil para lápices ópticos y pistolas de luz que pueden funcionar enviando un pulso al 6845 cuando pasa el haz de electrones, lo que permite que un programa en ejecución lea la ubicación a la que se apuntó. Debido a esta característica, la mayoría de los adaptadores de vídeo de ordenador que utilizan un 6845 incluyen una interfaz de lápiz óptico, aunque normalmente era un conector interno en la propia placa, no en el exterior del ordenador, y normalmente no estaba documentado en el manual del usuario.

Como todos los aspectos de la sincronización del video son programables, una sola máquina puede cambiar entre sincronizaciones de 50 Hz y 60 Hz en el software (o cualquier otra frecuencia de actualización dentro de los límites del chip). El 6845 se puede utilizar para controlar monitores o cualquier otra pantalla rasterizada.

Internos

Distribución de pines del MC6845.

El chip tiene un total de 18 registros de 8 bits que controlan todos los aspectos de la sincronización del vídeo. Solo dos direcciones están expuestas a los componentes externos: una para seleccionar qué registro interno se leerá o escribirá y otra para acceder a ese registro. [7]

El 6845 está diseñado para pantallas basadas en caracteres. Cada dirección que genera se compone de dos partes: una dirección de carácter de 14 bits y una dirección de fila de 5 bits. La dirección de carácter aumenta linealmente. Cuando el chip indica sincronización horizontal, aumenta la dirección de fila. Si la dirección de fila no es igual al número de filas por carácter establecido programáticamente, la dirección de carácter se restablece al valor que tenía al comienzo de la línea de escaneo que se acaba de completar. De lo contrario, la dirección de fila se restablece a cero y la dirección de memoria continúa aumentando linealmente. Esto hace que se vuelva a leer la misma secuencia de valores de caracteres de la memoria para cada línea de trama de cada fila de caracteres, antes de que el 6845 avance la dirección de memoria a la siguiente fila de caracteres y repita el mismo patrón.

Si la dirección de carácter se utiliza para buscar una referencia de carácter en la RAM y la dirección de fila para indexar una tabla de gráficos de caracteres en la ROM, se construye una pantalla de modo de texto normal . La referencia de carácter leída desde la memoria debe combinarse con la dirección de fila para formar la dirección para la ROM de gráficos de caracteres, con la referencia de carácter seleccionando un conjunto de patrones de líneas de exploración que forman un carácter y la dirección de fila indexando en ese conjunto para seleccionar una línea de exploración. En otras palabras, la dirección de ROM se divide en dos partes para usar la ROM como una matriz bidimensional: la primera dimensión selecciona un carácter y la segunda selecciona una fila del patrón gráfico de ese carácter.

Sin embargo, el 6845 dejó al diseñador la libertad de enrutar los bits de la memoria y las direcciones de fila a la RAM de video como mejor le pareciera. Por esta razón, la palabra a la que se dirige el 6845 no tiene por qué ser igual a un píxel o a un carácter. En el modo alfanumérico (texto) CGA, hay dos bytes por carácter, a los que el 6845 accede secuencialmente (el primer byte es un byte de código de carácter y el segundo es un byte de atributo de carácter) y la placa utiliza el contenido de los bytes, junto con la dirección de fila, para leer los datos de fuente de la ROM y generar los píxeles.

Se podría utilizar un enrutamiento diferente de los bits, omitiendo la ROM de caracteres, para emular un buffer de trama. Debido a su limitación de 128 líneas, el 6845 no puede proporcionar buffers de trama lineales grandes. Una solución fue combinar la dirección de fila y la dirección de carácter para proporcionar líneas de exploración lineales dentro de un buffer no lineal. Esto tiene las ventajas de una programación más sencilla para la visualización de caracteres no definidos y un desplazamiento horizontal suave y sencillo, pero puede impedir el desplazamiento vertical suave. Por ejemplo, el modo gráfico IBM CGA utiliza un tamaño de palabra de un byte, y cada palabra representa cuatro u ocho píxeles (en los modos gráficos de resolución media o alta respectivamente); el 6845 está configurado para una altura de carácter de 2 píxeles y el bit de dirección de fila RA0 se utiliza para el bit 13 de la dirección del buffer de trama. De esta manera, se pueden utilizar 200 píxeles verticales a pesar de la limitación de 128 líneas. El modo gráfico en otros sistemas usaba un truco similar: en la tarjeta gráfica Hercules, los bits 12-13 de la dirección del búfer de cuadro provenían de los bits de dirección de fila RA0-RA1, proporcionando una resolución vertical de 348 píxeles desde 87 "líneas" de cuatro píxeles de alto; el Amstrad CPC usó una altura de línea de 8 al igual que en el modo de texto, asignando la dirección de fila RA0-RA2 a la dirección de memoria MA11-MA13 y la dirección de carácter CA0-CA10 a la dirección de memoria MA0-MA10.

Estos modos de funcionamiento eran posibles porque el 6845 no realizaba ningún tipo de almacenamiento en búfer de datos de caracteres. En los años 70, 80 y, en menor medida, en los 90, la memoria era cara, especialmente la memoria rápida, y esto era una preocupación importante. En los años 70 y principios y mediados de los 80, las densidades de circuitos de chip tampoco eran muy altas, y poner un búfer de caracteres de 80 bytes o más en un chip como el 6845 podría haber agrandado la matriz del chip en un 50-100%, lo que a su vez lo encarecía varias veces debido al crecimiento exponencial de las tasas de defectos del chip y la consiguiente disminución del rendimiento de producción con el tamaño de la matriz.

Por otra parte, el 6845 obligaba a sus usuarios a proporcionar suficiente ancho de banda de memoria para soportar la relectura de datos en cada línea. Si un carácter ocupa una "palabra" en el búfer de vídeo, una pantalla de l líneas y c columnas de caracteres con s líneas de exploración por carácter requiere l × c palabras de memoria para representar una pantalla completa de caracteres, pero lleva s veces esa cantidad de accesos a la memoria completar un ciclo de actualización: cada línea de palabras de caracteres se lee repetidamente s veces antes de que se lea la siguiente línea. Esto significa que las pantallas de caracteres que utilizan el 6845 requieren un ancho de banda de memoria alto del orden del ancho de banda requerido para pantallas gráficas direccionables en todos los puntos de la misma resolución.

Un controlador de pantalla de video diferente que almacena en búfer una línea completa de datos de caracteres internamente puede evitar esta lectura repetida de cada línea de caracteres desde la RAM del búfer de pantalla, reduciendo el ancho de banda de memoria requerido y permitiendo que se utilicen chips de memoria más lentos y menos costosos, más tiempo para que una CPU del sistema acceda a la memoria, o una combinación de ambos. Agregar un búfer de caracteres de este tipo al 6845 se consideró que no era un enfoque rentable cuando se presentó el chip; sin embargo, solo unos años después, el chip VIC-II utilizado en el Commodore 64 incluyó un caché de línea de caracteres de este tipo.

Limitaciones

Utilizando el rango completo de direcciones RA0-RA4:CA0-CA13, el 6845 puede direccionar 2 14+5 = 524.288 palabras de memoria. Una palabra puede ser cualquier número de bits elegidos por el diseñador del sistema como ancho de memoria: aunque el número de direcciones únicas que el 6845 puede direccionar está limitado a 524.288 , la cantidad de memoria que el 6845 puede direccionar puede ser significativamente mayor de lo que se podría suponer porque el 6845 no impone ningún límite en el tamaño de cada ubicación de memoria que direcciona. Si el tamaño de palabra es de un byte, como suele ser el caso, el 6845 puede direccionar 512 KiB . Si el tamaño de palabra es de 32 bits, por ejemplo, para gráficos en color de 32 bits con un píxel por palabra, entonces el 6845 puede direccionar 2048 KiB; para palabras de 64 bits, puede direccionar el doble. Estos límites surgen de la combinación del 6845 y el diseño de la memoria externa conectada a él, no solo del 6845.

Buffers de cuadros lineales

Como se describió anteriormente, el 6845 no puede proporcionar, por lo general, grandes búferes de trama lineales. Un diseño podría utilizar únicamente direccionamiento de caracteres de 14 bits y establecer la cantidad de líneas por carácter en 1, pero estaría restringido a 128 líneas y 16 KB de memoria direccionable.

Diferencias con el 6545

Aunque son abrumadoramente compatibles, existen algunas pequeñas variaciones entre el 6845 y el 6545.

La mayor diferencia es que el 6545 puede configurarse para que tenga acceso exclusivo al bus de direcciones de la memoria de video. Se incluyen dos registros adicionales para configurar cualquier dirección que la CPU desee leer y el chip alterna entre la salida de direcciones para la generación de la pantalla y la pantalla configurada para el acceso de la CPU. [8]

Los cambios menores son que la tecnología MOS y una variación del Rockwell 6545 carecen de soporte de salida entrelazada y todos los 6545 incluyen una desviación de dirección opcional, que retrasa la activación de la pantalla durante un ciclo de carácter si está configurada. Esta segunda característica se incorporó en variaciones posteriores del Motorola 6845. El 6545 puede configurarse para funcionar en modo lineal de 14 bits utilizando un bit de estado. En el 6845, lo mismo requiere un ajuste de la altura de los caracteres. [9]

Engaños

El 6845 lee la dirección de inicio de su pantalla una vez por cuadro . Sin embargo, si los valores de sincronización internos del chip se modifican en el momento correcto, se puede hacer que se prepare para un nuevo cuadro sin finalizar el actual, lo que crea una interrupción no continua en las direcciones generadas a mitad de la pantalla. Esto se usa comúnmente en demostraciones y, mucho menos frecuentemente, en juegos para proporcionar un área móvil de la pantalla (generalmente el campo de juego) y una estática (generalmente una pantalla de estado).

El desplazamiento vertical parece limitado porque solo se puede configurar la dirección de inicio del carácter y la dirección de la fila siempre se pone a cero al inicio del cuadro, pero al ajustar los tiempos de borde es posible cambiar la posición en la que se muestra el búfer de cuadros en la pantalla rasterizada para incrementos entre caracteres completos. Al dibujar píxeles en blanco en los bordes de la pantalla, esto se puede hacer invisible para el usuario, creando solo la ilusión de un desplazamiento vertical suave.

Véase también

Referencias

  1. ^ ab "El controlador de tubo de rayos catódicos 6845 (CRTC)". www.tinyvga.com . Consultado el 18 de noviembre de 2022 .
  2. ^ "Diferencias de los modelos CRTC". www.6502.org . Consultado el 18 de noviembre de 2022 .
  3. ^ PC Mag Jul 1983 , p. 435, en Google Books
  4. ^ "Hojas de datos-hitachi:hd4650" (PDF) . Consultado el 22 de febrero de 2024 .
  5. ^ "Archivo de hojas de datos: Hoja de datos del MB89321AP de Fujitsu". Motor de búsqueda de archivos de hojas de datos . Consultado el 22 de febrero de 2024 .
  6. ^ ab "El controlador de tubo de rayos catódicos 6845 (CRTC)". www.tinyvga.com . Consultado el 18 de noviembre de 2022 .
  7. ^ "El controlador de tubo de rayos catódicos 6845 (CRTC)". 28 de enero de 2006. Consultado el 22 de febrero de 2024 .
  8. ^ "Diferencias de los modelos CRTC". www.6502.org . Consultado el 18 de noviembre de 2022 .
  9. ^ Fachat, André (2013-11-02). «Diferencias de los modelos CRTC». 6502.org . Consultado el 22 de febrero de 2024 .

Enlaces externos