Was sind die Eigenschaften eines N-Bit-Mikrocontrollers?

8

Ich habe von 8-Bit-Mikrocontrollern und 16-Bit-Mikrocontrollern gehört. Ich habe sogar von 7-Bit- Mikrocontrollern und 1-Bit- Mikrocontrollern gehört.

Was sind die allgemeinen Attribute dieser Gruppen? Wie wähle ich den Typ aus, der für ein Projekt verwendet werden soll?

Jacob Harding
quelle
4
Ich habe noch nie von einem 7-Bit-Mikrocontroller gehört. Es tut mir leid, wenn Sie durch einen Kommentar verwirrt wurden, den ich unter electronic.stackexchange.com/q/32097/4512 gepostet habe . Das sollte ein Witz sein.
Olin Lathrop
4
Großartig! Olin, ich wollte dich warnen, diese Frage war zu erwarten! :-)
Stevenvh

Antworten:

11

Es gibt auch 4-Bit- und 32-Bit-Mikrocontroller. In PCs werden 64-Bit-Mikroprozessoren verwendet.

Die Nummer bezieht sich auf die Registerbreite . Die Register sind das Herzstück des Mikrocontrollers. Viele Operationen verwenden Register, entweder um Daten zu verschieben oder um arithmische oder logische Operationen auszuführen. Diese Operationen finden in der ALU , der Arithmetik- und Logikeinheit, statt.

Geben Sie hier die Bildbeschreibung ein

ABC. Es gibt einen internen Datenbus, der die Register, den internen RAM und die ALU verbindet, und für Mikroprozessoren und einige Mikrocontroller einen externen Datenbus, der mit dem externen RAM verbunden ist. Mit wenigen Ausnahmen hat der Datenbus die gleiche Breite wie die Register und die ALU und zusammen bestimmen sie, um welchen Mikrocontrollertyp es sich handelt. (Eine Ausnahme war der 8088, der intern einen 16-Bit-Bus hat, extern jedoch nur 8-Bit.)

4-Bit-Controller verfügen über 4-Bit-Register, die nur 16 verschiedene Werte von 0 bis hexadezimal 0xF darstellen können. Das ist nicht viel, aber es reicht aus, mit den Ziffern einer Digitaluhr zu arbeiten, und das ist eine Domäne, in der sie verwendet werden.

8-Bit-Controller sind seit einigen Jahrzehnten das Arbeitstier der Branche. In 8 Bits können Sie eine Zahl zwischen 0 und 255 speichern. Diese Zahlen können auch Buchstaben und andere Zeichen darstellen. So können Sie mit Text arbeiten. Manchmal können 2 Register zu einem 16-Bit-Register kombiniert werden, das Zahlen bis zu 65535 zulässt. In vielen Controllern müssen jedoch große Zahlen in Software verarbeitet werden. In diesem Fall sind sogar 32-Bit-Zahlen möglich.
Die meisten 8-Bit-Controller verfügen über einen 16-Bit-Programmzähler. Dies bedeutet, dass maximal 64 KByte Speicher adressiert werden können. Für viele eingebettete Anwendungen, die ausreichen, benötigen einige sogar nur wenige kByte.
Ein Parkplatzmonitor, bei dem Sie beispielsweise die Anzahl der Autos zählen und diese auf einem LCD anzeigen müssen, ist etwas, was Sie normalerweise mit einem 8-Bit-Controller tun würden. :-)

16-Bit ist ein nächster Schritt. Aus irgendeinem Grund hatten sie nie den Erfolg, den 8-Bitter oder 32-Bitter hatten. Ich erinnere mich, dass die Motorola HC12-Serie unerschwinglich teuer war und nicht mit 32-Bit-Controllern konkurrieren konnte.

32-Bit ist das Wort des Tages. Mit einem 32-Bit-Programmzähler können Sie 4 GByte adressieren. ARM ist ein beliebter 32-Bit-Controller. Es gibt Dutzende von Herstellern, die ARMs in allen Größen anbieten. Es handelt sich um leistungsstarke Controller, die häufig viele spezielle Funktionen an Bord haben, z. B. USB- oder komplette LCD-Bildschirmtreiber.
ARMs erfordern häufig große Pakete, entweder um einen großen Chip mit viel Flash aufzunehmen, oder weil die verschiedenen Funktionen viele E / A-Pins erfordern. Dieses Paket zeigt jedoch die Möglichkeiten, die ARM bietet.

Geben Sie hier die Bildbeschreibung ein

Dies ist ein 16-poliger ARM in einer Verpackung von nur 2,17 mm x 2,32 mm.

