banner
Centro de Noticias
Amplia experiencia junto con equipos avanzados

PCIe para hackers: un viaje con tarjetas M.2

May 25, 2024

He diseñado algunos adaptadores M.2 para mi uso y el de mis amigos, y al encontrar esos diseños en línea, la gente me ha pedido adaptadores personalizados. Una de estas solicitudes es bastante específica: un adaptador que agrega un enlace PCIe más a una ranura E-key M.2, el tipo de ranura que se usa en computadoras portátiles para tarjetas WiFi.

Verá, la especificación M.2 permite dos enlaces PCIe separados conectados a la ranura de la llave electrónica; sin embargo, ninguna tarjeta WiFi utiliza esto, excepto algunas muy antiguas compatibles con WiGig, y los fabricantes hace tiempo que han renunciado a conectar un segundo enlace. Sin embargo, hay algunas tarjetas como el acelerador dual AI Google Coral M.2 E-key y el recientemente anunciado uSDR, que sí requieren el segundo enlace; de ​​lo contrario, solo la mitad de su capacidad está disponible.

No está claro por qué tanto Google como WaveletSDR diseñaron para un zócalo de llave electrónica de doble enlace, ya que son algo poco común; En el caso de la tarjeta de Google, hay muchas personas que se quejan de que la placa que compraron simplemente no funciona del todo. En teoría, todo lo que necesita hacer para solucionar esta situación es obtener un segundo enlace PCIe de algún lugar y luego conectarlo al zócalo, y una manera perfecta de hacerlo es obtener un chip de conmutación PCIe. Perderá algo de ancho de banda porque la conexión PCIe de enlace ascendente del conmutador solo puede ir a cierta velocidad; para cosas como este acelerador de IA, no es un gran problema ya que el punto principal es hacer accesible el segundo dispositivo. Para los DEG antes mencionados, podría resultar inútil, o podrías ganar algo pero perder algo – ¡no lo sabrás hasta que lo intentes!

¡Ese es un problema amigable para los piratas informáticos que podemos resolver para divertirnos y aprender! Con un chip de conmutador PCIe lo suficientemente pequeño, podríamos crear una tarjeta PCB M.2 que también tenga un zócalo M.2, colocando un conmutador PCIe en el medio para dividir el enlace PCIe 1x entrante en dos enlaces 1x salientes.

Es más, este problema ya se ha resuelto antes. Este adaptador exacto ya ha sido fabricado por alguien en línea; sin embargo, decididamente no es de código abierto y su creador nunca comenzó a venderlo, alegando falta de interés. El adaptador que estamos diseñando hoy estará total y adecuadamente abierto: cualquiera podrá fabricar su propio adaptador como este si lo necesita, aprender de él o mezclarlo con otra cosa.

En el lado del conmutador PCIe, la última vez mencioné un chip de conmutador PCIe pequeño, barato y poco explorado: el ASM1182e, que es capaz de crear dos enlaces PCIe x1 a partir de uno. Está fácilmente disponible en Aliexpress, se utiliza en muchas tarjetas divisorias PCIe de China, cuesta $6 después del envío y parece requerir poco mantenimiento: una pequeña cantidad de componentes externos, operación independiente, cableado simple. Lamentablemente, simplemente no tenemos una hoja de datos que pueda encontrar; sin embargo, hay bastante información que podemos usar para crear nuestras propias placas, y le mostraré cómo podría diseñar en torno a chips incluso si no tienes sus hojas de datos.

Hoy, estamos resolviendo un problema de larga data para un nicho de hardware, creando un adaptador M.2 con tres enlaces PCIe en total y aplicando ingeniería inversa a un chip conmutador PCIe sin hojas de datos disponibles. También me gustaría hacer que este tablero esté densamente empaquetado como un desafío y mostrarles lo que se necesita, desde una página esquemática hasta una tarjeta ensamblada.

