Diseñando mi propio bus

8

Esta pregunta está más allá de mi pregunta anterior: Alternativas a SPI debido a EMI . Estoy jugando con la idea de diseñar mi propio bus de comunicación. Estaría agradecido si alguien pudiera echar un vistazo a mi diseño preliminar y decirme dónde estoy loco ...

Actualmente estoy usando un SPI de 2MHz que se transmite a través de cables de 10 cm a siete ADC en PCB separados (CS compartido, pero cada ADC tiene su propia línea MISO. Está golpeado), pero me gustaría reemplazarlo con algo diferencial para reducir EMI. El problema es que no hay muchos ADC con un bus diferencial, así que me pregunto si es posible diseñar mi propio bus. Al menos la capa física, y posiblemente el protocolo también.

Objetivos de diseño del nuevo bus:

  • usar componentes físicamente pequeños
  • bajo EMI
  • no más de 4 cables de datos (dos pares)
  • ancho de banda de > 300kbps de cada ADC. (> 2.1mbps en total)

Antes de escribirme como loco por pensar en esto, considera que puede no ser tan difícil hacerlo en un PSoC5 . En ese chip, ciertamente puedo diseñar mi propio protocolo en Verilog e implementarlo en hardware. Y hasta cierto punto, también puedo incluir los componentes de la capa física. Además, es posible que pueda tener siete de estas cosas al mismo tiempo, todas ejecutadas en paralelo en el maestro, una para cada esclavo para que pueda obtener un buen ancho de banda general.

Y aquí está mi idea preliminar:

Se basaría en I2C, ligeramente modificado para ayudarlo a conectarse a los componentes de la capa física. Las líneas SDA y SCL ahora son pares diferenciales. El par SDA tiene la propiedad OR-ing. Esto se logra usando un pin que solo puede conducir alto y uno que solo puede bajar. El par SCL es manejado exclusivamente por el maestro. La velocidad de datos se elevaría a al menos 1 mbps.

El maestro sería un PSoC5 con 7 módulos maestros. Los esclavos también serían PSoC5, con un módulo esclavo, y utilizarían el ADC integral.

Pensamientos:

  • No estoy muy seguro de cuál es la mejor manera de implementar las resistencias de recuperación y los componentes de limitación de velocidad de rotación.
  • Supongo que no necesito ninguna terminación. Si limito la velocidad de giro a aproximadamente 80 ns, debería ser bueno para un cable de 10 cm de longitud.
  • Eso obviamente no es un transceptor diferencial adecuado. ¿Estoy perdiendo el tiempo tratando de hacer uno fuera de las puertas?
  • Esas puertas no causan un sesgo. ¿Es probable que esto sea un problema?
pregunta Rocketmagnet

2 respuestas

4

Bueno, si vas a tener PSoC5 por todas partes, recientemente estuve leyendo sobre IEEE 1355 . La variante de enlace de señal DS-SE-02 puede hacer lo que quiera. Requiere 4 líneas de señal: una línea de datos y una línea estroboscópica en cada dirección. El único hardware dedicado que puedo encontrar que implementa 1355 es el engranaje Spacewire endurecido por rad, pero esta presentación IEEE afirma que puede implementarse en un FPGA con 1/3 de las puertas de un UART y operar a velocidades 100 veces más rápidas que un UART.

Una copia pública del estándar completo está disponible por cortesía de CERN si ' re arriba para un poco de lectura ligera. No he tenido la oportunidad de sentarme con todo, así que no puedo hablar por su rendimiento de EMI. Mirando la sección DS-SE, parece que tiene que controlar la impedancia en la línea de transmisión y terminar en el extremo receptor.

    
respondido por el Joe Baker
4

¿Has considerado usar RS485?

Ya hay muchos componentes diseñados para funcionar en buses RS485.

    
respondido por el Bruno Ferreira

Lea otras preguntas en las etiquetas