¿Por qué los pines del microcontrolador no están agrupados, cerca uno del otro?

Pregunta simple, la curiosidad me está matando. ¿Por qué los microcontroladores (y también otros circuitos integrados, como las memorias RAM) tienen pines que no están agrupados?

Como en STM32, por ejemplo, tiene portA y tiene 8 bits en un lado del IC y los otros 8 bits en la esquina opuesta del IC... ¿Por qué? Hace que el enrutamiento de PCB sea mucho más difícil. ¿Cuál es la razón o el propósito de tal alineación? ¿Por qué no pudieron ponerlo uno al lado del otro? ¿Y por qué los uC de 32 bits (como STM32) tienen puertos de 16 bits de ancho, cuando podrían tener 32 bits de ancho?

Lo mismo ocurre con las RAM: los pines de dirección y los pines de datos están dispersos casi al azar sobre el IC. ¿Por qué?

Dentro del IC hay muchas capas de enrutamiento, entonces, ¿cuál es la razón por la que no pudieron agregar una más para agrupar los pines en algún orden lógico?

¿Cuál sería el beneficio para ellos, en cuanto al dinero?
Solo está pensando en el enrutamiento de PCB. ¿Qué pasa con el hecho de que hay un millón de puertas en el IC que deben enrutarse a los pines? Esos millones de puertas están conectadas a otras puertas posiblemente por otro millón de conexiones. Intente enrutarlas :).
Claramente, usted no es un diseñador de circuitos integrados porque si hubiera "muchas capas de enrutamiento", su jefe diría: ¡ahorremos unos centavos y no usemos todas las capas! Supone que no todas las capas se utilizan al máximo y, como diseñador de circuitos integrados, puedo garantizarle que sí. De lo contrario, sería un chip mal diseñado.
Entonces, ¿realmente me está diciendo que la única razón para esto es el dinero o el hecho de que no pueden diseñarlo? ¿En realidad? Haces IC solo una vez y se puede usar durante décadas. ¿No es mejor hacerlo bien una vez y será más fácil para miles de usuarios? Y la empresa también se beneficiará: su IC se elegirá con mayor frecuencia debido a que el proceso de desarrollo es más sencillo para el diseñador de PCB y su empresa. Y algunos chips son baratos, por lo que una o dos capas adicionales no pueden ser tan caras, ¿verdad? Preferiría gastar este 1-2 $ más, pero agruparlo... ¿Y por qué las MCU de 32 bits tienen puertos de 16 bits de ancho?
Utiliza periféricos de 16 bits porque ya tiene la IP establecida y solo tiene que acceder a su núcleo de 32 bits y ya está, en lugar de diseñar un nuevo periférico de 32 bits. Y en un diseño comercial, no pagará 1-2 $ más solo por un proceso de diseño un poco más agradable, el costo de la PCB puede aumentar unos centavos, así que no, no elija la MCU más cara.
Tal vez no le importe gastar uno o dos dólares adicionales para eliminar sus pesadillas de diseño, pero si está creando un millón de widgets, esos $2 millones podrían evitar que lo comercialice con un precio atractivo.
@zupazt3 - "¿Entonces realmente me estás diciendo que la única razón para esto es el dinero o el hecho de que no pueden diseñarlo?" Sí. Esta gente está en esto por el dinero. Han determinado que los recursos adicionales necesarios para producir un pinout "racional" no se recuperarían con mejores ventas. Lo siento. Y "su IC se elegirá con más frecuencia debido a un proceso de desarrollo más fácil para el diseñador de PCB" simplemente no es cierto. Los diseñadores de PCB se ocupan de muchos otros problemas que el enrutamiento nominalmente más simple simplemente no entra en juego. Además, por supuesto, la gente de IC no sabe exactamente qué racionalización funcionaría.
@zupazt3: "¿Y por qué las MCU de 32 bits tienen puertos de 16 bits de ancho?" Porque casi nadie tiene mucho uso para los puertos de 32 bits de ancho. Los UART son de 8 bits, al igual que las interfaces de fibra y Ethernet. Los ADC y DAC son casi siempre de 16 bits o menos (y la mayoría son IO en serie en estos días, de todos modos). Los gráficos no llegan a más de 16 bits de profundidad de color. La pequeña cantidad de aplicaciones que pueden necesitar 32 bits son tan pequeñas que es mucho más eficiente dejarlas para interfaces especiales.
Tenga en cuenta que los puertos MCU no se usan normalmente para interfaces de bus de byte de ancho (no son 8031 ​​que se ejecutan desde EEPROM externa), sino que en la mayoría de las aplicaciones un poco o tres para esto, y un poco o tres para eso.
"Entonces, ¿realmente me estás diciendo que la única razón para esto es el dinero o el hecho de que no pueden diseñarlo? ¿En serio?" No es que no se pueda hacer, se decide que no se hace. En la etapa de diseño del IC, no se sabe dónde deben estar los pines para una aplicación específica (y puede ser diferente para cada aplicación), por lo que se elige la que mejor se adapte al diseño del IC. No el diseño de la PCB. Si supiera cuánto cuesta diseñar y producir un circuito integrado, no lo cuestionaría.
Ok, gracias a todos por sus respuestas. Ahora puedo estar tranquilo sabiendo que hay un propósito y una lógica en todo este alineamiento;) Y seguramente no soy un diseñador de circuitos integrados, solo un aficionado.

