Welcome to IDI Electronica!!!



Welcome!!! IDI Electronica is a blog for my personal projects and articles to help electronics enthusiasts like me.

Bienvenidos!!! IDI Electronica es un blog con mis proyectos personales y artículos con el fin de ayudar a entusiastas de la electrónica como yo.

Wednesday, April 8, 2015

Microprocesadores vs Microcontroladores vs FPGA

Cuando hablamos de circuitos digitales, oímos de dispositivos lógicos como CPUs, microprocesadores, microcontroladores, PLDs, ASICs, FPGAs, entre otros. Pero, en qué se diferencian?


En este artículo trataré de explicar sus principales diferencias sin entrar en muchos detalles técnicos.


CPU vs Microprocesador

El CPU (Unidad Central de Procesos en inglés) es la parte de un sistema que secuencia y ejecuta instrucciones usando aritmética básica, lógica, control y operaciones de entrada y salida. El CPU es la parte encargada de los procesos, por lo que también se le conoce como procesador.

En sus inicios, los CPUs estaban conformados por varios tubos de vacío interconectados con cables y eran tan grandes que ocupaban salones enteros. Años después, el transistor fue inventado y los CPU se volvieron más pequeños. Sin embargo, estos sistemas aún necesitaban bastante espacio.

Cuando los circuitos integrados fueron inventados, las unidades de proceso pudieron ser construidas en pequeños chips de silicona. Esos chips son lo que conocemos como microprocesadores.

En teoría, el CPU se refiere al procesador principal de un sistema y por lo tanto no todos los microprocesadores son necesariamente CPUs. Un buen ejemplo de esta diferencia sería la consola de videojuegos Sega Genesis. El sistema posee 2 microprocesadores, el Motorola 68K para la ejecución de juegos, video, entradas, etc, y el Zilog H80 para el proceso de sonidos. En este caso, el 68K es el CPU. Sin embargo, en práctica, la gente se refiere a casi todos los microprocesadores como CPUs.


Fig 1. Foto de ENIAC en U de Pennsylvania. El sistema contenía 18,000 tubos de vacío y usaba 174KW de poder


Fig 2. Microprocesador Intel 8086


Microprocesador vs Microcontrolador

Un microprocesador (MPU o µprocesador) no posee pines de entrada y salida (I/O), memoria u otros periféricos. En lugar de eso, sus pines funcionan como un bus para interactuar con componentes externos como I/O, memoria RAM, ROM, puertos seriales, etc.

Un microcontrolador (MCU o µcontrolador) integra el CPU, ROM, RAM, I/O y otros periféricos en un solo circuito integrado. Básicamente, es un sistema entero dentro de un chip.

Los microcontroladores son convenientes porque nos permiten programar la interfaz del CPU con todos los periféricos sin preocuparse por problemas de compatibilidad o diferencia de voltajes. Además, un microcontrolador cuesta menos que un sistema con microprocesador. Su principal desventaja es que están limitados por los periféricos construídos en el chip.

Un microprocesador es capaz de ejecutar cálculos más extensos y al depender de componentes externos, el sistema puede expandirse a diseños bastante complejos.  El ejemplo más común de un sistema con microprocesador sería una computadora de escritorio.


Fig 3. Diagrama comparando un microprocesador y un microcontrolador


ASIC vs PLD vs FPGA

Un Circuito Integrado de Aplicación Específica (ASIC) es un chip diseñado especialmente para ejecutar tareas específicas.

Los Dispositivos Lógicos Programable (PLD) y Matriz de Puertas Programables en Campo (FPGA) son dispositivos que pueden ser reprogramados para crear distintos circuitos digitales.

En pocas palabras, los PLDs y FPGAs son circuitos reprogramables mientras que los ASIC no.

Mientras que los 3 dispositivos pueden ser usados para crear circuitos digitales, los ASICs están optimizados para esas tareas. Además, consumen menos poder y pueden procesar señales más rápidamente. Para algunas aplicaciones, ésta pequeña diferencia puede hacer de los ASIC la única opción viable. No obstante, el ciclo de diseño de un ASIC dura bastante tiempo, es costoso y al no ser reprogramable, no pueden ser modificados por lo que deben pasar por un riguroso ciclo de prueba. Por otro lado, los PLD y FPGA dan bastante flexibilidad pues al ser reprogramables, los ciclos de prueba, validación y rediseño son más cortos.


PLD vs FPGA

La diferencia de estos dos dispositivos están en la arquitectura.

Los PLD están hechos de macroceldas y usan lógica combinatoria (Y, O) y flip-flops para crear sus circuitos. Los PLD originales fueron diseñados para reemplazar decenas de puertas lógicas de la familia 7400 (Y, O, NO).  El tipo más común de PLD es el Dispositivo Lógico Programable Complejo (CPLD) que básicamente contiene múltiples PLD interconectados.

Los FPGA están hechos de bloques lógicos, interconexiones y I/O. Los FPGA son volátiles, por lo que una memoria externa debe almacenar la configuración del dispositivo.

Para crear circuitos, los CPLD usan una combinación de cientos de puertas lógicas (Y, O, NO), por lo que el proceso se llama lógica combinatoria. Por otro lado, los FPGA usan Tablas de Consulta (LUT) para reconfigurar sus matrices de puertas.

Debido a su estructura, los CPLD pueden procesar señales más rapidamente. Sin embargo, debido al tamaño de las macroceldas, los CPLD están limitados a unos 500 flip-flops por dispositivo. Por otro lado, los FPGA pueden ser usados para crear circuitos más complejos ya que pueden contener más de 150,000 flip-flops.


Microcontrolador vs FPGA

Ahora hablaremos de los dos dispositivos más utilizados en la mayoría de proyectos.

Básicamente, un microcontrolador es un procesador con diferentes circuitos (periféricos) construidos dentro de un mismo chip. Todo lo que debemos de hacer para utilizarlo es programar el procesador con un lenguage como ensamblaje (assembly), C o C++.

Un FPGA es como un circuito en blanco con miles de puertas lógicas esperando a ser configuradas para crear otros circuitos. De hecho, podemos usar un FPGA para diseñar un procesador. Para configurarlos, usamos un Lenguaje de Descripción de Hardware (HDL) como Verilog o VHDL.

Para la mayoría de aplicaciones, los microcontroladores son la mejor solución. Son más baratos, fáciles de programar, consumen menos poder y contienen en sus periféricos todo lo que podamos necesitar.

Los microcontroladores usan procesos secuenciales (una tarea a la vez) mientras los FPGA pueden ejecutar procesos en paralelo. Debido a esto, los FPGA son la mejor opción para aplicaciones con señales de alta velocidad o que se procesan en tiempo real.

No comments:

Post a Comment