Este artículo necesita citas adicionales para su verificación . ( junio de 2011 ) |
Un microcontrolador de placa única es un microcontrolador integrado en una única placa de circuito impreso . Esta placa proporciona todos los circuitos necesarios para una tarea de control útil: un microprocesador , circuitos de E/S , un generador de reloj , RAM , memoria de programa almacenado y cualquier circuito integrado de soporte necesario . La intención es que la placa sea inmediatamente útil para un desarrollador de aplicaciones, sin necesidad de que dedique tiempo y esfuerzo a desarrollar el hardware del controlador.
Como suelen ser de bajo costo y requieren un capital de desarrollo especialmente bajo, los microcontroladores de placa única han sido populares en el ámbito educativo durante mucho tiempo. También son un medio popular para que los desarrolladores adquieran experiencia práctica con una nueva familia de procesadores.
Los microcontroladores de placa única aparecieron a fines de la década de 1970, cuando la aparición de los primeros microprocesadores, como el 6502 y el Z80 , [1] hizo que fuera práctico construir un controlador completo en una sola placa, así como asequible dedicar una computadora a una tarea relativamente menor.
En marzo de 1976, Intel anunció un producto de computadora de placa única que integraba todos los componentes de soporte requeridos para su microprocesador 8080 , junto con 1 kilobyte de RAM, 4 kilobytes de ROM programable por el usuario y 48 líneas de E/S digital paralela con controladores de línea. La placa también ofrecía expansión a través de un conector de bus, pero podía usarse sin una caja de tarjeta de expansión cuando las aplicaciones no requerían hardware adicional. El desarrollo de software para este sistema se alojó en el sistema de desarrollo de microcomputadoras Intellec MDS de Intel ; esto proporcionó soporte para ensamblador y PL/M , y permitió la emulación en circuito para depuración. [2]
Los procesadores de esta era requerían que se incluyeran varios chips de soporte fuera del procesador. La RAM y la EPROM estaban separadas, y a menudo requerían de gestión de memoria o circuitos de actualización para la memoria dinámica . El procesamiento de E/S podía haber sido realizado por un solo chip, como el 8255 , pero con frecuencia requería varios chips más.
Un microcontrolador de placa única se diferencia de una computadora de placa única en que carece de la interfaz de usuario de propósito general y las interfaces de almacenamiento masivo que tendría una computadora de propósito más general. En comparación con una placa de desarrollo de microprocesador , una placa de microcontrolador enfatizaría las interconexiones de control digitales y analógicas con algún sistema controlado, mientras que una placa de desarrollo podría tener solo unos pocos dispositivos de entrada/salida discretos o analógicos o ninguno. La placa de desarrollo existe para mostrar o capacitar sobre alguna familia de procesadores en particular y, por lo tanto, la implementación interna es más importante que la función externa.
El bus de los primeros dispositivos de placa única, como el Z80 y el 6502 , era universalmente una arquitectura de Von Neumann . Se accedía a la memoria de datos y programas a través del mismo bus compartido, aunque se almacenaban en tipos de memoria fundamentalmente diferentes: ROM para programas y RAM para datos. Esta arquitectura de bus era necesaria para economizar la cantidad de pines necesarios de los limitados 40 disponibles para el omnipresente paquete de circuitos integrados duales en línea del procesador.
Era habitual ofrecer acceso al bus interno a través de un conector de expansión, o al menos proporcionar espacio para soldar un conector. Esta era una opción de bajo coste y ofrecía la posibilidad de expansión, aunque rara vez se utilizaba. Las expansiones típicas serían dispositivos de E/S o memoria adicional. Era poco habitual añadir dispositivos periféricos como cintas o discos de almacenamiento, o una pantalla CRT.
Más tarde, cuando los microcontroladores de un solo chip, como el 8048 , estuvieron disponibles, el bus ya no necesitaba estar expuesto fuera del encapsulado, ya que toda la memoria necesaria podía proporcionarse dentro del encapsulado del chip. Esta generación de procesadores utilizó una arquitectura Harvard con buses de programa y datos separados, ambos internos al chip. Muchos de estos procesadores utilizaron una arquitectura Harvard modificada , donde era posible algún acceso de escritura al espacio de datos del programa, lo que permitía la programación en circuito. Ninguno de estos procesadores requería, o admitía, un bus Harvard en un microcontrolador de una sola placa. Cuando admitían un bus para la expansión de periféricos, se utilizaba un bus de E/S dedicado, como I²C , 1-Wire o varios buses seriales .
Algunas placas de microcontroladores que utilizan un microprocesador de uso general pueden llevar el bus de direcciones y datos del procesador a un conector de expansión, lo que permite agregar memoria o periféricos adicionales. Esto proporciona recursos que no están presentes en el sistema de placa única. Dado que no todos los sistemas requerirán expansión, el conector puede ser opcional, con una posición de montaje provista para la instalación por parte del usuario si así lo desea.
Los sistemas de microcontroladores proporcionan múltiples formas de señales de entrada y salida para permitir que el software de aplicación controle un sistema externo del "mundo real". La E/S digital discreta proporciona un solo bit de datos (activación o desactivación). Las señales analógicas, que representan un rango variable continuo, como la temperatura o la presión, también pueden ser entradas y salidas para microcontroladores.
Las entradas y salidas digitales discretas pueden estar protegidas del bus de datos del microprocesador únicamente por un pestillo direccionable, o pueden ser operadas por un CI de entrada/salida especializado, como un adaptador de entrada/salida paralelo Intel 8255 o Motorola 6821. Los microcontroladores de un solo chip posteriores tienen pines de entrada y salida disponibles. Estos circuitos de entrada/salida generalmente no proporcionan suficiente corriente para operar directamente dispositivos como lámparas o motores, por lo que los relés de estado sólido son operados por las salidas digitales del microcontrolador, y las entradas están aisladas por circuitos de protección y cambio de nivel de acondicionamiento de señal .
En algunas placas de microcontroladores se encuentran una o más entradas analógicas, con un multiplexor analógico y un convertidor analógico a digital común. Las salidas analógicas pueden utilizar un convertidor digital a analógico o, en algunos microcontroladores, pueden controlarse mediante modulación por ancho de pulso . Para las entradas discretas, pueden requerirse circuitos externos para escalar las entradas o para proporcionar funciones como excitación de puente o compensación de unión fría .
Para controlar los costos de los componentes, muchas placas se diseñaron con circuitos de interfaz de hardware adicionales, pero sin los componentes para estos circuitos instalados, lo que dejaba la placa vacía. El circuito se agregó como una opción en el momento de la entrega o se podía completar más adelante.
Es una práctica común que las placas incluyan "áreas de creación de prototipos", áreas de la placa diseñadas como un área de placa de pruebas soldable con los rieles de bus y de alimentación disponibles, pero sin un circuito definido. Varios controladores, en particular los destinados a la capacitación, también incluyen una placa de pruebas enchufable y reutilizable para crear fácilmente prototipos de circuitos de E/S adicionales que se podrían cambiar o quitar para proyectos posteriores.
Las interfaces de comunicación varían según la antigüedad del sistema de microcontrolador. Los primeros sistemas podían implementar un puerto serial para proporcionar RS-232 o bucle de corriente . El puerto serial podía ser utilizado por el programa de aplicación o podía utilizarse, junto con una ROM de monitor, para transferir programas a la memoria del microcontrolador. Los microcontroladores actuales pueden soportar USB , redes inalámbricas ( Wi-Fi , Zigbee u otras) o proporcionar una conexión Ethernet. Además, pueden soportar una pila de protocolos TCP/IP . Algunos dispositivos tienen firmware disponible para implementar un servidor web, lo que permite a un desarrollador de aplicaciones construir rápidamente un instrumento o sistema habilitado para la web.
Muchos de los primeros sistemas no tenían instalaciones internas para la programación y dependían de un sistema "host" independiente para esta tarea. Esta programación se hacía normalmente en lenguaje ensamblador , o a veces en C o PL/M , y luego se ensamblaba o compilaba de forma cruzada en el host. Algunos microcontroladores de placa única admiten un sistema de lenguaje BASIC, lo que permite desarrollar programas en el hardware de destino. El desarrollo alojado permite utilizar todo el almacenamiento y los periféricos de una computadora de escritorio, lo que proporciona un entorno de desarrollo más potente.
Los primeros microcontroladores dependían de dispositivos de memoria de solo lectura programables y borrables (EPROM) para almacenar el programa de aplicación. El código objeto de un sistema host se "grababa" en una EPROM con un programador de EPROM . [3] Esta EPROM se conectaba luego físicamente a la placa. Como la EPROM se quitaba y reemplazaba muchas veces durante el desarrollo del programa, era común proporcionar un zócalo ZIF para evitar el desgaste o los daños. Borrar una EPROM con un borrador UV lleva un tiempo considerable, por lo que también era común que un desarrollador tuviera varias EPROM en circulación en un momento dado.
Algunos dispositivos con microcontroladores estaban disponibles con EPROM incorporada. Estos también se programaban en un quemador independiente y luego se colocaban en un zócalo del sistema de destino.
El uso de zócalos EPROM permitió realizar actualizaciones de campo al programa de aplicación, ya sea para corregir errores o para proporcionar funciones actualizadas.
Cuando el controlador de placa única constituía todo el entorno de desarrollo (normalmente en el ámbito educativo), la placa también podría haber incluido un teclado hexadecimal simple , una pantalla LED estilo calculadora y un programa "monitor" configurado permanentemente en la ROM. Este monitor permitía introducir programas en código máquina directamente a través del teclado y almacenarlos en la RAM. Estos programas estaban en código máquina, ni siquiera en lenguaje ensamblador, y a menudo se ensamblaban a mano en papel antes de introducirlos. Es discutible cuál de los procesos consumía más tiempo y era más propenso a errores: el ensamblaje a mano o la introducción de datos byte a byte.
Los microcontroladores de placa única con "teclado y pantalla de calculadora" de este tipo eran muy similares a algunos microordenadores de gama baja de la época, como el KIM-1 o el Microprofessor I. [ 4] Algunos de estos sistemas de "entrenamiento" de microprocesadores todavía están en producción hoy en día, utilizados como introducciones de muy bajo coste a los microprocesadores a nivel de programación de hardware. [5]
Cuando aparecieron los ordenadores personales de escritorio, inicialmente el CP/M o el Apple II , y más tarde el IBM PC y los compatibles, se produjo un cambio hacia el desarrollo alojado. El hardware era ahora más barato y la capacidad de RAM se había ampliado de tal manera que era posible descargar el programa a través del puerto serie y guardarlo en la RAM. Esta reducción masiva del tiempo de ciclo para probar una nueva versión de un programa supuso un aumento igualmente importante de la velocidad de desarrollo.
Esta memoria de programa todavía era volátil y se perdería si se interrumpía la alimentación. La memoria flash aún no estaba disponible a un precio viable. Como normalmente se requería que un proyecto de controlador completo fuera no volátil, el paso final de un proyecto solía ser grabarlo en una EPROM.
Los microcontroladores de un solo chip, como el Intel 8748 , combinan muchas de las características de las placas anteriores en un único encapsulado de circuito integrado. Los microcontroladores de un solo chip integran memoria (tanto RAM como ROM) en el encapsulado y, por lo tanto, no necesitan exponer el bus de datos y direcciones a través de los pines del encapsulado de circuito integrado. Estos pines quedan entonces disponibles para líneas de E/S. Estos cambios también reducen el área requerida en la placa de circuito impreso y simplifican el diseño del microcontrolador de una sola placa. Algunos ejemplos de microcontroladores de un solo chip son:
Para su uso en producción como sistemas integrados , la ROM integrada se programaba enmascarada en la fábrica de chips o el desarrollador la programaba una sola vez (OTP) como una PROM . Las PROM solían utilizar la misma tecnología UV EPROM para el chip, pero en un paquete más económico sin la ventana de borrado transparente. Durante el desarrollo del programa, todavía era necesario grabar EPROM. En este caso, se proporcionaría todo el CI controlador y, por lo tanto, los zócalos ZIF .
Con el desarrollo de memorias flash y EEPROM asequibles , se hizo práctico conectar el controlador de forma permanente a la placa y descargar el código del programa desde un ordenador central a través de una conexión en serie. Esto se denominó " programación en circuito ". El borrado de programas antiguos se realizaba sobrescribiéndolos con una nueva descarga o borrándolos en bloque eléctricamente (para EEPROM ). Este último método era más lento, pero podía llevarse a cabo in situ.
La función principal de la placa controladora era entonces alojar los circuitos de soporte para esta interfaz serial o, en placas posteriores, USB . Como una comodidad adicional durante el desarrollo, muchas placas también tenían características de bajo costo como monitores LED de las líneas de E/S o interruptores de reinicio montados en la placa.
Hoy en día, diseñar placas de circuitos para microcontroladores es barato y sencillo. Los sistemas host de desarrollo también son baratos, especialmente cuando se utiliza software de código abierto . Los lenguajes de programación de nivel superior abstraen detalles del hardware, lo que hace que las diferencias entre procesadores específicos sean menos obvias para el programador de aplicaciones. La memoria flash regrabable ha reemplazado los lentos ciclos de programación, al menos durante el desarrollo de programas. En consecuencia, casi todo el desarrollo ahora se basa en la compilación cruzada desde computadoras personales y los programas se descargan a la placa controladora a través de una interfaz tipo serie, que generalmente aparece ante el host como un dispositivo USB.
La demanda original del mercado de una implementación simplificada en placa ya no es tan relevante para los microcontroladores. Los microcontroladores de placa única siguen siendo importantes, pero han cambiado su enfoque a: