Autor Tema: Trucos y consejos ("Tips & Tricks")  (Leído 25145 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:Trucos y consejos ("Tips & Tricks")
« Respuesta #30 en: 09 de Mayo de 2017, 18:39:47 »
Somos 2 seguro!
-
Leonardo Garberoglio

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:Trucos y consejos ("Tips & Tricks")
« Respuesta #31 en: 09 de Mayo de 2017, 18:53:58 »
Yo a pesar que no comente, lo sigo atentamente.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:Trucos y consejos ("Tips & Tricks")
« Respuesta #32 en: 09 de Mayo de 2017, 19:04:40 »
Tan pronto como pueda subo como enrutar un usb paso a paso. Más adelante si quieres hacemos un ethernet que es algo más complejo.


¿ Es importante usar pares diferenciales para rutear un USB o el cuarzo del oscilador del micro ?, yo siempre los he ruteado a capón, incluso se los dejaba al autorouter (el USB, el cuarzo siempre lo he hecho a mano). Desde hace un tiempo el USB lo ruteo a mano, pero sin usar pares diferenciales, y nunca me ha dado problemas.

¿ Para CAN bus, también en necesario o conveniente usar pares diferenciales en el ruteo ?. Tengo por ahí algún diseño pendiente, y si es sensible a estas cosas, preferiría cambiarlo antes de hacer la placa y que luego de problemas.

Estaba mirando estas cosas en Eagle, porque no las he usado nunca, y más o menos es igual que en Altium. En Eagle está también la función "Meander" para ajustar el largo de una pista a otra, con esos tramos en forma de serpiente.

¿ En general, en que casos es obligatorio o conveniente usar pares diferenciales, para que funcione bien el circuito ?.
« Última modificación: 09 de Mayo de 2017, 19:10:24 por planeta9999 »

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Re:Trucos y consejos ("Tips & Tricks")
« Respuesta #33 en: 09 de Mayo de 2017, 19:26:01 »
Tan pronto como pueda subo como enrutar un usb paso a paso. Más adelante si quieres hacemos un ethernet que es algo más complejo.


¿ Es importante usar pares diferenciales para rutear un USB o el cuarzo del oscilador del micro ?, yo siempre los he ruteado a capón, incluso se los dejaba al autorouter (el USB, el cuarzo siempre lo he hecho a mano). Desde hace un tiempo el USB lo ruteo a mano, pero sin usar pares diferenciales, y nunca me ha dado problemas.

¿ Para CAN bus, también en necesario o conveniente usar pares diferenciales en el ruteo ?. Tengo por ahí algún diseño pendiente, y si es sensible a estas cosas, preferiría cambiarlo antes de hacer la placa y que luego de problemas.

Estaba mirando estas cosas en Eagle, porque no las he usado nunca, y más o menos es igual que en Altium. En Eagle está también la función "Meander" para ajustar el largo de una pista a otra, con esos tramos en forma de serpiente.

¿ En general, en que casos es obligatorio o conveniente usar pares diferenciales, para que funcione bien el circuito ?.

Es necesario tener un control de impedancias a medida que aumenta la velocidad, para un usb cdc pues no te hace falta pero para un usb HS pues es casi obligatorio, para buses como PCIe o LVDP, para las memoras ram etc. Para todas esas cosas es obligatorio, para la baja velocidad no es necesario pero si recomendable, mejor hacerlo bien si puedes aunque no sea necesario.

Citar
En Eagle está también la función "Meander" para ajustar el largo de una pista a otra, con esos tramos en forma de serpiente.

Se llama length tuning  ;-)

Un saludo.

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re:Trucos y consejos ("Tips & Tricks")
« Respuesta #34 en: 09 de Mayo de 2017, 20:01:58 »
.

Ok, gracias Juan, un conocimiento más al saco.

¿ Y en las flash paralelo hay que tener alguna consideración con estos temas ?, tengo un diseño con una flash JS28F512M29EWHA TSOP56, conectada a un Kinetis MK66 (que seguramente cambiaré por el SAM S70). No lo he probado todavía, aunque el PCB ya lo tengo por aquí, y también los chips.

Esta es la memoria.
http://es.farnell.com/micron/js28f512m29ewha/flash-parallel-512mbit-56tsop/dp/2253711?ost=JS28F512M29EWHA




Y el PCB, esperando las pruebas.








