Diseño de PCB modular

2

Estoy diseñando un comprobador de continuidad de arnés básico basado en los registros de turnos implementados en los CPLD Max V. Estoy apuntando a un diseño de PCB modular / extensible para el proyecto ya que tiene varios beneficios (costo, menos complejidad).

Un uC se comunica con mis CPLD mediante SPI. De lo que no estoy seguro es de cómo hacer una mejor cascada de estos CPLD para obtener un registro de desplazamiento más grande. En un TQFP de 144 pines, solo tengo 114 pines IO. Por lo tanto, solo puedo implementar un Serial In Parallel Out de 114 bits o un Parallel In shift register. Pero al conectar en cascada estos 114 dispositivos IO, puedo obtener registros de turnos mucho más grandes.

Sin embargo, me gustaría colocar estos CPLD adicionales en una PCB diferente. Esto tiene la ventaja de que simplemente puedo extender el dispositivo cuando lo necesite. En arneses más pequeños, un solo PCB de 114 puntos de prueba será suficiente. En los más grandes, puedo en cascada. En este momento, el CPLD es realmente solo un registro de desplazamiento. Pero en el futuro espero implementar una máquina de estado que posiblemente pueda implementar más funciones, como la suma de comprobación para verificar los contenidos enviados por la uC, etc. Pero eso es para más adelante y todo lo que sé es que solo usaría SPI para comunicación.

Como los CPLD necesitan SPI para la comunicación, supongo que debo pasarlos al registro de desplazamiento en cascada, es decir, cada dispositivo tendrá un pin de salida de serie (SO). Pero también tendrá que pasar CLK, Chip Select e incluso un pin SI / MISO en caso de que la unidad uC necesite leer el contenido del registro de desplazamiento. Cada CPLD impulsará el siguiente en la cadena al pasar CLK, SO, CS.

Creo que sería necesario amortiguar todas las señales que salen del PCB. Pero, ¿cuál sería la mejor manera de conectar realmente los PCB? Supongo que esto realmente depende de la velocidad de operación. Afortunadamente, la velocidad no es un problema y, por lo tanto, estoy operando a una frecuencia muy baja, solo 62.5kHz. Me gustaría poder aumentar esto, quizás a 500 kHz. No creo que necesite más allá de eso. En tales frecuencias, ¿cuál es la mejor manera de conectar PCB en cascada?

Tenga en cuenta que soy consciente de que puedo comprar un dispositivo grande de 324 pines. Me temo que no puedo usar eso ya que no hay manera de inspeccionar BGA aquí localmente. Así que me quedo con los paquetes TQFP.

También soy consciente de que el tema, quizás, se relaciona principalmente con el diseño de PCB, pero también espero poder obtener algunos consejos centrados en CPLD / FPGA sobre qué señales debo enviar, ya que no estoy tan seguro. sobre eso.

Agradecería cualquier respuesta.

Más información basada en la respuesta de Keven:

La razón por la que creemos que las tarjetas de la hija se beneficiarían es que la mayoría de los arneses que montamos tienen menos de 70 cables. Sólo hay 5 arneses que tienen más de 250 cables. Un solo circuito grande sería demasiado costoso. La razón por la que la PCB sería grande es porque los conectores de acoplamiento que utilizamos (62 pin D-Sub) son bastante grandes físicamente.

Así que pensamos en dividir la PCB al tener una placa base que alberga la interfaz de usuario, interfaz LCD, CPLD, tarjeta SD, controlador LED, etc. Esto tendría aproximadamente 62 puntos de prueba.

La tarjeta secundaria también tendría 62 puntos de prueba y solo contendría CPLD adicionales y los conectores. Este PCB también sería mucho más pequeño que la placa base. La placa base podría probar el 70% de nuestros arneses, con unidades adicionales que nos permiten expandir los puntos de prueba cuando sea necesario. Esto no solo sería rentable, sino que también haría que el sistema general fuera mucho más sencillo. Los chips, por sí mismos, son realmente baratos. El Max V 240Z que estoy usando cuesta solo $ 5. Sin embargo, el costo para PCB de cuatro capas es el factor limitante para nosotros.

Cada tarjeta secundaria tendría conectores para programar los CPLD y para conectarse a otros PCB. No creo que programar cada CPLD sea un gran esfuerzo, especialmente porque realmente no necesitaré cambiar ninguno de los códigos. La unidad uC ni siquiera sabrá que los registros de desplazamiento están en cascada ... bueno, excepto por el hecho de que podría ser capaz de detectar la presencia de PCB adicionales para que conozca el ancho general. Creo que no debería ser demasiado difícil de hacer.

    
pregunta Saad

3 respuestas

2
  

Me gustaría colocar estos CPLD adicionales en una PCB diferente. Esto tiene la ventaja de que simplemente puedo extender el dispositivo cuando lo necesite. En arneses más pequeños, un solo PCB de 114 puntos de prueba será suficiente. En los más grandes, puedo en cascada.

Hay varios niveles de modularización a los que puede aspirar. El lugar donde desea detenerse depende de su caso de uso específico. En el nivel más básico, el hardware debe diseñarse de modo que pueda seleccionar la cantidad de módulos en uso después de la etapa de diseño. La dificultad de cambiar la cantidad de módulos, el espacio disponible, la complejidad deseada del software (y el espacio disponible para el software, especialmente en un CPLD) y el costo del sistema serán factores clave en su decisión.

