¿Cómo elegir una plataforma MCU? [cerrado]

Existen numerosas plataformas de MCU y una vez que alguien se ha acostumbrado a una, generalmente se muestran reacios a cambiar a otra plataforma.

Mi pregunta es: si uno comenzara a usar una MCU para tareas de propósito general hoy, ¿cómo elegiría una? ¿Cuáles son los puntos de venta únicos de las diferentes plataformas?

Háganos saber los tipos de proyectos y volúmenes que tiene en mente, y nos ayudará a responder la pregunta.
El uso general es demasiado ancho. Tiene poco sentido usar el mismo uC para hacer parpadear un LED de bicicleta y para un RTOS con una pantalla LCD táctil a color de alta resolución.
Sí, lo ideal sería tener varios chips con los que esté familiarizado para problemas de diferentes tamaños, y estar listo para elegir uno nuevo si es el único adecuado para una tarea.
@WoutervanOoijen La idea con esta pregunta era la siguiente: hay muchas tareas que cualquiera de las plataformas puede manejar fácilmente (es decir, tareas de propósito general). Entonces uno es completamente libre de elegir entre plataformas. En este caso, los "factores blandos", por ejemplo, la facilidad de uso, el número de componentes externos, etc., se vuelven dominantes. - Quería averiguar qué plataformas funcionan bien o mal en comparación con otras.

Respuestas (8)

Hace un año, di una charla sobre el tema de la selección de microcontroladores (me tomó alrededor de 1,5 horas). La audiencia eran programadores y creadores de software de alto nivel. La mayoría de la audiencia no tenía experiencia previa en μC, el resto ha jugado solo con Arduino. El conteo de cabezas en la audiencia fue de aproximadamente 30. Entonces, esto fue una transmisión múltiple, en lugar de una clínica uno a uno.

La diapositiva clave en la charla fue esta:

Dimensiones

para comparar microcontroladores. La lista está en orden descendente.

  • Entorno de desarrollo (cadena de herramientas)
    • Entorno de desarrollo
    • ¿Mencioné el entorno de desarrollo?
  • Soporte
    • Notas de aplicación
    • Apoyo entre pares: conocimiento tribal, amigos, foros, los códigos [sic]
  • Características
    • Memoria
    • Periféricos
    • destreza computacional
  • El consumo de energía
  • Costo

PD

Debo definir el alcance al que se limita esta respuesta mía. Veo esta cuestión de selección de plataforma a través de dos tipos de lentes. El primero es un prototipo. El segundo es un desarrollador de equipos profesionales con precios de venta en el orden de $ 3k y cantidades de cientos al año. La lente del aficionado tampoco está muy lejos. En estos casos, el costo incremental del microcontrolador es pequeño, en comparación con el costo de desarrollo o el costo del equipo profesional en el que se integra el microcontrolador.

Hay, por supuesto, una perspectiva muy diferente de la producción en masa. Cuando alguien elige un microcontrolador para un dispositivo barato que se producirá en grandes cantidades (los juguetes convencionales son un buen ejemplo), lo impulsará el costo del hardware. Un ahorro modesto en el costo del hardware multiplicado por un gran volumen de producción (en cientos de miles o más) puede justificar el dolor de usar un entorno de desarrollo difícil de manejar y un microcontrolador a precio de ganga con un soporte mediocre.

Usted se enfoca en el entorno de desarrollo. Tiene sentido para mi. ¿Cuáles fueron tus conclusiones?
@ArikRaffaelFunke Bueno, esas viñetas en mi publicación anterior son las conclusiones. ¿No es lo suficientemente concluyente? Mi objetivo para la charla fue: (1) Proporcionar una lista mínima de las preguntas que deben hacerse durante el proceso de selección. (2) Mostrar dónde y cómo buscar respuestas. Específicamente, he evitado sacar conclusiones difíciles del tipo: la familia X es buena si..., la familia Y es buena si...
Para pequeños volúmenes y requisitos típicos, sí. Pero a veces hay que elegir la mejor tecnología. O si el volumen es enorme, se puede justificar un dolor de cabeza bastante importante en el desarrollo si ahorra unos pocos centavos por widget, incluida la prueba de soluciones basadas en piezas de la competencia y listas para saltar.
@ChrisStratton El consumo de energía es otra cosa [además de los efectos de alto volumen de producción], que a veces puede justificar algunos dolores de cabeza. Poco puede hacer, si quiere un funcionamiento de muy baja potencia, y el uC (que eligió) no puede admitirlo.
El enfoque en el entorno de desarrollo es absolutamente correcto. Podrías tener el mejor chip del mundo, pero si no puedes programar y depurar la maldita cosa, bien podría ser un ladrillo. He oído hablar bien de NXP, pero no tengo experiencia directa. Pensé que Freescale era pobre, pero luego probé TI (MSP y luego DM36x) y ahora Freescale es un faro brillante en mis ojos. El mejor consejo con CUALQUIER entorno de desarrollo: constrúyalo/instálelo en una máquina virtual y mantenga una copia de seguridad en pleno funcionamiento para que no se rompa al mover computadoras/actualizar el sistema operativo, etc.
En este hilo se puede encontrar otra lista de criterios ligeramente diferente .

