Circuitos de autodetección de varias tarjetas

1

Pronto necesitaré construir varias placas donde soldaré un DUT, para ... Probarlo.

Para acelerar el tiempo de prueba, estamos trabajando en un enfoque de múltiples tableros: cada tablero tendrá cuatro conectores, norte, sur, oeste y este, y puede conectar muchos tableros juntos, como las piezas de un rompecabezas.

Tendremos una placa madre adicional, que se conectará a uno de los bordes, conectores libres. La placa madre debe poder seleccionar y activar una placa hija a la vez.

Imagen bonita:

Loquenecesitoesunaseñalde"habilitación de placa", separada para cada placa hija. En cada placa hija tendremos un chip de soporte un tanto inteligente, es básicamente un esclavo I2C, la placa madre puede hablar con él, y presenta algunas posibilidades agradables, algunos LUT, cuatro comparadores, un par de temporizadores, etc. # SLG46826 si quiere echarle un vistazo). Básicamente es un FPGA extremadamente pequeño con algunas capacidades analógicas.

Dado que la parte SLG tiene una dirección I2C configurable, la forma básica de hacer lo que necesito es simplemente agregar un conmutador DIP de 4 bits (o solo granos de café) y configurar manualmente las placas cada vez que (re) construya la matriz . Tenga en cuenta que fabricaremos aproximadamente 100 de las tablas hijas, y tenemos un equipo de personas que trabajan con ellas, por lo que puede suceder que elija algunas del cajón y necesite reconfigurarlas.

Me gustaría idear algún tipo de capacidades de autodetección, he estado reflexionando sobre el problema durante algunos días y no se me ocurrió nada que sea tan bueno como me gustaría.

Por supuesto, hay muchas restricciones para los tableros, aquí están las que creo que son más limitantes:

  • No estamos limitados por PIN en los conectores norte sur este oeste, puede asumir que tiene muchos (10+) contactos disponibles para las capacidades de autodetección
  • Estamos limitados a los pines en la parte SLG, puedo dedicar 6 o incluso 8 pines a esto, pero, por supuesto, menos es mejor.
  • La placa base es básicamente una gran unidad de usuario con I2C y algunos IO, conectados a una PC, por lo que puede ser tan inteligente como sea necesario
  • Las tablas secundarias deben ser perfectamente idénticas
  • No necesitaremos más de 16 tablas hijas conectadas, no necesariamente en forma cuadrada.
  • Quiero que la placa base pueda controlar toda la red desde un solo conector. Es aceptable que el conector sea específico, por ej. un conector sur como en la imagen.

He pensado en la configuración de escalas de resistencias utilizando los comparadores SLG, pero los comparadores solo pueden tener umbrales fijos, compartidos entre todas las placas.

He pensado en poder navegar por la cuadrícula habilitando el primer tablero, luego indicándole que habilite el norte, por ejemplo, ir al oeste ... Y así sucesivamente, pero esto tiene muchos rincones y peculiaridades y parece que necesita muchos pines en el SLG.

He pensado en un direccionamiento de fila / columna estúpido muerto, pero esto requiere mucho cableado, no aceptable.

Por ahora, la mejor opción que tengo es la solución de interruptor Dip / coffe bean, pero estoy convencido de que hay una forma inteligente de hacerlo que no he pensado.

    
pregunta Vladimir Cravero

3 respuestas

2

Mi primer comentario es que estás pensando demasiado en solo 100 tableros. También descarte la idea de una matriz y solo coloque los conectores norte y sur y encadéntelos en un vector lineal. Eso simplifica enormemente la selección automática de la dirección. Cada placa, a su vez, solo es visible hasta la anterior antes de que haya sido configurada e identificada.

El esquema general para probar de esta manera conlleva demasiada carga de costos para la lista de materiales de cada placa. Incluso el chip SLG46826 probablemente agrega demasiada carga.

Sugiero que un método mucho mejor es eliminar todos los conectores adicionales y el circuito especial de selección de direcciones y, en su lugar, agregar almohadillas de puntos de prueba en un lado de la placa. Luego, cree un elemento de texto simple con el número necesario de pogo pogo que pueda enganchar las almohadillas de puntos de prueba en la placa a prueba. Cada pin pogo está conectado por cables a la "placa base". Cualquier circuito especial para ayudar a la placa madre a manipular y monitorear la placa bajo prueba se coloca en la placa madre. De hecho, si cada placa es relativamente pequeña, los pasadores pogo y los postes de alineación necesarios pueden ubicarse directamente en la placa madre, lo que ahorra el cableado discreto de los pasadores pogo.

Usando este esquema, es rápido activar cada placa para probarla y la placa bajo prueba no necesita configuración manual. En el caso de que 100 se conviertan en 1000 tableros, simplemente puede duplicar la placa base y la fijación del pogo pogo para configurar estaciones de prueba adicionales.

    
respondido por el Michael Karas
1

Tal vez podría limitarse a conectar la 'Placa base' abajo a la derecha (o una ubicación fija conocida).

Luego podría trabajar con I2C pero controlar cómo se conecta el bus a las otras placas. Usted podría por ejemplo primer viaje a la izquierda. Configure la primera placa, luego conecte I2C a la siguiente placa a la izquierda, configure esa y continúe. Luego, al final de la fila, conecta uno, etc.

Para esto, necesitarás tener aisladores I2C. NXP / Nexperia tiene algunos, se llaman extensores de bus. También necesitarías descubrir la detección de presencia de la placa en cada borde.

Además, se quedará sin direcciones rápidamente si conecta los extensores al bus I2C. Por lo tanto, deberá controlar localmente los extensores aislados del bus principal I2C.

De todos modos, esta es una idea aproximada que necesita ser desarrollada, pero creo que podría servirle a su objetivo.

    
respondido por el gommer
0

Tuve un problema similar para una aplicación diferente y lo resolví dividiendo el problema en dos. Primero, debe crear una ruta preestablecida desde la placa base hasta la última tabla. Al priorizar las conexiones horizontales con un circuito simple, puede crear fácilmente una ruta "de serpiente" (en su imagen, de derecha a izquierda, arriba, de izquierda a derecha, arriba, etc.). Luego, en esta ruta preestablecida, una simple máquina de estados puede abordar secuencialmente cada placa. Espero que ayude.

    
respondido por el Luca

Lea otras preguntas en las etiquetas