Tengo una pcb con un bus SPI con varios sensores que hay que conectar a este bus. Dado que no se recomiendan trazas de 90 grados en un diseño de PCB adecuado, me pregunto cómo conectar tantos sensores sin usar giros bruscos y trazas perpendiculares.
Estoy pensando en hacer triángulos para suavizar las conexiones, pero quería preguntar aquí antes si hay una forma recomendada de hacerlo.
PD: Tal vez alguien diga que las velocidades SPI no deberían tener problemas con esto, pero aún así es una pregunta válida para fines de aprendizaje.
EDITAR:
Ya que una imagen habla más que 1000 palabras...
Ese es el problema que estoy presentando: "¿cómo eliminar trazas de 90 grados en una conexión de bus?" (incluso si en este caso particular de SPI no tendré ningún problema, todavía despierta mi curiosidad)
Respuesta rápida: las curvas de 90 grados no son un problema para la mayoría de las cosas. No los hago puramente desde un punto de vista estético. Solo se convierte en un problema en algún lugar por encima de los 500 MHz, pero incluso entonces es cuestionable.
Hay tres razones para no hacer curvas de 90 grados: provoca una falta de coincidencia de impedancia y, por lo tanto, estropea la integridad de la señal. Las esquinas afiladas se redondean durante el proceso de grabado de PCB y pueden debilitar la traza. Las curvas provocan algún tipo de reflexión, no relacionada con el desajuste de impedancia.
Se ha demostrado que el problema de la falta de coincidencia de impedancia no es un problema. Hay muchas fuentes para esto, pero la mejor está en el libro "Diseño digital de alta velocidad: un manual de magia negra".
El debilitamiento de la traza puede ser significativo, especialmente si los anchos de la traza están al límite de lo que puede fabricar el taller de PCB. Pero personalmente nunca he tenido problemas con esto, y no conozco a nadie que haya tenido un problema. Así que no puedo decir que sea un problema grave.
En cuanto a la onda de la señal que rebota en la cara plana del trazo, no estoy seguro de si es real o una leyenda urbana de EE. Lo que sí sé es que necesita tasas de borde súper rápidas para siquiera molestarse en pensar en esto. Casi todos aquí en EE.SE pueden ignorar esto.
Lo que es más importante que la forma de la traza es la "santa trinidad de la integridad de la señal": la impedancia de la traza, la ruta de retorno de la señal y la terminación de la señal. Haz esto bien y casi todo lo demás no importa. Además, debe hacer esto para casi todas las señales en un diseño digital, ¡independientemente de la frecuencia!
Actualización: estoy agregando cosas para abordar directamente las cosas esquemáticas que el OP agregó a la pregunta.
Para empezar, no te preocupes por los 90 grados. No es un problema.
A continuación, considere que SPI tiene dos tipos de señales: un controlador que alimenta a un receptor y un controlador que alimenta a múltiples receptores. MISO y MOSI son ejemplos de un controlador que alimenta un receptor. SCLK y CS son las señales que alimentan múltiples receptores. Comprender esta distinción es muy importante, ya que cada tipo de señal requerirá diferentes técnicas de diseño de PCB.
Voy a describir cómo manejo estas señales. Raramente hago PCB de 2 capas, la mayoría son de 6 a 8 capas. Lo que esto significa es que todos mis PCB tienen planos de tierra y energía. Esto es muy importante, porque el manejo adecuado de la integridad de la señal es casi imposible en una placa de 2 capas. Además, este es un gran tema, así que no puedo escribir sobre todo. En su caso, le daré términos a Google.
Comenzaremos con el controlador que alimenta un receptor (MISO o MOSI), ya que este es el más fácil. Para estos, utilizo un tipo de terminación de señal llamado "Terminación en serie de origen" o, a veces, simplemente llamada terminación de origen. En el controlador, en serie con la señal, hay una resistencia simple de alrededor de 25 a 75 ohmios. El valor exacto de esta resistencia se ha calculado para que coincida con la impedancia de la traza menos la impedancia de la fuente del controlador. Entonces, si mi traza es de 50 ohmios y el controlador tiene una impedancia de salida de 20 ohmios, entonces mi resistencia será de 30 ohmios, +/- 10%.
La impedancia de la traza se puede calcular utilizando las diversas fórmulas para trazas "stripline" y "microstrip" (búscalas en Google). Normalmente busco una impedancia de traza de 50 ohmios y varío el ancho de la traza para conseguirlo. La capa de señal de la PCB debe estar muy cerca del plano, de lo contrario, la traza debe ser demasiado ancha. Construyo mi PCB Stackup (cómo se componen las capas de la PCB) para asegurar que el espacio entre las capas de señal y las capas planas sea el adecuado.
Una de las razones por las que es casi imposible hacer esto con una PCB de 2 capas es porque el espacio entre una capa y la siguiente es muy grande y básicamente no tienes control sobre él. La otra razón es que rara vez tiene un plano SÓLIDO debajo de las huellas de su señal.
Otra cosa es que rara vez conoce la impedancia de salida de su controlador. Por lo general, supongo que alrededor de 10 ohmios. Otras veces simplemente coloco una resistencia de 50 ohmios allí y espero modificar el valor una vez que se hace la PCB. Utilizo un o-scopio rápido con conexiones a tierra adecuadas y sondeo en el receptor cuando miro la señal.
Entonces, volviendo a nuestra señal... La resistencia se coloca tan cerca del controlador como sea razonable. Luego dirijo la señal directamente al receptor. En el camino, me aseguro de que el ancho del trazo sea correcto para la impedancia que quiero. A continuación, presto atención a la ruta de retorno de la señal. Google "Ruta de retorno de señal" y "Área de bucle". Es importante que la ruta de retorno de la señal diga directamente debajo de la traza de la señal, y el uso adecuado de las tapas de desacoplamiento/derivación se usa cuando la ruta de retorno tiene que saltar del plano de potencia al plano de tierra o viceversa.
Ahora, para las señales de un controlador-múltiples receptores. Estos son mucho más difíciles. Lo más importante es que la señal debe estar encadenada. En su caso, la salida de la MCU debe ir al esclavo 1, luego del esclavo 1 al esclavo 2, luego del esclavo 2 al esclavo 3. No puede hacerlo como lo dibujó en su diagrama, donde sale de la MCU y luego se ramifica a todos los esclavos. Lo segundo más importante es que la terminación de su señal debe estar al final de la línea, después del último esclavo, y no en la MCU como en el ejemplo anterior.
(Nota para los pedantes entre nosotros: lo que dije en el párrafo anterior no es estrictamente cierto, * PERO ... El controlador único-receptor único tiene una dificultad de 2 en una escala de 1 a 10. El controlador único encadenado en margarita -la señal del receptor múltiple es aproximadamente un 3 o 4. Hacer un enrutamiento en estrella, que es lo que dibujaste en tu pregunta, es aproximadamente un 9 en nuestra escala del 1 al 10. Puedes hacerlo, pero te arrepentirás).
Para estas señales, tiene más opciones para la terminación de su señal. La terminación ideal sería una resistencia de su señal a un riel de alimentación que sea exactamente la mitad de su nivel de señal. Por ejemplo, si su señal va de 0 a 3.3v, entonces su resistencia iría a un riel de alimentación de 3.3/2 o 1.65 voltios. El valor de la resistencia sería igual a la traza de impedancia (misma fórmula microstrip/stripline que antes). El regulador en este riel de alimentación debe ser de un tipo especial que esté hecho para la terminación de la señal, porque tiene que hundirse y generar energía (hay excepciones a esto).
Por supuesto, no todos tienen un riel de 1.65v por ahí, así que hay opciones. Si no es una señal súper crítica, podría usar un riel que tenga menos de 1.5v o tan alto como 1.8v. O podría usar dos resistencias, una a GND y otra a +3.3v, en lugar de una sola resistencia (Google "terminación de señal" para las fórmulas). O podría usar una sola resistencia más una tapa en serie, llamada terminación de CA.
Lo malo de usar dos resistencias, como un divisor de voltaje, como terminación es que puede consumir mucha corriente. Lo bueno de la terminación de CA es que usa muy poca corriente. Pero muchas personas entienden muy mal la terminación de CA. La terminación de CA solo funciona para señales que tienen un ciclo de trabajo del 50 % y siempre se mueven. Las señales que hacen esto se llaman relojes. :) Pero el reloj SPI no se aplica, porque se puede apagar y no siempre se mueve. El otro error que comete la gente es que el límite es muy pequeño. A veces sólo una docena de pF. Ese límite debe ser de al menos 0,01 uF, y a menudo uso 0,1 uF. Una pequeña capitalización aquí es una señal segura de que alguien no sabe lo que está haciendo.
De todos modos, conecte en cadena estas señales y coloque la terminación adecuada al final de la cadena.
Apenas he arañado la superficie de este problema, y pueden pasar años antes de que comprenda completamente el tema. Hay mucha información en la red sobre esto, pero desafortunadamente también hay una gran cantidad de información errónea en la red. Tener cuidado.
Terminaré esto con algunas cosas que deberían levantar banderas rojas. Si ve algo de esto en algunos esquemas, o en lo que alguien escribe, debe huir: el hecho de que la frecuencia de un reloj, o la velocidad de datos, sea lenta no significa que no necesite terminación de señal. Una señal digital de 100 KHz generalmente requiere una integridad de señal adecuada (SI) tanto como una señal de 100 MHz. Cada vez que alguien agrega cosas al circuito para "ralentizar los bordes", es una señal segura de que no tiene ni idea. Cada vez que se agrega un límite directamente a una señal, eso es malo (con la excepción del filtrado EMI en los conectores). Como mencioné antes, usar tapas de tamaño pF en la terminación de CA. Y finalmente, no verificar el SI con un buen osciloscopio y un sondeo adecuado puede ser fatal para su diseño.
Como habrás adivinado, a 20 MHz no tendrás problemas para diseñar con curvas de 90 grados. Probablemente ni siquiera necesite preocuparse por configurar la geometría de su traza para obtener una microstrip o stripline de impedancia controlada.
Si estuviera diseñando a 50 MHz o más, probablemente desearía diseñar con una geometría de traza que proporcione una impedancia característica aproximadamente controlada (excepto para trazas muy cortas).
Por encima de 100 o 200 MHz (según la longitud de la traza y los requisitos de su aplicación), probablemente desee especificar a la fábrica de su placa que deben controlar la impedancia de la traza.
Para diseños de 200 MHz a 1 GHz, es posible que empiece a preocuparse por evitar curvas de 90 grados. Luego, simplemente podría usar dos curvas de 45 grados, con quizás 20-100 mil de trazo entre ellos, para girar su trazo 90 grados.
Si estuviera diseñando por encima de 1 GHz, es posible que incluso desee evitar curvas de 45 grados, luego usaría arcos suaves para girar la traza. También haría todo lo posible para evitar las vías.
Por supuesto, las bandas de frecuencia que doy para estas diferentes técnicas son estimaciones aproximadas. Algunos diseños a 1 GHz pueden tener requisitos de integridad de señal excepcionales, por lo que usaría arcos. Algunos diseños a 500 MHz pueden tener requisitos relajados y permitirle usar curvas de 90 grados, etc.
La ingeniería se trata tanto de mantener bajos los costos y hacer un trabajo a tiempo como de optimizar un diseño hasta el punto de la perfección. Si su diseño no requiere algo más elegante, las curvas de 90 grados probablemente le permitirán reducir el área de la placa y el enrutamiento Manhattan de varias capas hará que el diseño se haga más rápido, por lo que jugar con los arcos u optimizar para evitar las vías sería una ingeniería deficiente. Las curvas de 45 grados, francamente, no son mucho más difíciles de diseñar, pero probablemente causen un aumento en el área requerida de la placa.
Editar
(respondiendo a la actualización de la pregunta)
Aparentemente, lo que quiso decir con un "autobús" fue una línea con conexiones a varios dispositivos, en lugar de varias líneas enrutadas juntas de un lugar a otro, y le preocupan los lugares donde la línea se bifurca.
En este caso, en una sola capa de enrutamiento, lo mejor que puede hacer es una conexión de 90 grados. Lo que desea evitar son los ángulos agudos en los bordes de cobre. Estos (al menos históricamente) podrían causar la acumulación de grabado durante la fabricación y causar rastros rotos. Como se mencionó en los comentarios sobre la respuesta de David, hoy en día es raro tener un problema con esto con una tienda actualizada de alta calidad. Pero si su trazo se une en algo que no sea 90 grados, habrá un ángulo agudo en un lado o en el otro y su taller de fabricación probablemente aún apreciará si evita eso.
Lo que realmente quiere evitar aquí son los stubs largos fuera de la línea. Largo significa más de 1/10 (más o menos) de la longitud de onda asociada con la frecuencia más alta de interés.
Suponiendo que la fuente de la señal está en la MCU y los receptores en los bloques esclavos, es preferible enrutar, por ejemplo, desde el bloque MCU al Esclavo 1, luego del esclavo 1 al esclavo 2, del esclavo 2 al esclavo 3, etc. Con un trozo lo más corto posible que se bifurca a cada uno de esos dispositivos. Si estuviera trabajando con impedancia controlada, colocaría la terminación al final de toda la cadena, después de que la línea pasa por todos los esclavos.
Por supuesto, si la fuente de la señal está en el dispositivo esclavo y se envía a la MCU, entonces los esclavos en el medio de la cadena aún estarían conduciendo hacia una línea ramificada. Hasta donde yo sé, no hay una gran solución para esto. Pone un límite práctico a la frecuencia de comunicación en un bus multipunto bidireccional como este. Aunque puede ver cosas como las recomendaciones de diseño de DDR3 para ver hasta dónde se puede llevar esto. Para frecuencias más altas, encontrará que las topologías punto a punto en lugar de multipunto se vuelven mucho más comunes.
Las otras respuestas ASUMEN algo que creo que el cartel original del aficionado no sabe:
Lo más importante que hay que hacer es colocar las trazas sobre un PLANO DE TIERRA. Es un bus SPI, que probablemente funciona por debajo de los 10 MHz, por lo que una pequeña terminación sería la guinda del pastel.
En la práctica, podría colocar 50 ohmios en serie con los pines impulsores para lograr algo de amortiguación. Él o ella realmente no está trabajando a una frecuencia lo suficientemente alta como para que las otras técnicas importen.
Un reloj de 20 MHz (el suyo puede ser más rápido) tiene una longitud de onda de 15 metros y, para evitar el problema de las resistencias de terminación, la distancia máxima para la transmisión a través de una placa de circuito impreso a otros dispositivos SPI debe ser significativamente inferior a 15 m y algunas personas optarán por una vigésima parte. de la longitud de onda.
Por lo tanto, a una distancia de 75 cm (todavía una PCB muy grande), debería estar de acuerdo con las técnicas de enrutamiento "normales", es decir, vías convencionales y ángulos de 90 grados cuando intercambia capas, etc.
Si está usando un reloj de +100 MHz (he oído que algunos lo hacen), entonces debería pensar en usar técnicas adecuadas de enrutamiento de alta velocidad y también en mantener las longitudes de reloj y datos equidistantes.
Caviat
Recuerde que el reloj maestro no solo envía datos a los dispositivos esclavos (esperemos que lleguen sincronizados para cada uno), sino que también registra las respuestas de los esclavos y esto nunca puede estar sincronizado, por lo que esta es otra consideración sobre las distancias máximas en PCB. Un buen seguimiento no solucionará este problema.
Jeanne Píndaro
johan.a
mFeinstein