Dado que esta pregunta no ha producido la comparación de plataformas que esperaba, he intentado crear una yo mismo estudiando la literatura y las otras respuestas. Tal vez esto pueda ayudar a alguien más en el futuro.

Avíseme si hay algún error o si hay información que pueda agregar.


Comparación de plataformas

Notas sobre la comparación:

  • IDE: los comentarios se refieren a la versión gratuita

FOTO:

  • con mucho, los chips de nivel de entrada más baratos
  • muchos tienen reguladores de voltaje internos
  • a un precio determinado, suelen tener más y mejores periféricos
  • cuasi estándar de la industria: muy buenas bibliotecas y soporte para desarrolladores
  • IDE: basado en NetBeans, excelente, que incluye simulación y depuración fuera de línea completa
  • depuradores de terceros: alrededor de $25
  • muy amplia gama de paquetes
  • Puntos de venta únicos: 1. XLP = dispositivos de potencia extra baja disponibles; 2. muchos chips modernos tienen el módulo de detección capacitiva para botones táctiles, etc.

AVR:

  • AVR generalmente va a la zaga de los periféricos y es un poco más caro. Sin embargo, en general, AVR es muy similar a PIC en funcionalidad y precio.
  • Los chips AVR de 8 bits son más rápidos que los chips PIC de 8 bits
  • emuladores de terceros: alrededor de $ 20
  • muy amplia gama de paquetes

