Articulo de referencia

Microsistemas Americanos S2000

8-bit (ROM)"},"address-width":{"wt":"6-bit (RAM), 13-bit (ROM)"},"virtual-width":{"wt":""},"cpuid":{"wt":""},"code":{"wt":""},"application":{"wt":"microcontroller"},"predecessor...

La familia S2000 de microcontroladores especializados de 4 bits fue introducida por American Microsystems Inc. (AMI) en la década de 1970. AMI lo denominó "controlador de pantalla" y estaba destinado a aplicaciones de control industrial , sistemas de climatización , electrodomésticos y juegos electrónicos sencillos . El sistema ofrecía soporte directo para la lectura de teclados y la visualización en pantallas de siete segmentos .

El modelo original combinaba la CPU, 1024 bytes de ROM y 64 nibbles de RAM en un encapsulado DIP ( Dual In-line Package ) de 40 pines . También incluía un controlador de pantalla de siete segmentos y, opcionalmente, la electrónica de alto voltaje necesaria para controlar directamente una pantalla LED o fluorescente de vacío (en el modelo S2000A), así como la entrada de teclado. Los modelos posteriores aumentaron la memoria interna y añadieron nuevas instrucciones.

El S2000 es históricamente notable por ser el primer sistema completo disponible a un precio inferior a $10; en lotes de 50.000 o más, el S2000 costaba $9,98. [ 2 ]

Diseño

El S2000 era típico de una clase de microcontroladores altamente especializados diseñados para usarse en controladores industriales y tareas similares. En aquel entonces, a veces se les conocía como "controladores de pantalla", ya que incluían lógica específica para su uso con una pantalla de siete segmentos . Otro ejemplo de la misma clase de procesador es el Essex SX 200. [ 3 ] EDN se refería a estos como "similares a calculadoras" debido a su parecido con los conjuntos de chips de calculadoras electrónicas contemporáneas . [ 4 ]

El S2000 incluye un puerto de entrada diseñado para usarse con un teclado capacitivo de hasta 16 teclas. La salida se realiza principalmente a través de un puerto dedicado para pantalla de siete segmentos , que opcionalmente puede incluir el hardware de conmutación adicional necesario para controlar una pantalla LED o fluorescente de vacío . [ 5 ] Otra característica es un  temporizador de 50/60 Hz que puede usarse para controlar sistemas externos o internos. [ 6 ]

El programa del cliente se grabó en una ROM de 1024 bytes integrada en el chip  . La CPU cuenta con una unidad aritmético-lógica (ALU) de 4 bits con un acumulador y un registro de índice que apunta a la RAM, y ejecuta las instrucciones de 8 bits desde la ROM. La ALU podía operar con datos decimales codificados en binario , lo que facilitaba enormemente el control de pantallas sencillas. [ 5 ]

Hay 51 instrucciones, incluyendo 6 instrucciones de memoria, 14 de prueba y bifurcación, 12 matemáticas y lógicas, 8 de entrada/salida y 10 operaciones de registro. [ 7 ] Todas las instrucciones son de un byte; no hay instrucciones de dos bytes. Se implementa una pila de llamadas de tres niveles en el chip. Los 64 nibbles de SRAM del sistema se utilizan principalmente como registros. A diferencia de dispositivos similares, el S2000 está empaquetado en un DIP de 40 pines, lo que le permitió tener 29 pines de entrada/salida , incluyendo un bus de direcciones de 13 bits y un bus de datos de 8 bits , lo que permite expandir la memoria externamente. [ 5 ] 

Fabricado con un proceso NMOS (entonces moderno) , era más rápido y económico que los sistemas de la competencia basados ​​en el antiguo proceso PMOS . El S2000 se vendía a 3,50 dólares en lotes de 100 unidades, y resultaba más barato en cantidades mayores. Funcionaba a una velocidad relativamente rápida con  una entrada de reloj de 900 kHz, con la mayoría de las instrucciones completándose en 4,5  μs y solo las dos instrucciones de salto a subrutina requiriendo 8  μs, lo que le permitía un rendimiento similar al de microprocesadores "completos" contemporáneos como el MOS 6502. El uso de NMOS también significaba que podía funcionar con una sola  fuente de alimentación de 5 V, pero el S2000 fue diseñado específicamente para alimentarse con una batería común de 9 voltios , con un consumo típico de 28  mA. [ 5 ]

Conjunto de instrucciones

El S2000 está diseñado para tener un código muy compacto. Todas las instrucciones ocupan un byte. Las series posteriores S2200/S2400 añadieron algunas instrucciones de dos bytes, pero las más utilizadas ocupan un byte.