Desconectado manwenwe

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2211
Re:Trucos y consejos ("Tips & Tricks")
« Respuesta #35 en: 10 de Mayo de 2017, 04:48:25 »
Como dice Juanjo para I2C, UART y otros buses de baja velocidad no es necesario pero sí recomendable (para todas las señales en general). Corrigo una cosa que comentó Juanjo: CDC es una clase (classs) USB como HID, MSD, etc. y HS, FS, SS, etc. es la velocidad de comunicación. Con lo que aunque el throughput de CDC sea bajo si trabajas en HS el bitrate sigue siendo 480mbps. Lo que pasa con USB es que al usar una comunicación diferencial es muuuuy robusto y por muy mal que lo enrutes sigue funcionando a no ser que se trate de muchos metros de cable; además tiene corrección de errores, re-envio de tramas etc, con lo que si tu layout es malo lo que vas a conseguir es reducir el throughput (no confundir con bitrate que no es lo mismo). Yo he llegado a hacer placas de evaluación a dos capas (adaptación de impedancias muuuy mala) con HDMI, PCIe, SATA, etc. y todos los buses funcionaban (incluso a 200MB/s).

https://www.maximintegrated.com/en/app-notes/index.mvp/id/1108

Cuando te vas a memorias la cosa cambia ya que hay muchas lineas en paralelo que no son diferenciales, por eso las DDR son de "mirame y nome toques": lineas en paralelo a 600Mhz con 2 bits por ciclo de reloj. Planeta, no creo que haya problemas en tu aplicación ya que la flash es asíncrona y al final la comunicación va a ir tan rápido como te lo acepte la flash y sea capaz tu micro: la flash es NOR(más rápida que Nand) pero el K66 no es muy rápido. Dudo que tengas problemas pero siempre es mejor que te cures en salud y hagas las cosas bien ;-).

Saludos!
 
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado manwenwe

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2211
Re:Trucos y consejos ("Tips & Tricks")
« Respuesta #36 en: 10 de Mayo de 2017, 05:19:53 »
5. Ponemos las rules. Para uno sólo par diferencial y sin señales en paralelo es bastante sencillo. Rule 1:



En las rules, "rountig"==>>"differential pairs routing" creamos una nueva rule y le cambiamos el nombre a "DP_USB" que es bastante descriptivo. El scope debe ser "InDifferentialPair('USB')" ya que "USB" es el nombre del par diferencial que le dimos en el esquemático. No rellenamos uno a uno todos los campos de abajo porque es más lento, en su lugar rellenamos los de la derecha del dibuo que aplican a todas las capas (vamos a enrutar sólo en TOP y BOT y ambas tienen las mismas reglas para impedancia controlada). Como espacio (max. min y pref.) ponemos el que calculamos en el paso 4==>> 0.318. Como max. y pref. ancho ponemos el que calculamos en el paso 4==>>0.511 y como min. ponemos 0.2mm. La razón es que el micro que provee la señales USB (en mi caso PIC32MZ) tiene pads con ancho de cobre de 0.2mm por lo que tenemos que dar la oportunidad a que se configure ese ancho y así hacer el "fan-out" de forma correcta. Por último "max uncoupled length" hace referencia a la distancia que vamos a permitir que las lineas no cumplan la regla de espacio entre ellas: esto vale para cuando las lineas terminan en el conector donde la distancia entre sus pads es mayor de 0.318mm.

La segunda regla:



Creamos la regla de arriba y nos aseguramos que tenga mayor prioridad que la que viene por defecto. La razón de esta regla es que USB sólo debe enrutarse en capas externas.. Podíamos haber puesto a 0 el ancho de pista de la capa L3 en la regla anterior pero eso sólo aplicaría a pares diferenciales. Con esta nueva reglar Altium no nos dejará enrutar nada del USB en la capa L3: ni el par ni una única net si nos equivocásemos.

Ya está! así del fácil :-). El último paso será enrutar el USB con "lenght matching" y así de paso lo explicamos también...

Saludos!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado manwenwe

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2211
Re:Trucos y consejos ("Tips & Tricks")
« Respuesta #37 en: 10 de Mayo de 2017, 05:52:36 »
Se me pasó, como vamos a hacer "length matching" debemos crear la siguiente rule:



