¿Qué son realmente: microcontrolador (uC), sistema en chip (SoC) y procesador de señal digital (DSP)?

La pregunta real está al final. Pero leer eso solo podría no mostrarte por qué estoy confundido. Escribí esta publicación comenzando con algunas definiciones, suposiciones y especulaciones y luego haciendo la pregunta real.

Siempre creo que sé la diferencia, pero cuando recibo una pregunta como: "si pongo un transceptor con un uC, ¿eso ahora es un SoC?" Voy todo revuelto y no sé cómo responder. Recuerdo una vez que me dijeron que un uC es esencialmente un SoC . Pero, ¿qué prueba tengo? ¡Pero arduino no está en un solo chip! ¡Puedo sacar el procesador Atmeg de la "placa" en cualquier momento!

Cuando reviso en línea recibo todo tipo de respuestas que confirman o contradicen lo que acabo de decir directa o indirectamente. Esto siempre es confuso para mí y culpo nada menos que a las personas de marketing que usan estos términos de manera vaga y, a veces, indistintamente, y a las personas que siguen su ejemplo.

Así que decidí buscar el significado fundamental de estos tres términos: uC, SoC y DSP. Porque, por ejemplo, cuando me confundo con los voltajes en los circuitos, siempre vuelvo a los fundamentos de la física, la tierra no es realmente cero, es solo una "referencia" y los voltajes no son "absolutos", son "parientes". Esto siempre me señala en la dirección correcta. Pero no hay base a la que acudir cuando se habla de uC. "micro" "controlador" es un controlador tan pequeño que está en la escala de un micrómetro. Pero no tenemos el término nanocontrolador, ¿verdad? Así que esta forma de pensar no ayudaría.

Lo que estoy tratando de responder es lo siguiente:

  • uC es una unidad de procesamiento con otros periféricos y memoria para uso general, ¿verdad?
  • SoC es un "sistema" completo en un "chip". Entonces, cualquier sistema que coloque en un solo chip, es un SoC, ¿verdad?
  • DSP es una unidad de procesamiento para uso específico, principalmente operaciones matemáticas, ¿no?

    Ahora

  • ¿Significa eso que todo en un uC debe estar en un solo chip? porque si es así, entonces uC es de hecho un SoC. Tal vez uno pequeño, pero lo es. ¿Qué pasa con arduino? Probablemente uC "puede" ser un SoC si está en un solo chip, pero no tiene que hacerlo (estoy usando mucho arduino como ejemplo aquí).

  • Entonces, arduino es un uC, si tomo todos sus componentes y los coloco en otra placa y agrego XBEE a la mezcla, por ejemplo. Sigue siendo un uC, ¿verdad? Entonces, ¿cuándo decimos que ahora es un SoC? ¿Solo cuando las mismas cosas se colocan en un solo chip en lugar de juntarse en un tablero?

Hasta ahora, creo que las preguntas anteriores de alguna manera se responden solas, pero solo quiero confirmar para poder continuar. Cuando trato de pensar "fundamentalmente", el chip o la placa "pueden" ser lo mismo, son solo cables que conectan los diferentes componentes. y llegados a este punto, ¿cómo se define un componente? ¿Es un solo transistor o un circuito como un ADC? Pero no quiero ir allí.

La siguiente pregunta es de qué se trata realmente esta publicación:

  • ¿Es un uC esencialmente un SoC? Un caso especial de un SoC en el que uno de sus requisitos es que todo el sistema sea para uso general.
  • uC es de propósito general (según Internet) y DSP es principalmente para procesar matemáticamente señales recopiladas del mundo real. Pero DSP sigue siendo un "procesador" y un uC contiene un "procesador". ¿Puedo simplemente poner un DSP con un montón de periféricos (digamos ADC y DAC, ya que generalmente se usan con él) y llamar a la mezcla uC? o es un SoC (ya que ahora la combinación no es de propósito general y, por lo tanto, no podemos llamarlo uC pero sigue siendo un SoC)