Usaré uno de mis diseños de adaptador M.2 como base para este diseño, específicamente, un adaptador de clave A+E a clave M, que le permite insertar un SSD en la ranura para tarjeta WiFi de una computadora portátil. Esa es una placa de dos capas porque podría serlo, pero hoy en día, dos capas no sirven: este diseño necesitará cuatro capas, ya que, de lo contrario, enrutar los enlaces PCIe correctamente y conectar tierra a todas partes sería demasiado intenso. Si puedes reutilizar el diseño de otra persona para tus objetivos, hazlo por supuesto: este ha probado símbolos y huellas, lo que significa que hay menos variables que yo pueda volver a verificar. Como resultado, no tenemos que diseñar una tarjeta M.2 desde cero.

Lo mismo ocurre con el esquema de referencia desde el que podemos aplicar ingeniería inversa al ASM1182; específicamente, es de una computadora portátil producida en masa. Hoy estamos de suerte: Clevo es una de las pocas empresas que tiene (o tuvo) una tradición de publicar esquemas para sus computadoras portátiles, probablemente ayudada por el hecho de que, a diferencia de cualquier otro fabricante de computadoras portátiles, en realidad diseñan sus propias placas base. La única otra empresa de portátiles que he visto publicar esquemas es Framework, cuya placa base está subcontratada (la norma en el espacio para portátiles), y la suya es parcial y se han eliminado todos los elementos posiblemente NDA. No hay marcas de confidencialidad de ningún tipo en el esquema que estamos buscando hoy; sin embargo, no proporciono un enlace, pero sin duda es el primer resultado en su motor de búsqueda favorito, especialmente si busca P75xZM_ESM.pdf.

A los efectos de escribir este artículo, es una suerte que este esquema en particular no parezca problemático de ninguna manera. Aparentemente, es bastante poco común que las empresas emitan solicitudes de eliminación en sitios de alojamiento de esquemas, pero estos archivos PDF llenos de información tienden a estar, en el mejor de los casos, en una zona legal gris cuando se trata de distribución; verá que se argumenta que caen bajo alguna forma de propiedad intelectual, y quizás recuerde una disputa con Apple sobre “mostrar esquemas en funcionamiento” que puso a Louis Rossmann en el centro de atención. Dicho esto, si alguna vez utiliza personalmente un esquema encontrado en línea con fines de ingeniería inversa y diseño, incluso si tiene CONFIDENCIAL por todas partes, no hay indicación de que esté en riesgo alguno: la gente ha estado haciendo eso durante años con ThinkPads. , tecnología de Apple y ciertamente computadoras portátiles aleatorias aquí y allá.

¿Qué obtenemos de este esquema? Bueno, toda la página 93 de la hoja de datos está dedicada al ASM1182, con un circuito completo, probado y funcional que en realidad se envió dentro de una computadora portátil. No es una hoja de datos, claro, pero tiene un símbolo con nombres de pines y está completamente cableado, por lo que es más que suficiente para que copiemos el circuito; incluso enumera descripciones de pasadores de correa, lo cual es raro de encontrar en los esquemas. Además, es básicamente la única información al respecto que pude encontrar en línea, ¡y seguro que busqué!

Hay una fuente de referencia más: una placa KiCad de código abierto con un ASM1184, un proyecto maravilloso de [will127534] que le permite conectar cuatro SSD NVMe a una Raspberry Pi CM4, y nuestro hacker ha realizado ingeniería inversa en el ASM1184 lo suficiente para hacer un tablero en pleno funcionamiento. También hay un poco de información adicional sobre los requisitos de energía; por ejemplo, vemos que todos los pines de alimentación del mismo voltaje están unidos y no parece que realmente necesitemos múltiples rieles de alimentación de 3,3 V o 1,2 V, incluso si los Los nombres de los pines son diferentes. Conectar todos los pines es algo que también hace el esquema de la computadora portátil, pero de manera indirecta, por lo que es bueno tener tranquilidad.