Como todas las instrucciones son de un byte, el salto incondicional (JMP) y la llamada (JMS) están limitados a 6 bits. JMP puede acceder a cualquiera de las 64 ubicaciones en la página actual. JMS puede acceder a cualquiera de las 64 ubicaciones en la página de subrutina (página 15). Si alguna de estas instrucciones debe acceder a otra página, se agrega un prefijo PP , expandiendo el JMP o JMS subsiguiente a 10 bits o las 1024 ubicaciones del banco actual. Si alguna de estas instrucciones debe acceder a otro banco fuera del banco actual, se agrega un segundo prefijo PP, expandiendo el JMP o JMS subsiguiente a 13 bits o 8192 ubicaciones. La pila solo almacena los 10 bits inferiores del contador de programa, por lo que no son posibles los retornos (RT/RTS) a un banco diferente.

Algunas características del S2000 que se pueden utilizar para hacer que el código objeto sea más compacto son:

  • Se pueden apilar varias instrucciones LAI (carga inmediata del acumulador) en serie. Solo se ejecutará la primera. Las instrucciones LAI subsiguientes se ejecutarán como NOP . Esto permite múltiples puntos de entrada con diferentes valores de acumulador para una rutina compartida.
  • Se pueden apilar en serie varias instrucciones LBE, LBEP, LBF y LBZ (carga B). Solo se ejecutará la primera instrucción LBx. Las instrucciones LBx subsiguientes se ejecutarán como NOP. Esto permite múltiples puntos de entrada con diferentes valores de B para una rutina compartida.
  • La instrucción LBZ puede cargar el registro B de seis bits con los valores inmediatos 0x00, 0x10, 0x20 y 0x30. La instrucción complementaria LBF puede cargar el registro B de seis bits con los valores inmediatos 0x0F, 0x1F, 0x2F y 0x3F. Estas ocho ubicaciones de memoria son las de más fácil acceso.
  • La instrucción de llamada, JMS, es una bifurcación de subrutina de un solo byte que solo puede acceder a los 64 bytes de la página de subrutinas, página 15. Para llamar a una subrutina en cualquier otra página, se requiere el prefijo PP.
  • El registro B puede utilizarse para apuntar a hasta cuatro cadenas de RAM con una sobrecarga mínima. Las instrucciones de acceso a memoria LAM, XC, XCI y XCD pueden realizar una operación OR exclusiva con los dos bits menos significativos de BU y un valor inmediato de dos bits. Esto permite que la porción de página de B (BU) se cambie a una de las otras cadenas de dígitos que comparten la misma dirección de dígito (BL).
  • La porción del registro BL puede usarse simultáneamente como puntero de memoria y contador de bucle. La instrucción XCI se omitirá si BL, después de incrementarse, desborda a cero, continuando así el bucle. De igual manera, la instrucción XCD se omitirá si BL, después de decrementarse, desborda a 15 (decimal).

Código de ejemplo

El siguiente código fuente en lenguaje ensamblador corresponde a tres subrutinas ubicadas en la página 15, denominadas copy8, copy6 y copy16. Copy8 copia ocho dígitos de la página 2, posición 8 (0x28), a la página 3, posición 8 (0x38). Copy6 copia seis dígitos de la página 2, posición 10 (0x2A), a la página 3, posición 10 (0x3A). Copy16 copia dieciséis dígitos de la página 3, posición 0 (0x30), a la página 2, posición 0 (0x20). Estas subrutinas demuestran algunas características inusuales del conjunto de instrucciones:

  • Múltiples instrucciones LAI en serie que crean múltiples puntos de entrada
  • Instrucciones LBE y LBZ en serie que crean múltiples puntos de entrada.
  • LAM realiza una operación XOR con BU para que B se invierta al destino y XCI invierte B de nuevo al origen.
  • BL comparte las funciones de puntero y contador de bucle mediante la función skip en XCI.
  • Salto de un solo byte, JMP

Cabe destacar que el conjunto completo de instrucciones muestra una sorprendente similitud con el National Semiconductor COP400 .

Versiones

La familia S2000 se mejoró con el tiempo y se puede dividir en dos series, cada una de las cuales también contaba con un "modelo A" que incluía los circuitos de alto voltaje necesarios para controlar directamente una pantalla. El S2000 original fue reemplazado por el S2150, que se diferenciaba únicamente en que la ROM interna se incrementó a 1,5  Kbytes y la RAM a 80 nibbles. [ 6 ]

La segunda serie incluye dos modelos: el S2200 con 2  Kbytes de ROM y 128 nibbles de RAM, y el S2400, que aumentó la ROM a 4  Kbytes. Estos dos también incluían soporte directo por hardware para interrupciones , nueve instrucciones nuevas, cinco niveles de subrutinas y un convertidor analógico-digital . [ 6 ]

Referencias

Citas

Bibliografía

  • Ahl, David (1976). Lo mejor de la informática creativa . Informática creativa.
  • Bursky, Dave (11 de octubre de 1977). "Guía de selección de microprocesadores" . Electronic Design . Vol.  25, n.º  21, págs. 54-73 . 
  • Cushman, Robert (20 de noviembre de 1977). "Cuarto directorio anual de microprocesadores de EDN" . EDN . págs. 44–83 . 
  • Soluciones de sistemas MOS . American Microsystems. 1980.
  • Manual de programación A/M/I S2000 (PDF) (2.ª ed.). American Microsystems. Junio ​​de 1978.