stevenvh
quelle
Und auch 64-Bit-Mikrocontroller. uk.computers.toshiba-europe.com/innovation/jsp/…
Telaclavo
1
In der Vergangenheit gab es alle Arten von Breiten. Der PDP-8 war 12 Bit und ein CDC 6600 war 60 Bit mit 6 Bit Bytes, wenn ich mich richtig erinnere. Heutzutage sehen wir ziemlich viel 4 (2 ^ N) Bitbreiten.
Olin Lathrop
Wie lautet die Teilenummer dieser ARM-CPU?
Raketenmagnet
@ Rocketmagnet sieht aus wie vielleicht ein NXP LPC1102UK: nxp.com/products/microcontrollers/cortex_m0/miniature_package/…
Craig
5

Die einfache Antwort: Ein N-Bit-Mikrocontroller verfügt über einen Datenpfad und eine ALU , die Daten in N-Bit-Blöcken verarbeiten können.

Lange Antwort: Die kurze Antwort ist in 95% der Fälle richtig. Die lange Antwort wird verwirrend. Einige CPU / MPUs haben Teile, die meistens N-Bits sind, aber einige Teile sind M-Bits. Beispielsweise könnte es sich um eine 8-Bit-CPU mit einem ganzzahligen Multiplikator handeln, der mit 16-Bit-Daten arbeitet. Die Intel-CPU-Serie (8088 bis zum aktuellen i7) kann häufig verschiedene 8- und 16-Bit-Register kombinieren, um 16 oder 32 Bit zu erhalten. Dann erhalten die Marketingmitarbeiter diese Nummern und entscheiden sich, sie in ihren Marketingmaterialien zu verwenden. Am Ende erhalten Sie 8-Bit-MPUs mit der Bezeichnung 16 Bit usw.

Es wird noch seltsamer. Einige Marketingmitarbeiter fördern die Anweisungsgröße der MPU. Die Microchip PICs sind ein gutes Beispiel dafür. Wenn Sie nicht vorsichtig sind, können Sie dies mit der Anzahl der Bits im Datenpfad verwechseln.


quelle
Die Microchip-Basislinien- und Mittelbereichsprozessoren haben entweder ein 12-Bit- oder ein 14-Bit-Befehlswort. Beide werden jedoch als 8-Bit-Prozessoren klassifiziert, da der Datenbus 8-Bit ist. Ein chinesisches Unternehmen (ELAN Microelectronics) hat eine Variation der 14-Bit-PICs mit einem 13-Bit-Befehlswort namens EM78 erstellt. Für all dies werden Daten in Bytes adressiert, während der Programmspeicher in Worten adressiert wird - aber der Programmspeicher wird manchmal als so viele Bytes lang angekündigt, was einen überhöhten Wert der tatsächlichen Anzahl von Anweisungen ergibt, die programmiert werden können!
Tcrosley
4

Was bedeutet "N-Bit"?

MN

Ein Mikrocontroller oder Prozessor wird als "N-Bit" bezeichnet, da Controller und Prozessoren eine grundlegende Datenbreite haben. Jedes Register kann N Bits sein, jeder Befehl kann N Bits sein, der Datenbus kann N Bits sein, der Speicher kann mit N Bits adressiert sein. Insbesondere auf der unteren Ebene gibt es Ausnahmen von dieser Regel: Beispielsweise verfügt ein 8-Bit-Controller möglicherweise über einen 12-Bit-Speicherbus. Wie Sie vielleicht vermuten, ist dies jedoch schwierig, wenn Ihre Register nur 8 Bit enthalten. Alle Prozessoren haben jedoch eine grundlegende native Datentypbreite. Betrachten Sie den folgenden Code:

uint32_t x,y,z;  // Declare 3 32-bit variables
z=x + y;         // Add two of them to store in the third

Wenn Sie nur 8-Bit-Zahlen hinzufügen können, wie würden Sie diesen Vorgang ausführen? Sie müssten jede Variable in 4 8-Bit-Zahlen aufteilen, die Additionen und Übertragungen einzeln vornehmen und sie dann zusammenführen, um das Ergebnis zu erhalten. Dies würde mindestens 16 Anweisungen erfordern! Auf einem 32-Bit-Prozessor ist es jedoch eine einzelne Anweisung, die so einfach ist wie mul r0, r1, r2. Wie Sie diesem einfachen Beispiel entnehmen können, können größere Prozessorbitbreiten mehr Daten schneller verarbeiten.

Historische Notizen