Respuestas (2)

En los chips de RAM, a menudo desea que todas las líneas de dirección/datos tengan la misma longitud (cuanto más cortas, mejor), para que las señales viajen simultáneamente y la frecuencia del reloj sea mayor. Las líneas de dirección y datos tienen que cubrir toda el área del chip, por lo que se agrupan por la ubicación física de las celdas de almacenamiento que alimentan, no por función lógica.

Los dispositivos heterogéneos como los microcontroladores tienen diferentes tipos de restricciones. Algunas señales pueden interferir entre sí (como un reloj y un ADC sensible) y no pueden ir a pines adyacentes. Además, la distribución de pines similares en ambos lados del chip puede mejorar el enrutamiento de la PCB. Lo más probable es que el chip se quede en el medio y tenga que comunicarse con los vecinos de ambos lados. Tener todos los pines similares en un lado haría que el enrutamiento de PCB fuera una pesadilla.

También hay mucha historia involucrada.

Muchos diseños de chips están diseñados para coincidir estrechamente con los chips de la generación anterior, por lo que se pueden usar opcionalmente en la misma revisión de placa o en la siguiente. Los diseños de chips de 1 kB a 64 kB ROM/PROM/SRAM/EPROM/EEPROM abarcaron muchas generaciones y las primeras generaciones tenían restricciones de diseño de chips que se olvidaron hace mucho tiempo.

Los diseñadores de chips toman conocimiento de lo que quieren los clientes y si los clientes solo compraran chips con pines de dirección y datos cuidadosamente ordenados, entonces eso sería lo que habría en las tiendas. Como es el diseño, tal vez exactamente lo que la gente quiere y esto puede no ser obvio sin años o experiencia en enrutamiento de tableros para ahorrar unos centavos aquí y allá.

Las matrices de puertas modernas que permiten a los diseñadores elegir casi cualquier pin para cualquier función han simplificado el enrutamiento de la placa, pero nunca puede ser una coincidencia uno a uno para cada combinación de chips aleatorios que utiliza un diseñador.

La gran mayoría de los sistemas de 16 bits utilizaron memoria de 8 bits durante mucho tiempo, ya que era el estándar disponible. Es más barato colocar un chip de 8 bits más grande que dos memorias de 8 bits más pequeñas solo para obtener un ancho de bus de 16 bits. De la misma manera, ahorra 32 pines en el portador del chip si multiplexa sus datos de 64 bits en dos ciclos en lugar de tratar de tener todo en el bus cableado para 64 bits cuando algunos de los buses, chips o periféricos ni siquiera pueden usar 64 bits. Pero lo que es más importante, si puede multiplexar las líneas de datos (las líneas de dirección en la RAM dinámica también se multiplexan a menudo), puede ahorrar muchos pines y esto ahorra mucho enrutamiento y tamaño de chip y costo y y y.