* "Check nets within differential pair" significa que la regla compara las distancias de las nets dentro de un par diferencial (nuestro caso). Nuestro caso.
* "Check between differential pairs" significa que la regla compara las distancias de distintos pares diferenciales (ej.:  bus PCIe con varios "lanes").
* "Check between other electrical objects" significa que la regla compara las distancias de todos los objetos sean a no pares diferenciales (ej.: las señales de un byte de DDR que llevan single-ended y pares diferenciales).

Jugando con estas opciones y creando diferentes clases podemos cubrir todos los casos posibles en diferentes interfaces.

La tolerancia la ponemos a 0.1mm que es un valor común para el bitrate (en realidad se suele usar 5mil).

Saludos!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Re:Trucos y consejos ("Tips & Tricks")
« Respuesta #38 en: 10 de Mayo de 2017, 06:23:02 »
Cierto, fallo mio con lo del usb CDC, se me ha ido la pinza por que el CDC se suele usar con el FS normal y a baja velocidad, o por lo menos yo lo uso así  :D :D

Citar
¿ Y en las flash paralelo hay que tener alguna consideración con estos temas ?, tengo un diseño con una flash JS28F512M29EWHA TSOP56, conectada a un Kinetis MK66 (que seguramente cambiaré por el SAM S70). No lo he probado todavía, aunque el PCB ya lo tengo por aquí, y también los chips.

Los componentes que necesitan de ruteo de alta velocidad suelen tener un documento que indica como hacerlo (la mayoria de las veces) llamado  "hardware user´s guide" o algo así, donde te indica todas las consideraciones para hacer el hardware y el routing.

Puedes guiarte de eso.

un saludo

Desconectado manwenwe

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2211
Re:Trucos y consejos ("Tips & Tricks")
« Respuesta #39 en: 10 de Mayo de 2017, 06:44:26 »
Juanjo, yo creo que dependerá del micro o más bien de las librerías. Mira esta appnote:

https://www.google.es/url?sa=t&rct=j&q=&esrc=s&source=web&cd=7&ved=0ahUKEwjQ5MyjhOXTAhXFyRoKHQZrBGIQFghlMAY&url=http%3A%2F%2Fwww.xmos.com%2Fpublished%2Fan00124-usb-cdc-class-as-virtual-serial-port%3Fversion%3Dlatest&usg=AFQjCNHNC386hKXnQGl-eq3VKCeTgJAimg

This example USB CDC ACM implementation provides a Virtual Serial port running over high speed USB.
The Virtual Serial port supports the standard requests associated with ACM model of the class.


Saludos!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2980
Re:Trucos y consejos ("Tips & Tricks")
« Respuesta #40 en: 10 de Mayo de 2017, 06:58:50 »
Lo que quiero decir es que para un HS no suelo utilizar cdc, utilizo bulk transfer o Isochronous, para los Fs suelo utilizar cdc o hid

un saludo

Desconectado manwenwe

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2211
Re:Trucos y consejos ("Tips & Tricks")
« Respuesta #41 en: 10 de Mayo de 2017, 07:51:45 »
6. Enrutar (último paso).

* Pinchamos en el icono de enrutar pares difrenciales (dos iconos a la derecha del icono de enrutar simple) y a continuación a una de las dos nets USB (USB_P o USB_N) del micro.  Lo normal es que no nos deje sacar las nets porque el ancho preferido es mayor que el espacio que hay entre pads. Pulsamos tabulador y en la ventana que se abre cambiamos el ancho a 0.2mm y "sacamos" un poco las nets. A continuación volvemos a presionar tabulador y cambiamos el ancho a 0.511mm



A partir de ahí ya enrutamos hasta llegar al conector. Notad que con la rule de layers que pusimos altium nos cambia de capa obviando L3 :-).



* Un apunte. Sobre lo que comenté varios posts antes de que los designators en capa de ensamblaje. Para que Altium los coja bien tenéis que pinchar aquí o no se convertiran de ".Designator" al nombre del designator.



* Vamos a hacer el length matching. Recordemos que nuestro objetivo es que las dos nets estén en una horquilla de longitud de 0.1mm. Nos vamos a la PCB y vemos como están actualmente:



Como vemos estamos bastante lejos del objetivo. Además si pasamos el DRC nos lo confirmará:



Vamos a hacer tunning jejej. ¿cómo se hace?: alargando la net más corta.

* Pulsamos T,R. Luego pulsamos sobre una de las nets USB. Si nos dice "Target Length Shorter Than Old Length" es que estamos pinchando en la net más larga: pinchamos en la otra. Luego pulsamos tabulador y rellenamos el formulario:



* From rules significa que Altium alargará esa net hasta que esté dentro los 0.1mm cercanos a la otra net como pusimos en la rule.
* Clip to target length significa que Altium intentará que la longitud sea "justo" la target.
* Style: hay diferentes estilos pero el que se suele usar es el que he puesto o el de arcos redondeados (ángulos de 90º jamas!).
* Luego tenemos amplitude (amplitud "de la onda") y gap (separación entre tracks verticales) y sus respectivos incrementos. Estos valores dependerán del ancho de nuestro track (gap) y del espacio que tengamos para hacer tunning (amplitud).
* Cuando estamos haciendo el tunning podemos aumentar/reducir el ángulo de "la onda" con '1' y '2', la amplitud con '.' y ',' , y el gap con '3' y '4'. Jugad con las teclas y lo veréis enseguida  :-/

Bueno, cerramos el cuadro de dialogo y terminamos de enrutar el par diferencial. Cuando altium haya conseguido que las 2 nets tengan una diferencia de 0.1mm la barra pasará de rojo a verde y habremos terminado:



Ahora cuando pasemos el DRC habrá desaparecido el error de "Matched Lenght" :-). Lo más probable es que nos aparezca un error de "uncoupled lenght" porque fuimos muy optimistas y pusimos sólo 5mm, lo cual es muy poco si vamos a hacer "lenght matching". Vamos a las rules y cambiamos la rule subiendo ese valor a 15mm. Volvemos a pasar el DRC y comprobamos que no nos da ningún error. Eso es porque las nets están dentro del rango de 0.1mm que especificamos:



Pues ya hemos acabado  :-/ :-/ :-/

Para finalizar 3 consejos:

1. En L3 tenemos un plano sólido de referencia con GND con lo que tenemos seguridad de que las impedancias que hemos puesto son correctas. En L2 debajo de todos los tracks del par diferencial debería haber un polígono sólido que sirva como plano de referencia (retorno de corriente). No pongáis nets de señal e intentad que si hay más de un polígono que USB no cruce por muchos de ellos porque habrá cambios de impedancia. Poned vias alrededor que crucen los planos para facilitar el retorno de corriente de los planos.
2. Hay literatura que dice que hagas el lenght tunning cerca del emisor y otra cerca del receptor. Si tenéis documentación del fabricante seguid los consejos. En cualquier caso la mayoría de veces os tocará hacerlo dónde tengáis espacio.
3. Para el length tunning entre hacer "las ondas" más amplias o hacer más ondas siempre la segunda opción ya que la primera genera cambios bruscos de impedancia diferencial.

Esto to esto es to esto es todo amigos jejeje

No tengo muchas ideas en la cabeza de qué más explicar así que por favor sugerid temas. Lo ideal es que no sea por curiosidad sino temas que conciernen a diseños que tenéis en desarrollo o en mente.

Saludos!




Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado manwenwe

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2211
Re:Trucos y consejos ("Tips & Tricks")
« Respuesta #42 en: 10 de Mayo de 2017, 07:52:38 »
Lo que quiero decir es que para un HS no suelo utilizar cdc, utilizo bulk transfer o Isochronous, para los Fs suelo utilizar cdc o hid

un saludo

Es lo normal Juanjo. Sólo quería puntualizar que no es imprescindible ;-).
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re:Trucos y consejos ("Tips & Tricks")
« Respuesta #43 en: 10 de Mayo de 2017, 10:52:16 »
Hazlo claro!!!. Yo sé que no tengo mucho público porque las cosas que mejor me sé le suenan a marcinadas a la mayoría pero bueno... con que le sirvan sólo a una persona yo ya contento: es mi forma de devolver al foro todo lo que me ha dado...;-)

Yo no sé cuántos seremos leyendo esto con la boca abierta, pero yo desde luego sigo el hilo con total admiración.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Re:Trucos y consejos ("Tips & Tricks")
« Respuesta #44 en: 10 de Mayo de 2017, 11:04:18 »
Un agregado al paso, cuando estamos ruteando en una capa, apretamos + y altium pasa a la siguiente capa de acuerdo a las rules. Automáticamete se coloca una vía con las características configuradas en la rule "Ruting Vias".

Saludos y excelentes aportes!
-
Leonardo Garberoglio


 

anything