Der Trend im Laufe der Geschichte ging von kleineren Bitbreiten zu größeren. Bereits in den frühen 1970er Jahren veröffentlichte Intel den 4004, den ersten Single-Chip-Controller. Es war ein 4-Bit-Prozessor. Da Transistoren groß und leistungshungrig waren und das Design revolutionär und kompliziert war, war dies alles, was auf den Chip gedrückt werden konnte. Kurz darauf veröffentlichten sie den 8008, einen 8-Bit-Prozessor. Es werden nur noch wenige 4-Bit-Prozessoren verwendet, aber es gibt viele 8-Bit-Controller. PIC und AVR sind zeitgemäße Beispiele, die noch häufig verwendet werden. Es wurden mehr 8-Bit-Prozessoren hergestellt als bei jedem anderen Typ! Sie sind immer noch die beliebtesten Controller für kleine, einfache und kostensensitive Aufgaben. Der nächste offensichtliche Übergang war zu 16-Bit-Controllern, aber diese hatten nicht die Reichweite ihrer 8-Bit- oder 32-Bit-Brüder. Stattdessen, Es gab einen Sprung zu 32-Bit-Prozessoren, wie sie von ARM entwickelt und vor einigen Jahren in die PC-CPUs integriert wurden. Es gibt keine bedeutenden 64-Bit-Mikrocontroller, die mir bekannt sind, obwohl sie jetzt in PCs eine herausragende Rolle spielen.

8-Bit vs. 32-Bit

Die mit Abstand beliebtesten Typen sind die 8-Bit- und 32-Bit-Prozessoren. Die 32-Bit-Prozessoren werden immer beliebter. Jedes Jahr oder so veröffentlicht ein Fachmagazin einen Artikel mit dem Titel "Ist 8-Bit tot?" 32-Bit-Prozessoren werden immer beliebter, leistungsfähiger und billiger, so dass nur drei Gründe für die Wahl eines 8-Bit-Prozessors übrig bleiben:

  1. Trägheit - Wenn Sie Code für einen 8-Bit-Prozessor haben und Erfahrung damit haben, erzielen Sie möglicherweise keinen ausreichenden ROI, wenn Sie alles in eine 32-Bit-Architektur konvertieren.
  2. Geringer Stromverbrauch - Jeder Transistor in einem Controller verbraucht Strom. Obwohl die Größe kein Problem mehr darstellt, verfügen 32-Bit-Prozessoren über mehr Transistoren und verbrauchen daher im ausgeschalteten Zustand mehr Strom. Dies ist nur bei extremen Designs mit Knopfzellenantrieb ein Problem.
  3. Niedrige Kosten - Wenn Sie nur ein paar Dutzend Montageanleitungen und 2 E / A-Pins benötigen, ist wahrscheinlich sogar ein 8-Bit-Prozessor übertrieben. Am unteren Ende kosten die billigsten 8-Bit-Controller weniger als 0,40 US-Dollar, aber die billigsten 32-Bit-Prozessoren kosten immer noch etwa 0,80 US-Dollar, sind aber wesentlich leistungsfähiger als die 8-Bit-Alternativen. Wenn Sie versuchen, ein Spielzeug mit einer einzigen blinkenden LED für die nächste Million Happy Meals zu bauen, ist dies ein überzeugender Preisnachlass, wenn nicht, macht es keinen wirklichen Unterschied.

32-Bit-Prozessoren werden immer allgegenwärtiger, aber es gibt kaum Anzeichen dafür, dass der 8-Bit-Prozessor aus diesen drei Gründen wie die antiken 4-Bit-Prozessoren verschwindet.

Arduino als Beispiel

Betrachten Sie eine Anwendung wie das Arduino .

Der Arduino verwendet einen Atmel-Controller, einen 8-Bit- ATmega32 . Der ATmega läuft mit 20 MHz, verfügt über 4 KB RAM, SPI-, I2C- und UART-Kommunikation, einige Hardware-Interrupts und 8 10-Bit-ADCs. Dieser Chip kostet $ 3,90 in Mengen von 100.

Ein ähnlicher 32-Bit-Chip könnte ein weiterer Atmel-Teil sein, ein 32-Bit- AT-SAM3 , der den gemeinsam genutzten ARM Cortex-M3-Kern verwendet. Dieser Chip läuft mit 64 MHz (3x so schnell, aber denken Sie daran, dass der ATmega 16 Anweisungen benötigt, um eine einzelne 32-Bit-Addition durchzuführen). Es verfügt über 16 KB RAM, viermal so viel wie das ATmega. Es verfügt über I²C-, MMC-, SPI-, SSC-, UART- und sogar USB-Peripheriegeräte. Es verfügt über DMA (direkter Speicherzugriff, macht es auch schneller und effizienter), einen flexiblen, leistungsstarken Satz von Interrupts, 10 12-Bit-ADCs und 2 DACs. Es übertrifft den ATmega einfach in allen Kategorien. Ich habe versucht, einen 32-Bit-Controller mit vergleichbaren Funktionen zu finden, und dies war das Beste, was ich tun konnte. Wie viel kostet dieser Chip? Es sind 2,34 US-Dollar in Mengen von 100: Sie erhalten mehr Leistung für weniger Geld. Sollte eine einfache Entscheidung sein.

