Lógica programable: construya usted mismo un módulo CPLD

Blog

HogarHogar / Blog / Lógica programable: construya usted mismo un módulo CPLD

Aug 07, 2023

Lógica programable: construya usted mismo un módulo CPLD

Un dispositivo lógico programable complejo (CPLD) es una excelente pieza de hardware para tener en su repertorio. Como su nombre lo indica, puede programar estos chips para que cumplan las funciones lógicas que necesita. Esto podría

Un dispositivo lógico programable complejo (CPLD) es una excelente pieza de hardware para tener en su repertorio. Como su nombre lo indica, puede programar estos chips para que cumplan las funciones lógicas que necesita. Esto podría ser reemplazar un chip obsoleto, o tal vez simplemente una forma de aprender y probar diferentes técnicas. ¿Qué mejor manera de aprender que conseguir un CPLD y probarlo?

Creé un módulo CPLD con la intención de poder conectarlo a muchas cosas, incluidas placas sin soldadura, pero lo arruiné. Parece que el espacio para enchufar disponible en una placa sin soldadura es de 1,1”, hice una huella de 1” de ancho sin dejar espacio para una fila de cables en ambos lados. Duh.

Pero permítanme retroceder y mostrar más sobre lo que estoy haciendo. Quería crear una pieza lógica programable que pudiera construirse como un kit que se pudiera soldar fácilmente en casa, que se pudiera programar en un circuito y que pudiera funcionar a 3.3. o 5 voltios.

Para implementar un kit fácilmente soldable, opté por una pieza CPLD más antigua que también tiene versiones de 3,3v y 5v que mantendrán su programación independientemente de la potencia. La lógica en sí es un CPLD IC de la familia Altera Max con dos versiones que se adaptan a la placa con 32 o 64 macroceldas. Una macrocélula es el componente lógico básico y se programa con “términos” lógicos y luego se interconecta a otras macrocélulas a través de una interconexión programable.

Al observar el esquema, se puede ver que no hay mucho que hacer: básicamente el CPLD, el circuito para la programación en circuito y un oscilador para controlar la lógica en el CPLD.

Esta pieza, conocida como EPM7032 y EPM7064, viene en un portador de chip con plomo de plástico (PLCC) de 44 pines o, a veces, llamado J Lead debido a la forma de J de los pines. Este paquete se puede insertar en un zócalo de orificio pasante o soldarse directamente a la PCB.

Se incluye el oscilador integrado para que el CPLD pueda hacer cosas con estado y crear contadores rápidos por sí solo sin la necesidad de un reloj externo. Si hay un reloj externo disponible, el reloj de mayor velocidad en el módulo se puede usar para crear un evento de reloj en cada flanco ascendente o descendente del reloj externo y aun así cumplir con las pautas para CPLD/FPGA que dicen que realmente debería usar el red de reloj global interna y no controlar una entrada de reloj "asincrónicamente". Este oscilador está clasificado para un voltaje de suministro de entre 1,8 y 5,5 voltios.

Si miras el video, me verás discutir mi preferencia personal sobre cómo trato el pin de habilitación “INH” en un oscilador; En pocas palabras, tiendo a dejarlo flotando después de comprobar en la hoja de especificaciones que hacerlo es legal.

El tipo de razones que pasan por mi mente cuando trato con este tipo de función incluyen el hecho de que no me gusta conectar un pin de entrada directamente a un riel eléctrico si puedo evitarlo. Es decir, prefiero usar una resistencia en serie que limite la corriente durante los transitorios, incluso si se supone que no es necesaria.

A lo largo de los años, he visto problemas en la producción (cantidades masivas) donde ocasionalmente algo como el ciclo de energía permitirá que un pin conectado directamente a un riel eléctrico tenga un voltaje más alto que el chip en sí, lo cual es malo. Por último, con un pasador atado a un riel eléctrico a través de una resistencia, ya sea eléctrica o de tierra, uno puede cambiar de opinión más tarde y usar el pasador. En mi experiencia, esto es especialmente cierto con las puertas no utilizadas, que, como probablemente sepa, nunca deben dejarse flotando o desconectadas. Al usar un pull-up tienes un punto donde puedes conectar una señal y usar la puerta sin tener que cortar rastros de cobre.

El conector de 10 pines y un puñado de resistencias componen el circuito de programación. Si todas las resistencias fueran pull-ups, usaría una red de resistencias pero, por desgracia, una está a tierra.

Para programar un CPLD independiente como este, se necesita un programador dedicado. Es fácil para mí decirlo, ya que normalmente tengo varios por ahí, pero si no tienes uno, no es demasiado doloroso entrar al juego. Un “Altera USB Blaster” aprobado cuesta $50 y está disponible en lugares como Digikey. Tengo varios clones que obtuve de Ebay, incluido uno que es compatible con Altera, Xilinx y Lattice, todo en uno. Hay un proyecto y un código disponibles en Internet para hacer tu propio clon y lo tengo en mi lista de posibles videos para hacer un proyecto de hacer un clon de programador. También mostraré un diseño de escudo donde la placa principal, Arduino, PIC, etc., pueden realizar la programación.