Una cosa que el esquema no enumera es el tipo de paquete QFN del ASM1182, es decir, el paso del pad. Sin embargo, nuestro ASM1184 muestra que tiene un paso de 0,5 mm, que esperaría que se mantuviera igual dentro de la familia IC, y KiCad tiene huellas QFN de 48 pines con un paso de 0,5 mm que parecen encajar perfectamente. Al igual que el Pi Pico, hay pines de 3,3 V y 1,2 V alrededor del paquete; para 1,2 V, inicialmente decidí designar un plano interior, pero 3,3 V podrían pasar detrás de los pines, entre ellos y la plataforma de tierra. Opté por disminuir el tamaño de la plataforma de tierra; puede hacerlo de manera razonablemente segura en un QFN, y mi objetivo es poder colocar vías de 1,2 V allí pero también poder extraer una pista adicional. El tamaño de la almohadilla de suelo de 4 mm funciona perfectamente para esto, siendo inferior a los 5,3 mm originales.

Al final, aunque no tenemos una hoja de datos y el chip es razonablemente complicado, ¡parece que tenemos todo lo que podemos necesitar para diseñar una placa! No siempre tendrás tanta suerte; dicho esto, ahora sabes que las hojas de datos inaccesibles no son el final.

Recreé el símbolo ASM1182 en KiCad y el enrutamiento del esquema ha sido súper simple: a partir del diseño del adaptador de enchufe a enchufe M.2 que tenía, agregué el ASM1182, conecté las señales de los tres. Los enlaces PCIe, uno al borde de la tarjeta y dos al zócalo integrado, copiaron básicamente todo lo que tenía el esquema de la computadora portátil, luego comenzaron a analizar las opciones de espacio de los componentes, estimaron la ubicación de los componentes de la placa y pensaron en cómo podría verse el diseño.

Como de costumbre, el 80% de una PCB enrutada exitosamente es la ubicación adecuada de los componentes, el 80% son buenas opciones de enrutamiento y el 80% restante es principalmente clarividencia; si no eres bueno en la última, no te preocupes, solo prepárate. rediseñar partes del tablero una o dos veces.

En este caso, la ubicación de los componentes ha sido engañosamente simple: tomé un adaptador M.2 existente como base para el esquema y asigné enlaces de salida del conmutador PCIe a los pines de enlace del zócalo M.2 de manera que el enrutamiento de pares diferenciales PCIe sea en su mayor parte corto y dulce. Después de eso, coloqué el conmutador PCIe en la parte inferior de manera que haya mucho espacio para el enrutamiento de pares de diferencias PCIe en dos lados de aspecto más intenso y un poco de espacio en el otro lado para todas las resistencias de configuración del conmutador PCIe. Dicho esto, ayuda el hecho de que he estado diseñando placas por un tiempo y tengo buen ojo para la buena ubicación de los componentes; si estás comenzando, es posible que no lo hagas bien la primera vez, así que no te preocupes, pregúntale a la gente. para una revisión del diseño y tome nota de lo que hacen otras personas cuando diseñan sus propios tableros.

Una placa de este tipo requeriría más o menos una plantilla para el ensamblaje: tener un ASM1182 con un paso de 0,5 mm y un conector M.2 significa que el ensamblaje del soldador será bastante complicado y, en comparación, la plantilla es rápida. Voy a utilizar componentes 0402 en esta placa; dado que de todos modos lo estoy estampando, no hay una buena razón para no hacerlo, y los componentes más grandes ocuparían mucho más espacio en la placa. También tendrá que ser un ensamblaje por ambos lados: no apuesto a tener espacio vertical para ningún componente debajo de la tarjeta insertada y a tener la mitad del espacio en la capa superior ocupada por el borde de la tarjeta y el zócalo. nos pone en gran desventaja para la colocación unilateral. Por lo general, no es tan cómodo estarcir un tablero con componentes en ambos lados, pero aquí me gustaría intentar hacerlo de ambos lados de todos modos, y aún debería ser posible estarcirlo a pesar de cualquier problema.

Considerándolo todo, esta será una placa razonablemente sencilla de diseñar y construir, ¡siempre que distribuyamos bien las cosas! Al enrutar una placa de este tipo, puede comenzar primero con las señales sensibles de alta velocidad teniendo en cuenta los rieles de alimentación y la tierra, luego enrutar los rieles de alimentación y la tierra teniendo en cuenta las señales de baja importancia y, luego, enrutar las señales de baja importancia. señales de importancia. Aquí, rotar el IC en una de las cuatro direcciones resolvió la mayoría de los problemas de enrutamiento: colocar ambos enlaces PCIe de salida junto a donde se esperaba que estuvieran y rotar el enlace ascendente para que pueda enrutarse fácilmente desde la tarjeta. conector de borde.