Brazo Cortex-M:

  • arquitectura de procesador moderna: sin banca de memoria, buena multitarea
  • con mucho, los dispositivos de 32 bits más baratos
  • bastante fácil de mover entre diferentes chips y diferentes fabricantes
  • los dispositivos generalmente requieren más componentes externos que los PIC
  • Dispositivos USB muy baratos con gestor de arranque ROM: NXP LPC1342/LPC1343
  • apoyo bibliotecario razonable
  • IDE: razonable, sin simulación fuera de línea
  • La interfaz SWD permite la programación, la depuración y el seguimiento en el sistema con hardware fácil de construir (
  • Los chips NXP económicos solo vienen en paquetes de paso pequeño o sin pin
  • puntos de venta: 1. plataforma de 32 bits más barata; 2. plataforma más barata con cargador de arranque USB ROM

PSoc: (de la respuesta de Rocketmagnet)

  • rey cuando se trata de periféricos analógicos: un chip determinado se puede reconfigurar internamente para proporcionar diferentes periféricos analógicos y digitales
  • significativamente más caro que los PIC
  • IDE: excelente
  • Programador de $ 88 (¿permite la depuración?)
  • solo paquetes SMD

Hélice: (de la respuesta de Rocketmagnet)

  • MCU multinúcleo: diferentes núcleos pueden funcionar de forma simultánea en diferentes tareas
  • elimina/reduce (?) la necesidad de interrupciones tradicionales
  • pocos periféricos de hardware, deben estar codificados explícitamente para ejecutarse en uno de los núcleos, proporciona una flexibilidad increíble
  • débil cuando se trata de periféricos analógicos
  • IDE: excelente
  • Paquete DIP disponible

Comparación por aplicación

USB:

"Leyenda" para la lista a continuación:

  • bootloader = cargador de arranque USB preprogramado
  • regulador de voltaje = puede ser alimentado desde bus sin regulador externo
  • pullups = sin necesidad de pullup externo
  • adaptación de impedancia = no se necesitan resistencias de adaptación externas
  • oscilador de precisión = sin necesidad de cristal externo

Propiedades del dispositivo menos costoso: (en orden aproximado de precio)

  • PIC: 8 bits, baja y máxima velocidad, regulador de voltaje, pullups, igualación de impedancia, protección ESD
  • NXP: 32 bits, cargador de arranque, solo velocidad completa, protección ESD
  • Freescale: 8 bits, solo baja velocidad, regulador de voltaje, adaptación de impedancia, protección ESD
  • Atmel: 8 bits, cargador de arranque, solo velocidad completa, regulador de voltaje, pullup, protección ESD
  • STM: 32 bits, cargador de arranque, solo velocidad completa, pullup, coincidencia de impedancia, protección ESD
  • Silicon Laboratories: 8 bits, baja y máxima velocidad, regulador de voltaje, pullups, igualación de impedancia, oscilador de precisión
  • TI: 32 bits, cargador de arranque, baja y máxima velocidad, otras propiedades desconocidas
  • PSoc: configurable como módulo, otras propiedades desconocidas
  • Hélice: 32 bits, solo bitbanging

ethernet:

  • PIC: dispositivo más barato con PHY integrado
Algunas notas aquí: Propeller no tiene interrupciones en absoluto y no hay soporte para la depuración en el IDE oficial. En cambio, el mecanismo de depuración preferido parece ser conectar la cosa a un televisor y usar una biblioteca provista que muestra variables en la pantalla. Tampoco hay finalización de código, simulador, integración con sistemas de gestión de código, implementación inusual de include... Tampoco hay periféricos de hardware excepto los dos contadores por núcleo, que yo sepa.
¿También tiene una fuente para el emulador AVR de $ 20? Ese es el precio habitual para los programadores, por lo que he visto.
@AndrejaKo Estaba pensando en el Olimex AVR-USB-JTAG . Gracias por las notas sobre el Propeller. Los incluiré en mi próxima edición.
Dispositivo interesante. Me parece que Atmel está eliminando los dispositivos habilitados para JTAG a favor de los dispositivos de depuración y parece que casi no hay clones de JTAGICE MK2.
Nota sobre la hélice: NO tiene interrupciones. en absoluto Si necesita algo que se parezca a una interrupción tradicional, active un núcleo de CPU adicional y haga que gire y espere.
Además, después de haber trabajado bastante con la hélice, no estoy de acuerdo con su calificación del IDE. Personalmente, creo que es una mierda, en el mejor de los casos es mediocre (¡No puedes usar pestañas! No tiene opción para desactivar la conversión de espacio de pestañas).
¿Cómo se compararía algo como la línea de procesadores xmos con estos en términos de simplicidad, flexibilidad y capacidad? Entiendo que el xmos no es un microcontrolador como el resto pero sí que parece una plataforma muy atractiva con la filosofía inversa a la de los propellers (un núcleo realmente potente dividido en lugar de muchos núcleos combinados).
@ArikRaffaelFunke Sus comentarios sobre PIC parecen asumir solo los dispositivos de 8 bits. Usted dice: "El Arm Cortex-M tiene, con mucho, los dispositivos de 32 bits más baratos". Verificando Digi-Key, el PIC32 más económico con 16K Flash y 4K RAM cuesta $2.90. El Arm Cortex-M más barato con el mismo Flash y RAM cuesta $2.65. Sin embargo, el PIC32 es un poco más barato en cantidades de 100. En cualquier caso, creo que la afirmación de "con mucho el más barato" para el ARM no es muy precisa. Y muchas versiones del PIC32 están disponibles en un paquete DIP, algo inusual para los procesadores de 32 bits.
Tal lista es casi inevitablemente inútil y está desactualizada. Todos los fabricantes compiten entre sí todo el tiempo y la mayoría trata de ofrecer algo en cada categoría: haces una encuesta cuando tienes una necesidad, eliges una solución y, si funciona, la ejecutas hasta que tengas una necesidad. para el que hay una solución mejor.
Por lo que vale, podría incluir la línea MSP430 aquí también por su consumo de energía ultra bajo
@ChrisStratton: Tal lista en papel o en una publicación de blog de hace 5 años estaría desactualizada. Sin embargo, esta lista se puede editar para que siempre tenga la información más reciente.
"Embedded Systems/Particular Microprocessors" tiene información similar sobre cómo elegir un procesador, que de manera similar se puede editar para (con suerte) mantenerlo actualizado y relativamente neutral.
@ConnorWolf, esa debe ser la razón por la que lo llaman Propeller: ¿tiene que girar constantemente para ir a cualquier parte? :PAG

Su elección de MCU depende mucho del tipo de proyectos en los que va a trabajar. ¿Está fabricando dispositivos sencillos, súper baratos y de gran volumen, como luces intermitentes para bicicletas? ¿Está desarrollando prototipos de robots complejos que tienen que lidiar con numerosos sensores y dispositivos IO extraños?

Principalmente trabajo en esto último. El principal problema para mí es tratar de encontrar microcontroladores que tengan el conjunto de periféricos que quiero. Esto es muy difícil ya que nuestros requisitos no parecen ser los principales. Queremos cosas como 5 canales PWM, 5 decodificadores de cuadratura, 2 puertos SPI no estándar y un UART con IO negado.

Los únicos MCU que he visto que pueden manejar ese tipo de requisitos con facilidad son PSoC y Propeller.

Astillas de hélice

El Propeller es básicamente ocho MCU de 32 bits en un solo chip. Si desea algún tipo de periférico, simplemente programe una de las MCU para realizar ese trabajo. Así que puedes tener lo que quieras.

PSoC

Los PSoC vienen en dos sabores, 3 y 5. El 3 es un núcleo 8051 y el 5 es un ARM cortex M3. En el chip también se incluyen bloques digitales y analógicos reconfigurables que se pueden convertir en una amplia gama de periféricos: ADC, filtros, amplificadores operacionales, DAC, SPI, UART, decodificador de cuadratura, generador CRC, etc.

El entorno de desarrollo es fantástico. Tiene la edición de código fuente habitual de un IDE típico, pero también tiene un editor de esquemas. Literalmente, puede conectar cualquier circuito digital que desee, conectando los periféricos con puertas, flip-flops, etc. ¿Necesita 5 PWM? Fácil, solo colóquelos en el esquema, conéctelos y listo. Incluso puede escribir sus propios periféricos en Verilog si desea algo que no se proporciona. Gran parte de su aplicación puede implementarse fácilmente en este tipo de hardware.

El beneficio real es que puede quedarse con un chip, sabiendo que puede abordar muchos de los proyectos que querrá hacer en el futuro. Lo que encontré molesto acerca de los PIC fue rastrear constantemente docenas de dispositivos en busca del que tenía el conjunto de periféricos particular que necesitaba. Ahora no tengo ese problema.

El Propeller es un concepto curioso. Tengo que pensar un poco en eso. Con respecto a PSoC: los he considerado en el pasado debido a la increíble flexibilidad, pero la necesidad de un programador de $ 250 hizo que prácticamente no comenzara para mí.
@ArikRaffaelFunke: el programador cuesta solo $ 88 , menos de la mitad del precio del ICD3 .
@ArikRaffaelFunke: otra consideración es el empaque. Si planea construir sus propios prototipos, entonces es mucho más fácil trabajar con paquetes DIP. La mayoría de los PIC y ATmel AVR vienen en DIP, al igual que el Propeller. El PSoC 3 y 5 no.
@tcrosley - Sí, ese es otro buen punto. Es algo que mucha gente le ha pedido a Cypress.
schmartboard tiene una solución smt para sumergir fácil de usar: youtube.com/watch?v=-32orELxkpE
+1. Usé PSOC 1 (núcleo M8C), en paquetes DIP, en los días en que el PSOC 3 y el PSOC 5 eran solo rumores. Veo que "PSoC 4" está disponible recientemente. Ahora 4 sabores?
hmm, esto se publicó en 2012, pero preguntaré de todos modos. Dado que tiene un requisito periférico que no es convencional, ¿alguna vez pensó en pasarse a los softcore (Nios II de Altera y picoblaze y microblaze de Xilinx)? Con un núcleo suave en un FPGA, hay infinitas posibilidades sobre lo que se puede juntar en un solo FPGA.
@quantum231: Lo consideré pero: 1) Los FPGA parecían ser generalmente más grandes y más caros que los microcontroladores (y los robots a menudo tienen un espacio desesperadamente corto). Y 2) No tengo mucha experiencia con FPGA, y siempre es una molestia tener que aprender un conjunto de herramientas y una forma de pensar completamente diferentes solo para alguna aplicación menor.
No recomendaría estos para uso profesional, ya que tienen un historial de hacer que sus productos terminen su vida útil/se vuelvan obsoletos con poca antelación.

