El Motorola 6845 , o MC6845 , era un controlador de pantalla que se usaba ampliamente en computadoras de 8 bits durante la década de 1980. Originalmente diseñado para diseños basados en la CPU Motorola 6800 y con un número de pieza relacionado, se usó más ampliamente junto con otros procesadores y se encontró con mayor frecuencia en máquinas basadas en Zilog Z80 y MOS 6502 .
El 6845 no es una solución de pantalla completa por sí solo; La función principal del chip es cronometrar adecuadamente el acceso a la memoria de la pantalla y calcular la dirección de memoria de la siguiente porción que se extraerá. Otros circuitos de la máquina utilizan la dirección proporcionada por el 6845 para buscar el patrón y luego dibujarlo. La implementación de ese hardware depende totalmente del diseñador y varía ampliamente entre las máquinas. El 6845 está diseñado para pantallas de caracteres, pero también podría usarse 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 . También es parte de muchas de las primeras tarjetas adaptadoras de gráficos para IBM PC , incluidas la MDA , la tarjeta gráfica Hercules (HGC) y el adaptador de gráficos en color (CGA). Su funcionalidad se duplicó y amplió mediante circuitos personalizados en los adaptadores de video para PC EGA y VGA .
Originalmente diseñado por Hitachi como el HD46505 , las versiones construidas por Hitachi se encuentran en una amplia variedad de computadoras japonesas, de Sony, Sharp, Panasonic y Casio. También se conoce como 6845 CRTC o CRTC6845 , que significa " controlador de tubo de rayos catódicos ".
Un clon común de este controlador CRT es el controlador CRT UM6845E de United Microelectronics Corporation (UMC) .
Durante la época de los embargos de tecnología de la guerra fría, el 6845 fue clonado en Bulgaria con la designación CM607 .
Descripción general
El chip genera las señales necesarias para interactuar con una pantalla ráster , pero no genera los píxeles reales , aunque sí aporta información de supresión de vídeo y cursor a las señales de vídeo (intensidad) de píxeles. Se utiliza para producir una sincronización horizontal y vertical sincronizada correctamente 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 a otros circuitos. Debido a esto, los sistemas que utilizan el 6845 pueden tener números y valores de colores muy diferentes, o pueden no admitir el color en absoluto.
Entrelazado modos de salida no entrelazadas y son compatibles, como es un cursor de texto hardware. La generación de sincronización incluye la generación de señales de supresión de video horizontales y verticales, que se utilizan para acondicionar los circuitos externos de generación de píxeles. Además, se proporciona un pestillo interno que, cuando se activa, duplicará y retendrá una copia de la dirección de video para que la CPU pueda leerla más tarde. Esto es útil para bolígrafos 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 vuelva a leer la ubicación a la que se apuntó. Debido a esta característica, la mayoría de los adaptadores de video de computadora que usaban un 6845 incluían una interfaz de lápiz de luz, aunque generalmente era un conector interno en la placa misma, no en el exterior de la computadora, y generalmente no estaba documentado en el manual del usuario.
Debido a que todos los aspectos de la temporización de video son programables, una sola máquina puede cambiar entre las temporizaciones NTSC y PAL en el software. El 6845 se puede utilizar para controlar monitores o cualquier otra pantalla de trama.
Internos
El chip tiene un total de 18 registros de 8 bits que controlan todos los aspectos de los tiempos de video. Solo dos direcciones están expuestas a componentes externos: una para seleccionar en qué registro interno se debe leer o escribir y otra para acceder a ese registro.
El 6845 está diseñado para pantallas basadas en caracteres. Cada dirección que genera se compone de dos partes: una dirección de caracteres de 14 bits y una dirección de fila de 5 bits. Usando el rango de direcciones completo RA0-RA4: CA0-CA13, el 6845 puede direccionar 2 14 + 5 = 524,288 palabras de memoria, donde una palabra puede ser cualquier número de bits elegido por el diseñador del sistema como ancho de memoria. Si el tamaño de la palabra es de un byte, como suele ser el caso, el 6845 puede direccionar 512 KiB . Si el tamaño de la 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 abordar 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. Aunque el número de direcciones únicas que puede direccionar el 6845 está limitado a 524,288 , la cantidad de memoria que puede direccionar el 6845 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 a la que se dirige.
También es significativo que cada palabra dirigida por el 6845 no tiene que ser igual a un píxel o un carácter. Como ejemplo, considere el uso del 6845 en IBM CGA, donde el tamaño de la palabra es un byte y cada palabra representa cuatro u ocho píxeles en los modos gráficos de resolución media o alta, respectivamente, o medio carácter. En el modo alfanumérico (texto) CGA, hay dos bytes por carácter, a los que accede secuencialmente el 6845; el primer byte es un byte de código de carácter y el segundo byte es un byte de atributo de carácter.
La dirección del 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 mediante programación, entonces la dirección de carácter se restablece al valor que tenía al comienzo de la línea de exploración 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. Por lo tanto, si un carácter ocupa una "palabra" en el búfer de video, una visualización 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 toma s veces ese muchos accesos a memoria a un ciclo completo de actualización: cada línea de las palabras de caracteres se lee repetidamente s veces antes de leer la siguiente línea. Esto significa que las pantallas de caracteres que utilizan el 6845, en comparación con las pantallas de gráficos direccionables en todos los puntos de la misma resolución, requieren mucha menos memoria pero aún requieren un gran ancho de banda de memoria del orden del ancho de banda requerido para los gráficos. 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 de la memoria RAM del búfer de pantalla, reduciendo el ancho de banda de memoria requerido y permitiendo que se usen 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.
En los años setenta, ochenta y, en menor medida, en los noventa, la memoria era cara, la memoria rápida lo era especialmente, y esta era una preocupación importante. En la década de 1970 y principios y mediados de la década de 1980, las densidades de los circuitos de los chips tampoco eran muy altas, y colocar 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 hizo que es más caro unas pocas veces ese factor debido al crecimiento exponencial de las tasas de defectos de viruta y la consiguiente disminución del rendimiento de producción con el tamaño de la matriz. Por lo tanto, agregar un búfer de caracteres de este tipo al 6845 no fue un enfoque rentable cuando se introdujo el chip. Ahora que la memoria es muy económica, incluye memoria rápida, hay poca motivación para reducir el ancho de banda de memoria requerido por un controlador de pantalla de video, por lo que esto ya no es una consideración de ingeniería importante. Al mismo tiempo, las densidades de los chips se han disparado, lo que en realidad es la razón principal de los bajos precios de la memoria en la actualidad, y muchos chips utilizados en las computadoras tienen grandes búferes y cachés; un chip como el 6845 diseñado hoy podría usar fácilmente un caché de línea de caracteres para evitar leer y volver a leer caracteres para cada línea de escaneo de video dentro de una línea de carácter. Para los dispositivos portátiles de baja potencia, que serían los principales que probablemente usarían pantallas de caracteres ahora, la potencia utilizada para el acceso a la memoria de gran ancho de banda sería una buena razón para reducir el ancho de banda de la memoria para la actualización de la pantalla mediante el uso de un caché de línea en el controlador de pantalla.
Si la dirección de carácter se usa 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 en modo de texto ordinario . La referencia de carácter leída de 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ínea de exploración que forma un carácter y la dirección de fila indexándose en ese conjunto para seleccionar una exploración línea. En otras palabras, la dirección 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.
Búferes de marcos lineales
Como se describió anteriormente, el 6845 normalmente no es capaz de proporcionar grandes búferes de tramas lineales. Un diseño podría usar solo la dirección de caracteres de 14 bits y establecer el número de filas por carácter en 1, pero estaría restringido a 16 kB de memoria direccionable.
Se encuentra una solución en Amstrad CPC , que combina la dirección de fila y la dirección de carácter para proporcionar líneas de exploración lineales dentro de un búfer no lineal. Asigna 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. Esto tiene las ventajas de una programación más sencilla para la visualización sin caracteres y un desplazamiento horizontal suave y sencillo, pero puede impedir el desplazamiento vertical suave.
Diferencias con el 6545
Aunque es abrumadoramente compatible, existe una serie de 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 para la memoria de video. Se incluyen dos registros adicionales para configurar cualquier dirección que la CPU desee leer y el chip alterna entre direcciones de salida para la generación de pantallas y la pantalla configurada para el acceso a la CPU.
Los cambios más pequeños son que la tecnología MOS y una variación del Rockwell 6545 carecen de soporte de salida entrelazada y todos los 6545 incluyen un sesgo de dirección opcional, que retrasa la habilitación de visualización para un ciclo de carácter si se establece. Esta segunda característica se incorporó a variaciones posteriores del Motorola 6845.
El 6545 se puede configurar para que funcione en modo lineal de 14 bits utilizando un bit de estado. En el 6845, lo mismo requiere un ajuste de la altura del carácter.
Trucos
El 6845 lee la dirección de inicio de su pantalla una vez por cuadro . Sin embargo, si los valores de temporización internos en el chip se alteran en el momento correcto, se puede preparar para una nueva trama sin finalizar la actual, creando una interrupción no continua en las direcciones generadas a la mitad de la pantalla. Esto se usa comúnmente en demostraciones y con mucha menos frecuencia 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 restringido porque solo se puede establecer la dirección de inicio del carácter y la dirección de la fila siempre se pone a cero al inicio del marco, pero al ajustar los tiempos de los bordes es posible cambiar la posición en la que se muestra el búfer del marco en la pantalla ráster para incrementos entre caracteres completos . Con el dibujo de 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.
Ver también
- Motorola 6847 , un completo generador de pantallas de video
- Lista de computadoras domésticas por hardware de video
enlaces externos
- Documentación HTML de los registros 6845
- TIF comprimidos de las hojas de datos 6845
- Diferencias de los modelos CRTC
- Nota de aplicación de Synertek 6545
- Calculadora de temporización MC6845, calcular valores de registro