¿Cuál es la forma moderna de hacer lógica programable a pequeña escala?

Estoy diseñando un circuito para una bobinadora electrónica. Tiene algunos contadores binarios, detectores de igualdad, decodificadores de 7 segmentos y flip flops.

¿Cómo es posible obtener toda esta lógica en 1 chip programable sin recurrir a tecnología totalmente retro?

¿Hay algo como un GAL que sea compatible con la programación en una computadora moderna?

Puedo hacerlo fácilmente con chips CMOS o TTL estándar, pero sería una buena oportunidad de aprendizaje intentar programar mi propia lógica.

¿Por qué querrías implementar eso con lógica? ¿Necesitas una velocidad muy alta? No me parece. ¿Por qué no simplemente usar un microcontrolador? Luego programa el comportamiento que necesita. Claro que suena tonto usar una solución de software para hacer una función lógica simple. Pero es más fácil y más flexible.
Ya estoy familiarizado con la construcción de circuitos lógicos y me gustaría aprender a hacerlo porque puedo usar esas habilidades para hacer otros proyectos. Me siento más cómodo con el diseño de circuitos cableados que con la programación secuencial. Puedo ver por qué otras personas usarían un microcontrolador.
CPLD es el acrónimo de FPGA 'pequeño', dispositivo lógico programable personalizado. Lattice, como se menciona en la respuesta a continuación, es probablemente la mejor fuente para comenzar a buscarlos. Pero en realidad, PIC o Arduino serían el lugar donde los ingenieros de 999/1000 (posiblemente subestimados aquí) comenzarían para su aplicación específica (velocidad muy baja).
Hola, @Neil_UK, es interesante que tus ingenieros de '999/1000' usen una MCU. He visto todo lo contrario :-) Pocas personas en las empresas en las que he estado eligen una MCU para un trabajo de lógica, ni más que ellos. Usaría un amplificador operacional como regulador de voltaje ... es posible, pero la herramienta incorrecta. He usado ambos, algunos soy muy agnóstico. Parece que es solo tu experiencia personal, aunque me imagino que no has trabajado con varios miles de ingenieros :-), y solo puedo hablar desde la mía, obviamente. Por precio, soporte pero más sencillez y modo fallo, me parece una locura y entiendo los contraargumentos.
@TonyM 999/1000 pretendía ser provocativo y, por supuesto, es una figura PDOOMA. Creo que mi comentario influyó en mi último empleador más reciente, donde rociamos Arduinos como Smarties para equipos de prueba personalizados, aunque el producto en sí usaba una MCU/radio TI de micropotencia. Cada vez que hablábamos de un homer que estábamos haciendo, generalmente estaba basado en Arduino.
@Neil_UK, provocó una reacción... pero un poco más de "Pobre, pobre chico" que de "Wow, este tipo raro nos gana a todos en un pozo de mina" :-DI en realidad me encantaría trabajar en proyectos donde la solución divertida que harías en casa no es el polo opuesto de la "solución de ingeniería adecuada", pero no aparecen tan a menudo. El equipo de prueba generalmente suelta un poco los frenos. De hecho, no me importa lo que busquemos, siempre y cuando no cumpla con los requisitos y no sea la forma favorita de alguien que resulte ser la única forma que conocen. Que tengas un fin de semana relajado, jefe :-)
@TonyM ¿Qué piensa acerca de las diversas opciones de programación de FPGA esquemáticos visuales? Como Quartus de Altera o ISE de Xilinx o Simulink para Matlab.
@NickCollier, como han dicho otros, Quartus e ISE tienen varias entradas de diseño: esquema, AHDL, VHDL, Verilog y C. Brevemente: el esquema es demasiado limitante y lo arrastra a cómo se hace, no solo a lo que quiere; la basura antigua de AHDL; C solo está ahí para usar algoritmos de transformación rápidamente; VHDL es brillante; No sé mucho Verilog. Simulink ofrece VHDL en FPGA a medida que aumenta la velocidad con respecto a la simulación de PC o situaciones raras que no importan, no para la entrada del día a día (proyecto trabajado con otros 4 ingenieros que intentaron exactamente eso, fallaron gravemente). He hecho un montón de VHDL en Quartus/ISE, hazlo Nick, te alegrarás, genial en CV.
@TonyM Vi un video sobre programación estructural VHDL. Parece que si ha descrito un circuito lógico simple, que luego se 'pone en una caja' y luego se repite, debe volver a escribir la declaración para el circuito lógico cada vez que se usa. Espero que solo pueda referirse al nombre de la caja sin tener que volver a escribir su contenido.
No, eso sería una locura. VHDL está muy estructurado, permite una buena abstracción y reutilización. Pero no puedo enseñarte sobre eso en una conversación de comentarios. Sumérgete en un tutorial de VHDL, hay mucho por ahí. Si quieres un entrante, ve al chat (si puedes, lo haré yo si no puedes) conmigo y podemos ir más allá.
@TonyM Tal vez vi el video equivocado. Intentaré aprenderlo yo mismo tanto como sea posible. Sabía que era posible chatear o enviar mensajes privados en SE.