Para mí, el requisito más importante era si el dispositivo/el IDE es compatible con mi PC que no es Windows (Linux). Resultó que para mí Atmel AVR tenía mejor soporte (código abierto) que PIC.

Usar más de una plataforma está bien. Selección del mejor para cada trabajo y también disponibilidad de código y ejemplos relacionados con el trabajo.

La mayoría de ellos tienen buenas herramientas de desarrollo, arduino tiene Visual Studio, Pic tiene una gran herramienta y otros también. Entonces, para mí, es qué tan rápido y fácil puedo hacer bien el trabajo, + ¿cuántas personas de código abierto trabajan en lo mismo?

Pero, ¿cómo se encuentra esa información sin dejarse engañar por el desorden de marketing? Quiero decir, tenemos que encontrar personas que hayan usado el hardware y la cadena de herramientas para obtener toda esa información. ¿Cómo encuentra tales comunidades en su trabajo? ¿O es que te basas en lo que te dice el Ingeniero de Aplicaciones?
Puede hacer preguntas en varios foros como este. Explique su aplicación y pida ayuda

Los microcontroladores son un mundo que cambia rápidamente, hay muchas ventajas de aprender en los chips "in" actuales y los IDE más populares son la ayuda de la comunidad. Como persona de PIC, diría que Aduino probablemente tiene las mejores placas IDE y de desarrollo para novatos en este momento y puede agregar mucho a una placa aduino básica sin tocar un soldador.