Realmente no importa cómo lo llames, '¡una rosa con cualquier otro nombre olería igual de dulce!' SoC es un término de ventas, 'otras personas le venden las piezas, pero nosotros le vendemos todo el sistema' es lo que implica. uC generalmente es como una memoria up+ y, a menudo, ADC. Un DSP está optimizado para, créalo, DSP, e invariablemente tiene un multiplicador de hardware, pero a menudo en estos días, memoria de programa y, a veces, ADC/DAC, casi un SoC. Pero en gran medida, la mayoría de ellos podrían describirse como los otros. No se preocupe, ciertamente no golpee a la gente por eso.
Sé que se entiende ampliamente usar u y no hay ningún problema real al usarlo, pero si alguna vez desea crear un µ, presione AltGr + Mo ⌘ + Mdebería ser suficiente.
"micro" es bagaje histórico; "micro"controlador proviene de "micro"computadora, que se distingue de las "mini"computadoras que tenían el tamaño de un refrigerador y las ""computadoras que ocupaban habitaciones enteras".

Respuestas (3)

uC = un chip de procesamiento independiente: CPU, RAM, ROM, algunos periféricos.

DSP = chip de procesador (puede ser una CPU separada, actualmente en su mayoría un uC) que está optimizado para el procesamiento de señales. A menudo tiene MAC rápido (multiplicación-acumulación), saturación matemática y múltiples interfaces de memoria. Para aprovecharlo al máximo, a menudo es necesario ser muy consciente de sus peculiaridades, como qué tipo de acceso a la memoria se puede realizar al mismo tiempo. (Por lo tanto, a menudo se usa con bibliotecas de ensamblaje afinadas proporcionadas por el fabricante). A menudo no está diseñado para usarse con memorias grandes (el bus de direcciones de 16 bits suele ser suficiente).

SOC = chip de procesador (principalmente una CPU, tal vez con algo de RAM para el almacenamiento en caché) que incorpora periféricos que solían estar fuera del chip del procesador principal. Esto es, por definición, un objetivo móvil: las funciones de los SOC especializados de hoy se pueden encontrar en los chips principales del mañana. Los SOC actuales están diseñados principalmente para ejecutar un sistema operativo de nivel Linux y contienen la mayoría de las cosas que necesitaría en dicho sistema, excepto la RAM y la ROM (aunque a menudo se incluye alguna ROM, a menudo para leer un FLASH externo).

Ejemplos de periféricos que son comunes en los SOC de hoy en día (pero que se están abriendo camino en los uC): puertos Ethernet, estructura de conmutación Ethernet, USB incl. host y OTG, motor(es) gráfico(s), decodificación mpeg, motor criptográfico, interfaces RAM y FLASH.

Un Arduino es un producto a nivel de placa, por lo que, por definición, no es un uC, DSP o SOC, aunque puede contener uno. El Uno básico contiene un uC.

Un uC no es un SOC (aunque podría haber casos límite): un uC es independiente y (en el nivel actual de tecnología) no está diseñado para ejecutar sistemas operativos de nivel Linux. Un SOC no es independiente (necesita RAM y ROM).

Los límites no son 100% ajustados y están cambiando con el tiempo. Las interfaces de CPU y memoria de la mayoría de las CPU actuales superan fácilmente a los DSP de ayer, incluso en su territorio. Pero los DSP de hoy en día son más rápidos y/o más baratos o consumen menos energía que las CPU de uso más general cuando procesan la señal. Es una carrera entre los fabricantes para hacer el chip más atractivo utilizando el último estado de la tecnología y la demanda. Por el momento, esto había llevado a los 3 puntos óptimos anteriores (más microprocesadores de propósito general), pero esto cambiará con el tiempo (los DSP son menos populares que hace 10 años, en mi opinión, porque el rendimiento de nivel de audio ahora se logra fácilmente con un CPU de propósito general).

Un tipo específico de chip que se está volviendo más común en estos días es el uC (o SOC) con alguna interfaz inalámbrica. Verifique ESP8266 y ESP32 para ver ejemplos de WiFi, y RN2483 para LoraWan.

uC y DSP tienen una definición bastante sencilla.

Un uC es un núcleo de procesamiento que tiene la memoria (volátil y no volátil) integrada internamente. Esto en comparación con un microprocesador que generalmente tendrá algo de memoria volátil en su interior pero no no volátil.