El software necesario para compilar y programar el CPLD está disponible de forma gratuita en Altera, aunque se necesita la versión anterior 9.1 para esta parte anterior. La buena noticia es que es mi versión anterior favorita que tenía un analizador de tiempo intuitivo que se eliminó en versiones posteriores.

La PCB tiene un diseño simple de dos caras y tiendo a hacer un vertido de cobre para conexión a tierra y, a veces, para energía, siempre que la placa se preste a ello. A veces, el vertido se rompe tanto que puede provocar problemas o simplemente ser descuidado en el resultado final, por lo que, nuevamente, un vertido de cobre es una herramienta, pero debe gestionarse.

Muchos, si no la mayoría, de los paquetes CAD de hoy en día incluyen una vista 3D del producto final, aunque la precisión de la imagen es tan precisa como la de los modelos 3D utilizados para representar las piezas. Aquí se puede ver donde selecciono el modelo 3D para el zócalo de 44 pines, el conector de programación y el oscilador. Estos son algunos de los paquetes 3D que me gusta usar:

También muchas empresas tienen sus modelos 3D para sus componentes. Molex es sólo un ejemplo de una empresa a la que le va bastante bien en esto.

Los errores que cometí no afectan tanto la función como la estética, sin contar el problema principal que es que no encaja muy bien en ninguna placa sin soldadura.

Una vez que se me ocurrió que podría compartir el diseño con cualquiera, instantáneamente me sentí insatisfecho con el símbolo esquemático del CPLD y con la distribución de pines del conector de 40 pines, que es su huella general. Tomé un símbolo de conector de doble fila de 40 pines y lo adapté a una huella de 1”, sin embargo, en lugar de los pines numerados 1,2,3,4... en el costado como un paquete DIP, está numerado 1,3,5,7. … como un conector de cable plano. En consecuencia, es una huella no intuitiva para determinar cómo conectarse al módulo y solucionar problemas.

Del mismo modo, la configuración de pines de CPLD es un poco confusa; utilicé un conjunto de utilidades que se basan en el lenguaje de descripción de escaneo de límites (BSDL) para crear el símbolo. La mayoría de los grandes proveedores tienen archivos BSDL disponibles para sus piezas principales y estos le permiten crear símbolos y huellas (semi)automáticamente. Como cualquier pieza de automatización, debe tratarse como una herramienta y es posible que sea necesario masajearla más para obtener mejores resultados. En este caso, dejé que enumerara los pines alfabéticamente, lo cual es casi aleatorio cuando se trata de trazar un pin en el tablero. Digamos que ese día tenía prisa.

Pagas por esos atajos en algún momento del camino. Cuando vaya a revisar este módulo, me aseguraré de colocarle una clavija que coincida con la pieza en sí, de modo que saber dónde colocar la sonda de alcance sea tan fácil como mirar el símbolo esquemático.

Hay otras mejoras que son sobre todo estéticas o útiles a la hora de trabajar con la placa. El indicador del pin 1 debe ser más frecuente en varios paquetes y siempre me gusta un punto de conexión a tierra fácil para conectar conexiones a tierra o cables VOM. Probablemente agregaré esto agregando un conector de dos clavijas para que la energía y la tierra se puedan aplicar directamente a la placa en lugar de sujetarlas a las clavijas inferiores.

Antes de revisar el tablero quiero asegurarme de que funciona a pesar de los problemas físicos y estéticos. Después de aplicar energía y verificar que el oscilador funcionaba correctamente, conecté el programador y detectó el CPLD, aunque la versión de 3.3v era más nueva que el software de programación y apareció como un dispositivo “desconocido”.

Luego creé un contador en Quartus y le asigné números PIN. Una compilación y descarga rápida y la función de contador vista por el osciloscopio verificaron que el diseño era viable.

El circuito de prueba rápida en Verilog es bastante simple. El código se enumera a continuación y puede descargar un archivo ZIP que contiene circuitos de prueba esquemáticos y Verilog como proyectos Quartus II (requiere la versión 9.1).

Como mencioné, haré una segunda revisión de la placa prestando más atención a los detalles necesarios al compartir un diseño o solucionar cualquier problema. Como necesito que el ancho del conector inferior sea de 0,9” o menos, puedo seguir adelante y hacerlo de 0,6”, que es una huella DIP “ancha” estándar. Hacerlo significará que las clavijas de la parte inferior sobresaldrán a través de la huella del zócalo CPLD. No haría esto en una situación de producción, ya que en ese momento es un ensamblaje manual, pero uno de los objetivos era hacer un kit que se pueda soldar a mano. El compromiso para la soldadura manual es que el oscilador realmente necesita estar en una caja de montaje en superficie SMD, las versiones de orificio pasante son enormes y normalmente no admiten el rango de voltaje que quería.

También me gustan mucho los LED de montaje en superficie, creo que se ven geniales.