Cualquiera que use un aduino para cosas de la vida real pronto querrá seguir adelante, pero para entonces habrá aprendido mucha electrónica digital básica y un buen subconjunto de C para usar fácilmente algo más adecuado.

Como alguien mencionó que eliges el chip para tu proyecto, he visto algunos proyectos que usan chips ARM como simples sensores de temperatura o convertidores AD, de la misma manera que he visto aduinos y PIC 16 llevados al límite para generar un juego de invasores del espacio, FPGA son geniales y es bueno entender HDL si te estás metiendo en serio en el diseño electrónico... pero desafortunadamente no hay muchos proyectos en el mundo real en los que necesitarás usar uno. La mayoría de los trabajos son de bajo volumen, diseño rápido y precio limitado y aquí es donde el uC de 8 bits reina supremamente

Ya veo, ¿cuáles son las limitaciones de Arduino que una persona haría que una persona se moviera más allá de ellas? ¿ARM tiene más poder de procesamiento que PIC y Arduino, tiene periféricos que no están presentes en PIC y Arduino, o su cadena de herramientas es superior a la que existe para PIC y Arduino? ¿Por qué tanto ruido sobre los chips basados ​​en ARM? Sé que tienen un consumo de energía muy bajo, pero ¿por qué otra razón se elegiría ARM para proyectos "serios"?

Dado que muchas de las respuestas publicadas se centran en el uso de aficionados, aquí vienen varias recomendaciones dirigidas solo a desarrolladores profesionales.

Requisitos mínimos básicos
Si la MCU no cumple con todos estos requisitos, no debe utilizarse.

  • Ha estado en producción durante al menos 1 año.
  • La errata de silicio está disponible y ha sido revisada al menos una vez.
  • Vigilancia interna.
  • Detección interna de baja tensión/caída de tensión.
  • Memoria flash en chip.
  • protección ESD.
  • JTAG/SWD o alguna interfaz de depuración de un solo cable.
  • El núcleo utiliza bytes de 8 bits y firma de complemento a 2.
  • Muestras y tableros de evaluación fácilmente disponibles.
  • Tiene soporte técnico receptivo directamente del fabricante.

Señales de advertencia: hardware de MCU
Estas son cosas con las que no debe perder el tiempo en el año 2019.

  • Modos de direccionamiento oscuros que deben ser manejados por el programador. Incluyendo el uso de palabras clave oscuras y no estándar para acceder a los datos de la ROM.
  • Limitaciones severas de memoria de pila o profundidad de pila.
  • 16 bits int, que a su vez viene con todos los peligros ocultos de las promociones de enteros del lenguaje C.
  • No se puede realizar aritmética de 16 o 32 bits sin empezar a hervir.
  • No atrapa si ejecuta código en secciones de datos.
  • Sin búfer de seguimiento de instrucciones.
  • Viene con periféricos de hardware exóticos para los que no tiene uso.