Respuestas (4)

La forma moderna de hacer un circuito lógico digital de este tipo sería en un FPGA o CPLD.

La forma en que recomendaría para su circuito lógico particular es un CPLD. Eche un vistazo a la familia Altera MAX10 o los dispositivos Lattic iCE40. Puede comprar una placa de demostración económica como iCEStick, descargar las herramientas de desarrollo gratuitas y obtener algo para experimentar en casa o en el trabajo.

Tendrá que aprender VHDL (mi preferencia) o Verilog, pero eso es parte del aprendizaje que mencionó que le interesa hacer.

Podría usar un microcontrolador para producir un resultado similar pero con una función bastante diferente ... pero no responde a su pregunta. Y tendrías que aprender a programar eso para que haya trabajo de cualquier manera.

(Sé que Lattice llama a iCE40 una familia de FPGA, pero en el mercado de chips lógicos, tienen más en común con los CPLD. El nombre servirá para este propósito).

Solo un comentario rápido: ice40 fue hace unos diez años. La corriente principal de Bow Lattice es MachXO2, que es mi preferencia, en realidad para esas cosas. El Max10 de Altera también tendría ADC interno, pero el cuarto de alguna manera se volvió menos amigable que el diamante...
Hola @GregoryKornblum, gracias por el comentario. Al defender estos dispositivos me basé en la popularidad y los costos de venta de los distribuidores. Siempre encontré a Quartus como el más amigable para los recién llegados de todos. Buena recomendación para el MachX02.
Resulta que uso ambos. Francamente, se puede decir que Altera no considera que MAX10 sea muy importante. MachXO2 funciona mucho mejor.

Los microcontroladores son la forma moderna, pero si tiene razones para evitarlos (seguridad o no sabe C), necesita usar FPGA de bajo costo, ya sea de altera (ahora Intel), xilinx, lattice o microsemi.

Entonces, ¿hay algún FPGA pequeño con menos de 1000 puertas?
Lo dudo. Cuentan las LUT, lo que equivale a entre 10 y 20 puertas, por lo que las más pequeñas tienen varios cientos de ellas. Por cierto, solo cuestan un poco más que los microcontroladores.
De paso. Aunque generalmente hay una manera de diseñar FPGA puerta por puerta, no se recomienda en absoluto. Normalmente la gente usa VHDL o (los enfermos entre nosotros) verilog. Esto es mucho más eficiente para diseños de más de 10-20 puertas
Me doy cuenta de que Xilinx y Altera ofrecen opciones de programación esquemática visual. Xilinx tiene ISE y Altera tiene Quartus. Parecen más fáciles de usar que un entorno basado en texto.
Tal vez para empezar. Si te tomas en serio el uso de fpga, muy pronto necesitarás VHDL.
Bien, ¿cuáles son las limitaciones de estos entornos de programación visual? Me imagino que en algunos casos un objeto basado en texto es idéntico al símbolo en un esquema.
Tanto la imagen como el texto representan las mismas cosas. Pero con el texto tienes cierto nivel de abstracción, como el acondicionamiento que se compila en los multiplexores y otras cosas, mientras que en el diseño visual dibuja todo eso.
ISE y Quartus ofrecen muchas opciones de programación diferentes, así que puedo ver cuál es la mejor.
Me temo que aprender todo eso es demasiado esfuerzo. Nuevamente, a corto plazo, vaya con lo que sea fácil y natural para usted, a más largo plazo, VHDL o verilog.

Agregando a la respuesta de TonyM:

Si solo desea algo de lógica programable y no desea un procesador secuencial (un microcontrolador), aquí tiene un pequeño chip iCE40:

http://www.mouser.com/ProductDetail/Lattice/ICE40UL1K-SWG16ITR50/?qs=XJu%252bLGjWfSDdbhkO3WpKug%3D%3D

También hay partes como esta que le brindan pequeños bloques lógicos para trabajar: http://www.ti.com/product/cd4048b

De hecho, acaba de salir al mercado un nuevo dispositivo:

https://www.dialog-semiconductor.com/products/greenpak

Es la serie GreenPack de Dialog semiconductor. Puede implementar la mayor parte de la lógica desde chips discretos dentro de ellos, incluir LUT personalizados, algunos de ellos también incorporan ADC para que pueda realizar funciones analógicas, etc.

Están disponibles en distribuidores bastante baratos, unos 0,42€@100:

https://www.mouser.es/ProductDetail/Dialog-Semiconductor/SLG46620G?qs=%252B6g0mu59x7KnBmBQ6c05jQ%3D%3D

Espero que encuentres esto útil.