Was ist mit deinem Beispiel?

Für Ihre Beispielsituation hier ,

Die Anzahl der Autos, die auf einem Parkplatz ein- und ausfahren, muss gezählt und die Anzahl auf einem LCD-Bildschirm angezeigt werden. Maximal zehn Autos dürfen auf den Parkplatz.

Sie haben einige sehr einfache Berechnungen mit kleinen Zahlen und einer einfachen Anzeige auf einem LCD (oder wirklich, ein großes Zeichen aus 7-Segment-LED-beleuchteten Zahlen wäre sichtbarer und billiger). Ein 8-Bit-Controller ist für diese Aufgabe wahrscheinlich vollkommen ausreichend. Was aber, wenn Sie wirklich tun ein LCD wollen? Der 8-Bit-Controller kann selbst ein VGA-Display mit niedriger Auflösung nur schwer betreiben, während Sie problemlos Entwicklungsplatinen für 32-Bit-Controller mit HDMI-Ausgängen erhalten können. Was ist, wenn Sie es vorerst auf einem Bildschirm anzeigen möchten, es aber später an ein Ethernet-Kabel im LAN Ihres Unternehmens anschließen und die Ergebnisse auf dem Computer des Vorgesetzten im Parkbüro anzeigen möchten? Mit integrierten Ethernet-Kommunikationsbussen können Sie problemlos 32-Bit-Controller erwerben. Mit einem 8-Bit-Controller ist dies nicht möglich.Xport , aber das enthält einen 32-Bit-Prozessor.

Für einmalige Projekte würde ich jedes Mal einen 32-Bit-Controller empfehlen. Ihre Zeit ist einfach wertvoller als der Preisunterschied zwischen 8- und 32-Bit-Controllern.


In Bezug auf die von Ihnen erwähnten 7-Bit-Prozessoren gab und wird es wahrscheinlich nie solche Maschinen geben. Aus architektonischer Sicht ist es sinnvoller, Bitbreiten zu verwenden, die Potenzen von 2 sind.

Kevin Vermeer
quelle
Zum Vergleich von 8-Bit- und 32-Bit-Controllern: Obwohl 32-Bit-Controller häufiger billiger sind (Stückpreis) und mehr Funktionen als 8-Bit-Controller bieten, sind sie in Bezug auf PCB-Immobilien teurer.
Shimofuri
1

Die Bitgröße einer CPU bezieht sich auf einige Merkmale, die im Allgemeinen zusammenpassen:

  1. Die größte Größe des Operanden, mit der der Großteil des Befehlssatzes arbeiten kann
  2. Die Größe der meisten, wenn seine Allzweckregister
  3. Die Größe des größten verfügbaren Busses, der Daten zwischen Allzweckregistern und Speicher verschieben kann
  4. Die Größe des größten verfügbaren Busses, der Daten zwischen Allzweckregistern verschieben kann
  5. Die Größe der ALU, die für die allgemeine Datenberechnung verwendet wird

Bei einigen Prozessoren haben alle diese Mengen den gleichen Wert. Für andere können sie unterschiedliche Werte haben. Obwohl der Z80 einige 16-Bit-Register enthält, verwendet er für den größten Teil seines Befehlssatzes 8-Bit-Register und benötigt zusätzliche Zyklen für fast alle Befehle, die mit 16-Bit-Mengen arbeiten (die einzige Ausnahme ist EX DE, HL). Es ist eine 8-Bit-CPU. So etwas wie der 68008 kann jedoch nicht mit nur einem sehr gut beschrieben werden N: Er verfügt über einen Befehlssatz, der hauptsächlich mit 32-Bit-Mengen arbeiten kann, und er kann IIRC-Daten zwischen Registern mit jeweils 32 Bit verschieben, seine primäre ALU ist dies jedoch nur 16 Bit, und sein Speicherbus ist nur 8 Bit. Je nachdem, was gemessen wird, kann es sich um eine 32-Bit-, 16-Bit- oder 8-Bit-CPU handeln.

Superkatze
quelle