Se necesita la alimentación adecuada para un IC, y doblemente para un conmutador PCIe rápido. No tengo una hoja de datos a la que referirme cuando se trata de cifras de consumo máximo e inactivo, pero en el diagrama esquemático de la computadora portátil que tengo, tiene su propio regulador lineal de 2 A para el riel de 1,2 V. Personalmente elegiré un regulador de conmutación, SY8089, una pieza probada y verdadera de un conocido fabricante chino. Dado que algunos de los pines están etiquetados como AVDD, sospecho que se podría desear algo de eliminación de ruido, pero hasta ahora, los dos esquemas que hemos visto, simplemente unen todos los pines de alimentación con los pines con prefijo no analógico.

Como regla general, querrás un capacitor por cada pin de alimentación del IC; mi táctica habitual es copiar y pegar una tonelada de capacitores en el esquema, colocarlos alrededor del chip de acuerdo con los pines de alimentación que veo y eliminar los adicionales después. He visto a personas usar límites de 1 uF y 100 nF para desacoplar, pero no está claro que 1 uF sobre 100 nF tenga mucho beneficio aquí. Voy a usar límites de 100 nF en la mayoría de los lugares porque son ligeramente más barato y agregue 1 uF o dos en lugares donde la corriente podría tener más dificultades para fluir, más lejos de la fuente de energía en cuanto a trazas. Por supuesto, estos no son valores exactos: es más bien un rango, y la presencia de un capacitor en una entrada de energía a menudo es mucho más importante que su valor muy específico en lo que respecta al desacoplamiento del IC, además, la capacitancia resultante varía enormemente de todos modos. depende del voltaje aplicado, la temperatura y las tolerancias de fabricación del capacitor. Este es el tipo de reglas de condensadores de desacoplamiento que yo y muchas otras personas seguimos para nuestros propios diseños. Si desea obtener más información sobre las reglas generales y el razonamiento real para la elección y ubicación de los condensadores de desacoplamiento, hay mucha información disponible para ayudarlo. comenzó.

Aún así, estos son condensadores importantes, destinados a mantener un chip digital en un voltaje estable y libre de caídas de tensión con su patrón de consumo de corriente altamente puntiagudo, complementando la corriente que fluye a través del camino desde la fuente de alimentación, un camino que tiende a ser largo. y eléctricamente espinoso, alta inductancia y todo. Al final, me aseguré de que todos los pines de alimentación tuvieran condensadores en algún lugar cercano y agregué dos condensadores de 1uF en áreas más alejadas de 3,3 V y 1,2 V. Esta es, nuevamente, una ubicación más basada en vibraciones, pero tiende a funcionar bien. Cada condensador de desacoplamiento debe tener un excelente camino tanto hacia su línea de alimentación como hacia GND; las vías funcionarán de maravilla para GND, ya que tenemos dos capas de GND en toda la placa, y para 3,3 V con 1,2 V, trazas debajo del IC o incluso en capas internas. debería funcionar bien también.

Ahora hemos completado al menos el 80% de esta placa; es hora de enrutarla. ¿Recuerda el orden de ruta? Primero la alta velocidad, luego la energía y la tierra, luego las señales de baja importancia. Si las señales de alta velocidad no funcionan, la placa también podría estar quemada, y es bastante difícil ceder después del hecho. Si la distribución de energía no funciona, la placa no funcionará bien, pero es más fácil solucionarlo. Y, si se confunden señales de poca importancia, ¡generalmente puedes confundirlas fácilmente!

Como tal, comenzamos nuestro enrutamiento con pares de diferencias: la próxima semana, conectaremos los parámetros del tablero a una calculadora para obtener el ancho y el espaciado del trazo, dibujaremos los pares tan correctamente como el espacio del tablero nos lo permita y ajustaremos un poco su longitud, con un video. demostración también!