Hardware

La forma más sencilla y económica de hacerlo es crear una PCB (¡No necesita varias PCB para el diseño modular) y poner huellas para su número máximo de CPLD deseado en la PCB. Si necesita más IO, puede soldar otro CPLD. Obviamente, esto no es algo que quieras hacer muy a menudo.

En la siguiente etapa, querría crear tarjetas secundarias para poder agregar y eliminar módulos más fácilmente. Usted preguntó:

  

¿Pero cuál sería la mejor manera de conectar realmente los PCB?

Esto depende de la arquitectura de su sistema y la cantidad de módulos. Si sabe que nunca querrá más de, digamos, 3 módulos a la vez, simplemente coloque tres conectores en la placa principal. Estos pueden ser conectores de borde, o conectores apilables, o lo que quiera que no requiera cables. Si el número de submódulos es demasiado grande para adaptarse a los conectores de cada PCB, debe considerar el apilamiento (si su bus puede manejar el fanout de su número máximo de módulos) o la conexión en cadena (si necesita almacenar el búfer). señal o espacio vertical es limitado) los módulos.

Muchos conectores están diseñados para este propósito; consulte la sección "Tablero a tablero" de su distribuidor o fabricante favorito, y muchos están diseñados para interferencias extremadamente bajas y de alta frecuencia: 500kHz no es nada , a menos que esté usando cabeceras de separación PTH de 0.1 " y tiene señales de cambio rápido (incluso entonces, probablemente esté bien). Verifique la fuerza de acoplamiento de sus conectores solo para estar seguro, pero si solo tiene unos pocos pines, la huella de su interconexión no soporta bien las tensiones Si el sistema está sujeto a vibraciones, necesitará separadores. A menudo es aconsejable diseñar la interfaz de tal manera que se puedan diseñar diferentes módulos para que interactúen con la placa base en el futuro. Los pines son baratos. repuestos por si acaso!

Software

Si su número de módulos lo admite, simplemente puede agregar una línea de selección de esclavo para cada módulo. Esto no es realmente una solución de software, pero quería mencionarlo.

Si no le importa programar cada CPLD de manera diferente, puede construir el sistema de manera que el microcontrolador lo vea como un registro de desplazamiento gigante (que usted sugirió). Si agregó o eliminó un módulo, el espacio de direcciones de ese módulo simplemente se desperdiciaría, y se usaría tiempo adicional para transmitir a direcciones que no existen. Sin embargo, cada módulo tendría que "conocer" su espacio de direcciones, lo que haría que la programación del sistema completo fuera una lucha.

Una solución más versátil es utilizar el direccionamiento de software para acceder a cada submódulo. En un 'modo de programación' (quizás un botón en el módulo, o simplemente conectando uno a la vez), podría asignar una dirección al CPLD. Al asignar a cada CPLD una dirección diferente, puede agregar o eliminar módulos a voluntad, y solo tiene que ajustar la actividad del microcontrolador (que supongo que es más fácil de ajustar que el CPLD).

Mi sugerencia para este proyecto

Si un dispositivo de 324 pines solucionará todos sus casos de uso previsibles, entonces el método de un solo PCB debería funcionar bien. El método de selección de esclavos múltiples le permitiría programar todos los CPLD simultáneamente con un solo programador. Lo sentimos, pero este proyecto como se describe no parece ser un candidato para tarjetas de hija.

    
respondido por el Kevin Vermeer
2

Otros chips funcionan de esa manera con SPI.

Excepto, solo pasan los datos en serie a través de un pin SDO.

Los datos se sincronizan en el chip 1 y, a medida que pasan por el registro de cambios, caen del extremo y del pin SDO.

Las señales SCK y SS solo se enrutan a cada chip (los chips no necesitan 'pasarlos'), solo se reciben de la µC.

Por ejemplo, eche un vistazo al DS1267 potenciómetro digital SPI. Especialmente en la página 4 donde se habla de dispositivos en cascada.

    
respondido por el Majenko
1

A su velocidad de reloj, puede ejecutar el spi en un dispositivo fuera de él a un conector de cadena tipo margarita al siguiente.

Pero también puede conducir todos los dispositivos en paralelo, posiblemente utilizando algunos chips de controlador de línea o búfer en la tarjeta de control de usuario.

En un diseño simple, necesitaría una selección de chip para cada periférico SPI. Pero también puede utilizar una sola selección de chip para todos ellos y enviar una dirección de destino antes de los datos. Las tarjetas podrían tener conmutadores dip de selección de dirección, o simplemente puede personalizar el archivo CPLD para cada uno con su dirección prevista.

Aunque probablemente no valga la pena a menos que esté muy restringido, puede guardar un pin adicional si combina el pin SDO / SDI (MOSI / MISO) en una sola señal bidireccional, solo tiene que diseñar un protocolo donde hablar y escuchar no lo hagan. t se superponen (la mayoría de las veces, los datos "escritos" durante los ciclos de reloj de lectura se ignoran de todos modos) y si el administrador de SPI de su unidad de usuario es muy limitado, es posible que tenga que hacerlo en su lugar, aunque a su ritmo de reloj eso todavía no debería ser un problema .

    
respondido por el Chris Stratton

Lea otras preguntas en las etiquetas