Warum sind die Pins auf dem Mikrocontroller nicht nahe beieinander gruppiert?

Einfache Frage, die Neugier bringt mich um. Warum haben Mikrocontroller (und auch andere ICs wie RAMs) Pins, die nicht gruppiert sind?

Wie in STM32 haben Sie zum Beispiel portA und es hat 8 Bits auf einer Seite von IC und die anderen 8 Bits an der gegenüberliegenden Ecke von IC ... Warum? Es macht das Routing von PCB viel schwieriger. Was ist der Grund oder Zweck einer solchen Ausrichtung? Warum konnten sie es nicht nebeneinander stellen? Und warum haben 32-Bit-uCs (wie STM32) 16-Bit-breite Ports, wenn sie 32-Bit-breite haben könnten?

Dasselbe gilt für RAMs - Adressstifte und Datenstifte sind fast zufällig über den IC verstreut. Warum?

Innerhalb des ICs gibt es viele Routing-Layer. Was ist also der Grund, warum sie den Gruppenpins nicht in einer logischen Reihenfolge eine weitere hinzufügen konnten?

Was würde der Vorteil für sie sein, finanziell gesehen?
Sie denken nur an das PCB-Routing. Was ist mit der Tatsache, dass es im IC eine Million Gates gibt, die auf die Pins geroutet werden müssen? Diese Millionen Tore sind möglicherweise durch eine weitere Million Verbindungen mit anderen Toren verbunden. Versuchen Sie, diese zu routen :) .
Offensichtlich sind Sie kein IC-Designer, denn wenn es "viele Routing-Layer" gäbe, würde Ihr Chef sagen: Sparen wir ein paar Cent und verwenden nicht alle Layer! Sie gehen davon aus, dass nicht alle Schichten optimal genutzt werden, und als IC-Designer kann ich Ihnen garantieren, dass dies der Fall ist. Sonst wäre das ein schlecht konstruierter Chip.
Sie sagen mir also wirklich, dass der einzige Grund dafür entweder Geld ist oder die Tatsache, dass sie es nicht entwerfen können? Wirklich? Sie stellen IC nur einmal her und es kann jahrzehntelang verwendet werden. Ist es nicht besser, einmal schön zu machen, und es wird für Tausende von Benutzern einfacher sein? Und auch Unternehmen werden davon profitieren - ihr IC wird aufgrund des einfacheren Entwicklungsprozesses für den PCB-Designer und sein Unternehmen häufiger ausgewählt. Und einige Chips sind billig, sodass eine oder zwei zusätzliche Schichten nicht so teuer sein können, oder? Ich würde diese 1-2 $ mehr ausgeben, aber sie gruppieren lassen ... Und warum haben 32-Bit-MCUs 16-Bit-breite Ports?
Sie verwenden 16-Bit-Peripheriegeräte, weil Sie die IP-Adresse bereits festgelegt haben und nur noch in Ihren 32-Bit-Kern einsteigen müssen, und Sie sind fertig, anstatt ein neues 32-Bit-Peripheriegerät zu entwerfen. Und in einem kommerziellen Design zahlen Sie nicht 1-2 $ mehr, nur für ein bisschen schöneres Layout, die Kosten für die Leiterplatte steigen vielleicht um ein paar Cent, also wählen Sie nicht die teurere MCU.
Vielleicht würde es Ihnen nichts ausmachen, ein oder zwei Dollar extra auszugeben, um Ihre Layout-Albträume zu beseitigen, aber wenn Sie eine Million Widgets erstellen, könnten diese 2 Millionen Dollar Sie davon abhalten, es zu einem attraktiven Preis auf den Markt zu bringen.
@zupazt3 - "Sie sagen mir also wirklich, dass der einzige Grund dafür entweder Geld ist oder die Tatsache, dass sie es nicht entwerfen können?" Ja. Diese Leute sind wegen des Geldes dabei. Sie haben festgestellt, dass die zusätzlichen Ressourcen, die zur Herstellung einer "rationalen" Pinbelegung erforderlich sind, nicht durch bessere Verkäufe wieder hereingeholt werden. Verzeihung. Und "ihr IC wird wegen des einfacheren Entwicklungsprozesses für PCB-Designer häufiger ausgewählt" ist einfach nicht wahr. PCB-Designer beschäftigen sich mit genug anderen Problemen, die ein nominell einfacheres Routing einfach nicht berücksichtigt. Außerdem wissen die IC-Leute natürlich nicht genau, welche Rationalisierung funktionieren würde.
@zupazt3 - "Und warum haben 32-Bit-MCUs 16-Bit breite Ports?" Denn fast niemand hat viel Verwendung für 32-Bit breite Ports. UARTs sind 8 Bit, ebenso wie Ethernet- und Glasfaserschnittstellen. ADCs und DACs sind fast immer 16 Bit oder weniger (und die meisten sind heutzutage ohnehin serielle E / A). Grafiken gehen einfach nicht auf mehr als 16-Bit-Farbtiefen. Die kleine Anzahl von Anwendungen, die möglicherweise 32 Bit benötigen, ist so gering, dass es viel effizienter ist, sie Spezialschnittstellen zu überlassen.
Denken Sie daran, dass MCU-Ports normalerweise nicht für Byte-breite Busschnittstellen verwendet werden (dies sind keine 8031, die von einem externen EEPROM ausgeführt werden), sondern in den meisten Anwendungen ein oder drei Bits dafür und ein oder drei Bits dafür.
„Also sagst du mir wirklich, dass der einzige Grund dafür entweder Geld ist oder die Tatsache, dass sie es nicht schaffen können? Wirklich?“ Es ist nicht so, dass es nicht getan werden kann, es wird entschieden, dass es nicht getan wird. In der IC-Designphase ist nicht bekannt, wo die Pins für eine bestimmte Anwendung sein müssen (und es kann für jede Anwendung anders sein), daher wird eine Auswahl getroffen, die am besten zum IC-Design passt. Nicht das Design der Leiterplatte. Wenn Sie wüssten, wie viel es kostet, einen IC zu entwerfen und herzustellen, würden Sie dies nicht in Frage stellen.
Ok, danke euch allen für eure Antworten. Jetzt kann ich sicher sein, zu wissen, dass in all dieser Ausrichtung ein Zweck und eine Logik steckt ;) Und sicherlich bin ich kein IC-Designer, nur ein Bastler.