Señales de advertencia - cadena de herramientas

  • Se basa en simuladores de software en PC o algún tipo de cargador de arranque, en lugar de actualizar todo el MCU y usar la ejecución/depuración en el chip.
  • No viene con controladores/ejemplos/bibliotecas prefabricados escritos por profesionales. Depende de los desarrolladores que reinventan la rueda o de los foros de Internet/código abierto.
  • El CRT para el compilador C no cumple con los requisitos enumerados aquí .
  • El compilador de C viene con una larga lista de funciones estándar de C que no son compatibles.
  • El compilador C aún no es compatible con C11 (independientemente de si tiene la intención de usarlo o no).
  • El IDE arroja múltiples errores extraños del enlazador la primera vez que intenta un programa "hola mundo".
  • Encontrar muchos errores del IDE o del compilador durante las primeras semanas de uso.
Esto es demasiado dogmático. Ha omitido por completo el costo, las opciones de empaque (¡código abierto! = no profesional), la calidad de los periféricos, etc., etc. En general, no estoy en desacuerdo con la mayor parte de esto, pero cosas como "limitaciones [...] significa que necesita conocer la compensación que condujo a estas limitaciones en primer lugar.
@awjlogan Las opciones de costo y empaque son muy específicas del proyecto, por lo que no tiene sentido abordarlas aquí. No dije que el código abierto no sea profesional, pero una empresa que subcontrata su cadena de herramientas a código abierto y su soporte a sitios como SO no es profesional. Aunque los proyectos de código abierto con muy pocos colaboradores tampoco son profesionales, como podemos ver con los puertos del compilador de código abierto a varios MCU exóticos. No debería haber ninguna razón para elegir una MCU con stack limitado en el año 2019.
Claro, son específicos del proyecto, pero aumentó su costo de referencia de inmediato al especificar 16/32 bits solo en su lista (escaneo rápido de Digikey) y no he visto un M0 de 6 pines recientemente. Si no necesita algo (incluido el tiempo), no gaste el dinero extra en ello, esas son las decisiones que debe tomar como profesional. Pero, sí, las buenas herramientas son tan esenciales, no podría estar más de acuerdo.
@awjlogan LPC81X ha existido por más de 5 años. Hace poco me enteré de Cypress PSoC4, que parece interesante. Etcétera. La cantidad de pines no suele ser un argumento, solo el tamaño y el tipo del paquete. Si puede tolerar QFN o BGA, puede obtener chips muy pequeños.
de acuerdo en eso, sus opciones se reducen a un tamaño pequeño (sin embargo, lo mismo para cualquier arquitectura). Mi punto general es que si bien todas las cosas en su lista son deseables, también debe estar lo suficientemente informado como para saber cuándo romperlas.
@awjlogan El argumento principal aquí es no elegir un 8 amargo asqueroso solo porque uno ha estado viviendo debajo de una roca durante los últimos 20 años, sino tomar una decisión informada basada en cómo se ve el mercado ahora, no en cómo se veía en el año 1995.
Absolutamente, estoy totalmente de acuerdo, pero una "decisión informada" debe ser racional y no dogmática.
@awjlogan Le resultará difícil encontrar a alguien que sea más dogmático que el lobby de 8 bits. Se quedaron sin argumentos válidos hace 10 años y aún continúan.
De nuevo, ¡totalmente de acuerdo! :)

Si va a realizar tareas de propósito general que pueden tener procesamiento analógico y digital, entonces hubiera preferido PSoC por su IDE, depurador y la gran cantidad de cosas que puede hacer con ellos.

He usado PSoC3 en la universidad para mis proyectos y es bastante simple de dominar. Lo único es que si necesita algunos chips de rendimiento, aún deberá obtenerlos por separado. Tiene puertos lo suficientemente buenos. Entonces, si está buscando algunos chips de rendimiento junto con el kit de desarrollo, mejor busque componentes separados.

Podría valer la pena agregar un poco más de información sobre el PSoC para que sea más útil, un par de otras respuestas ya lo cubren.
@PeterJ: quería dar esto como un comentario para la respuesta de Rocketmagnet, pero no tengo reputación para hacer un comentario.
¿Hay alguna razón por la que no optó por un diseño basado en softcore como usar Nios II en Altera FPGA o microblaze/picoblaze en un Xilinx FPGA? Se pueden usar para obtener el mismo efecto que el PSoC y diría que, en muchos sentidos, son una opción superior.
@quantum231: Lo aceptaría, pero la principal limitación para mí en ese momento era el presupuesto y estaba disponible de forma gratuita en nuestro departamento de electrónica.