Un DSP es una rama de un uC. Los DSP generalmente tienen capacidades de muestreo analógico realmente buenas que un uC típico. Los DSP también tienen mejores capacidades matemáticas que uC y vienen con muchas bibliotecas como FFT o autocorrelación para utilizar esas capacidades matemáticas.

SoC es más un término de marketing. SoC es un término que intentan usar cuando un uC ha incorporado suficiente funcionalidad para hacer una solución de chip único o casi único. El término SoC tiende a encontrarse cuando el uC tiene un procesamiento de gráficos integrado y controladores de gráficos a bordo. Piense en los chips ARM de los teléfonos móviles. Incorporan los gráficos.

Entonces, ¿está diciendo que un DSP también contiene un ADC, por ejemplo?
@himura uC tiene ADC pero los DSP tienen ADC realmente buenos. Por ejemplo, Arduino es capaz de alcanzar una frecuencia de muestreo de aproximadamente 10 kHz a 10 bits. El dsPIC33, que es un DSP, tiene una frecuencia de muestreo de 1,1 MHz a 10 bits. Eso es dos órdenes de magnitud más rápido.
Pensé que DSP es solo la unidad de procesamiento sin ninguna capacidad de ADC. Pero parece más como un sistema completo ahora. Gracias
Creo que esta respuesta es incorrecta. Hay muchos chips DSP que no tienen convertidores. La principal diferencia entre un DSP y una CPU de uso general es la arquitectura de la memoria. Los DSP tienen varias memorias a las que se puede acceder en paralelo. Ver en.wikipedia.org/wiki/Harvard_architecture
@Hilmar, ¿puede proporcionar algunas referencias de DSP sin convertidores? me gusta este punto

Lo que llamamos SOC generalmente tiene un núcleo de procesador mucho más potente que uC. Por lo general, puede encontrar el núcleo ARM allí. Casi todos los procesadores ARM "grandes", como la serie Cortex A, producidos hoy en día son en realidad SOC. Para ejecutar un sistema operativo grande como Linux, necesita mucha RAM, por lo que los SOC tienen un controlador de RAM externo que admite chips SDRAM modernos. Pequeña cantidad de RAM estática incorporada utilizada solo en la fase de inicio para ejecutar el cargador de inicio e inicializar los periféricos y el controlador SDRAM.

Los uC suelen ser soluciones completas todo en uno con RAM estática incorporada (cantidad bastante pequeña). La pequeña memoria RAM y la falta de MMU impiden el uso de grandes sistemas operativos en ellos. Hoy en día, la mayoría de los uC tienen un núcleo de 8 bits o de 32 bits. UC de 16 bits utilizados solo en aplicaciones heredadas. La era de uSc de 32 bits comenzó con los núcleos de la serie ARM M. Estos núcleos están diseñados especialmente para uC y tienen muy poco en común con los grandes ARM, excepto el conjunto de instrucciones (ARM M usa instrucciones THUMB, un subconjunto del conjunto de instrucciones ARM).

El término DSP se refiere a la arquitectura central. Los DSP tienen más de una ALU y tienen los llamados conjuntos de instrucciones VLIW (palabra de instrucción muy larga). La instrucción VLIW se compone de varias subinstrucciones (alrededor de 4) dirigidas a diferentes subsistemas de CPU. Por ejemplo, una instrucción tan larga puede contener una instrucción para obtener datos de la memoria, una instrucción de multiplicación para una ALU multiplicadora especializada y una instrucción aritmética para una ALU de propósito general.

Puede usar DSP como uC de propósito general, pero el propósito principal es el procesamiento de datos digitales (no solo señales, sino también video). Los filtros digitales y los algoritmos de compresión/descompresión de medios se benefician de la arquitectura paralela DSP.

Los núcleos de CPU modernos generalmente tienen una especie de "extensiones DSP" en forma de instrucciones vectoriales (puede realizar la misma operación aritmética en una cantidad de, aproximadamente 8, operantes). Es algo diferente a las instrucciones VLIW de DSP.

"Casi todos los procesadores ARM producidos hoy en día son en realidad SOC", ¿en serio? ¿Considera los chips Cortex-M0 como los SOC LPC810?
He mencionado la serie Cortex M por separado al hablar de uC. Cortex M son uCs obviamente.