Antworten (2)

Bei RAM-Chips möchte man oft, dass alle Adress-/Datenleitungen gleich lang sind (je kürzer desto besser), damit die Signale gleichzeitig laufen und die Taktfrequenz höher sein könnte. Adress- und Datenleitungen müssen den gesamten Bereich des Chips abdecken, daher werden sie nach der physischen Position der Speicherzellen, die sie speisen, gruppiert, nicht nach logischer Funktion.

Heterogene Geräte wie Mikrocontroller haben unterschiedliche Einschränkungen. Einige Signale könnten sich gegenseitig stören (wie eine Uhr und ein empfindlicher ADC) und können nicht zu benachbarten Pins gehen. Darüber hinaus kann das Verteilen ähnlicher Pins auf beiden Seiten des Chips das Routing der Leiterplatte tatsächlich verbessern. Die Chancen stehen gut, dass der Chip in der Mitte sitzt und mit Nachbarn auf beiden Seiten sprechen muss. Alle ähnlichen Pins auf einer Seite zu haben, würde das PCB-Routing zu einem Albtraum machen.

Außerdem ist viel Geschichte im Spiel.

Viele Chip-Layouts sind so konzipiert, dass sie eng mit Chips der vorherigen Generation übereinstimmen, sodass sie optional auf derselben oder der nächsten Board-Revision verwendet werden können. Die Chiplayouts von 1 kB bis 64 kB ROM/PROM/SRAM/EPROM/EEPROM erstreckten sich über viele Generationen, und die frühen Generationen hatten Einschränkungen beim Chipdesign, die längst vergessen sind.

Die Chip-Designer achten darauf, was die Kunden wollen und wenn die Kunden nur Chips mit sauber geordneten Daten und Adress-Pins kaufen würden, dann käme das in die Läden. Da ist das Layout vielleicht genau das, was die Leute wollen und dies ist ohne Jahre oder Erfahrung mit Routing-Boards möglicherweise nicht offensichtlich, um hier und da ein paar Cent zu sparen.

Moderne Gate-Arrays, die es Designern ermöglichen, fast jeden Pin für jede Funktion auszuwählen, haben das Board-Routing vereinfacht, aber es kann niemals eine Eins-zu-Eins-Übereinstimmung für jede Kombination zufälliger Chips geben, die ein Designer verwendet.

Die große Masse der 16-Bit-Systeme verwendete lange Zeit 8-Bit-Speicher, da dies der verfügbare Standard war. Es ist billiger, einen größeren 8-Bit-Chip einzubauen als zwei kleinere 8-Bit-Speicher, nur um eine Busbreite von 16 Bit zu erhalten. Auf die gleiche Weise sparen Sie 32 Pins auf dem Chipträger, wenn Sie Ihre 64-Bit-Daten in zwei Zyklen multiplexen, anstatt zu versuchen, alles auf dem Bus für 64 Bit zu verdrahten, wenn einige der Busse, Chips oder Peripheriegeräte nicht einmal 64 Bit verwenden können. Aber was noch wichtiger ist, wenn Sie die Datenleitungen multiplexen können (Adressleitungen in dynamischem RAM werden auch oft gemultiplext), können Sie viele Pins einsparen, und dies spart viel On-Board-Routing und Größe und Chipgröße und Kosten und und und.