Ich fange gerade in der Elektronik an und bin schon fasziniert. Nachdem ich in den letzten Tagen mit einem Arduino gespielt habe, ist mir bewusst, dass Binär eine Darstellung verschiedener Spannungen ist - wie z. B. +5V, die 1
und GND darstellen 0
.
Ich habe versucht herauszufinden, wie der Mikrocontroller auf physikalischer Ebene die Binärdatei in diese Spannungen umwandelt. Ich finde nirgendwo eine Beschreibung. Kann jemand sein Wissen teilen oder mich auf einen Ort/ein gutes Buch verweisen, das beschreibt, wie dies funktioniert?
Ich möchte einen Teil der Antwort von KellenJB auf etwas andere Weise wiederholen:
Es gibt keine Umwandlung von binären Einsen und Nullen in Spannungen wie 5 V und 0 V. Der Mikrocontroller oder jede physikalische Schaltung arbeitet nur mit den Spannungen.
Diese Spannungen werden in unseren Köpfen in binäre 1 und 0 "umgewandelt", wenn wir in unseren Köpfen ein vereinfachtes Modell darüber bilden, wie die Schaltung funktioniert.
Es findet nicht wirklich eine "Umwandlung" statt. Binäre Einsen und Nullen sind nur eine virtuelle Darstellung der zugrunde liegenden Spannungen. Tatsächlich kann in vielen Systemen eine hohe Spannung 0 bedeuten, während eine niedrige Spannung 1 bedeutet. Es gibt einige Gründe, warum dies so ist, aber wahrscheinlich möchten Sie sich schon früh damit befassen.
Um zu verstehen, was in der Logik passiert, ist es wahrscheinlich am besten, in den Transistor zu schauen. Ein Transistor kann für viele Dinge verwendet werden, aber auf einer einfachen Ebene können Sie ihn wie einen Schalter behandeln. Konzeptionell können Sie es sich wie Ihren Lichtschalter an der Wand vorstellen, aber anstatt durch physisches Bewegen des Schalters gesteuert zu werden, wird es durch die Stromänderung gesteuert. Sie könnten das eingeschaltete Licht als 1 und das ausgeschaltete Licht als 0 behandeln. Jetzt können Sie damit beginnen, diese Schalter in verschiedenen Sätzen zu kombinieren, um verschiedene Logikelemente (wie AND, OR, NOR usw.) zu erstellen.
Ich weiß, dass meine Antwort nicht sehr detailliert ist, aber ich hoffe, sie wird Ihre Frage beantworten. Wenn Sie weitere Erklärungen benötigen, bin ich bereit, weitere Details hinzuzufügen, ich möchte Sie nur nicht überfordern.
Die kurze Antwort ist, dass es nicht "konvertiert", die Spannungen sind binär (oder eine Darstellung davon). Genauso wie wenn Sie eine Zahl auf Papier schreiben, sind die Markierungen eine Darstellung der Zahl, oder zählen Sie auf einem Abakus, sind die Steinpositionen eine Darstellung einer Zahl.
Binär ist ein Zahlensystem, genau wie Dezimal (oder Oktal, Hexadezimal usw.)
Während Dezimal (Basis-10) 10 Symbole (0123456789) hat, hat Binär (Basis-2) nur zwei (01)
Die Folge 10 in jeder Basis bedeutet die Basis zur ersten Potenz, also bedeutet 10 dezimal 10 ^ 1 = 10 und binär 2 ^ 1 = 2. Anschließend bedeutet 100 dezimal 10 ^ 2 = 100 und in binär bedeutet es 2^2 = 4. Und so weiter.
Dezimalzahlen mit Elektronik darzustellen wäre möglich, aber kompliziert, also wählten sie Binärzahlen, die durch einfache 0 und 1 (oder Ein/Aus) dargestellt werden können.
Es gab Variationen davon, wie ternäre Systeme (3 Zustände) und natürlich analoge Berechnungen . Vor Transistoren gab es mechanische Lochkartenmaschinen (google weiß viel, einige sehr interessante Lektüre, wenn Sie Zeit haben)
Die frühesten binären Digitalcomputer wurden mit echten Schaltern (elektronischen Relais) hergestellt. Ein Beispiel ist die Zuse Z3 (1941):
Danach wurden anstelle von Relais Vakuumröhren verwendet (könnten ohne bewegliche mechanische Teile schneller schalten), die das Schalten anstelle von Relais durchführten. Der ENIAC ist ein Beispiel für einen frühen Computer, der mit Vakuumröhren hergestellt wurde.
Dann kamen in den 60er Jahren Transistoren und bald darauf ICs. Die Transistoren erfüllen dieselbe Funktion wie die Relais/Ventile in früheren Maschinen, waren jedoch viel kleiner, schneller und verbrauchten weniger Strom.
Die eigentliche Theorie hinter der grundlegenden Funktionsweise binärer Computerschaltkreise hat sich überhaupt nicht geändert, genauso wie wir die Art und Weise, wie wir Zahlen in der Mathematik manipulieren, nicht geändert haben - Algorithmen verbessern sich, aber die Grundregeln bleiben gleich.
Wenn Sie also wissen, wie binär funktioniert, und Sie eine einfache Schaltung haben, die entweder eine 1 oder 0 als zwei verschiedene Spannungspegel (z. B. 5 V und 0 V) speichern kann, und andere einfache Schaltungen, die einfache logische Funktionen wie AND und OR ausführen können, dann Sie können sie alle kombinieren, um komplexere Dinge zu tun.
Da all diese binären Schaltungen im Grunde nur Schalter sind, können Sie dasselbe mit allem erreichen, was zwischen zwei Zuständen wechseln kann, wie mechanisch / Relais / Ventil / Transistor /?.
Um ein Beispiel für die binäre Speicherung einer Zahl zu geben, nehmen wir an, wir haben 8 Schalter (welcher Typ sie sind, ist nicht wichtig)
. Eine 1 wird durch 5 V und eine 0 durch 0 V dargestellt.
Wir wollen die Nummer 123 speichern.
Dezimal ist es 123 = (1 x 10^2) + (2 * 10^1) + (3 x 10^0)
Binär ist es 01111011 = (0 x 2^7) + (1 x 2^6) + (1 x 2^5) + (1 x 2^4) + (1 x 2^3) + (0 x 2^2) + (1 x 2^1) + (1 x 2^0)
Also alle Wir setzen die Schalter 0,1,3,4,5,6 auf 5V und die Schalter 7 und 2 auf 0V. Dies "speichert" die Zahl 123 in Binärform. Diese Einrichtung wird als "Register" bezeichnet.
Wenn Sie mehr darüber wissen möchten, wie die Schalter zu komplexeren Schaltungen kombiniert werden, besorgen Sie sich ein gutes Buch über digitale Logik oder fragen Sie Google.
Diese Seite scheint für den Anfang nicht schlecht zu sein.
Das Programm, das Sie ausführen, verwendet Spannungen, die Einsen und Nullen darstellen. Alles an diesem digitalen Teil sind Spannungen, die entweder nahe an Masse oder nahe an der Versorgungsspannung liegen (in Ihrem Beispiel 5 V). Wenn Sie ein Prozessorregister mit 0xFF laden, können Sie sagen, dass Sie irgendwo im Chip 8 separate 5-Volt-Signale erzeugen. Wenn Sie diesen Registerwert dann in einem Steuerregister speichern, das sich auf die Ausgangsports bezieht, bewirken die Ausgangspins am Gerät, dass die 5-V-Signale im Prozessorregister dann andere 5-V-Signale erzeugen, die mit den externen Pins des Geräts verbunden sind .
Die Spannungen sind nur eine Möglichkeit, die Binärzahl darzustellen. Es ist eine ziemlich effiziente und praktische Umwandlung, die es ermöglicht, binäre Logik mit verschiedenen Transistorkonfigurationen zu implementieren.
Die Art und Weise, wie binäre Logik normalerweise elektronisch implementiert wird, ist die Verwendung der CMOS-Technologie ( http://en.wikipedia.org/wiki/CMOS ), bei der zwei MOS-Transistoren in einem komplementären Paar angeordnet sind, um ein CMOS-Gate zu bilden. Es gibt jedoch andere elektronische Implementierungen der binären Logik, die beispielsweise TTL ( http://en.wikipedia.org/wiki/Transistor –transistor_logic ) oder Relais verwenden. Aber Sie könnten wirklich alles verwenden, Papier, Roboterziegen aus Papier: http://www.robives.com/category/product_tags/logic_goats . Die elektronische CMOS-Implementierung ist einfach effizient und praktisch.
Aus diesen einfachen CMOS-Gattern können Sie kompliziertere Logikgatter bauen: NAND und NOR, wobei das Standardgatter NICHT ist, sind die grundlegenden. Daraus können Sie alles aufbauen, was binäre Logik ist, einen Addierer, eine Registerdatei, einen Speicher. Daraus kann man eine ALU bauen, bis hin zu einem kompletten Mikroprozessor.
Wenn Sie weitere Informationen wünschen, können Sie ein Buch über digitale Logik lesen, das ich zufällig besitze und das dieses mag:
Eine nette praktische Methode, um zu verstehen, wie eine CPU aufgebaut ist, besteht darin, selbst eine zu bauen, indem man VHDL und ein FPGA verwendet. Sie können günstige FPGA-Entwicklungsboards erhalten und die Software ist normalerweise kostenlos (für eine eingeschränkte Lizenz). Ich habe ein paar von Digilent, die recht erschwinglich sind:
Einfach ausgedrückt, in einem bestimmten Bereich (normalerweise von 5 bis 12 Volt) ist das höchstwertige Bit in der ersten Hälfte dieses Bereichs 0 und in der anderen 1. Das nächsthöchstwertige Bit wird berechnet, indem diese Hälfte weiter durch zwei geteilt wird und so weiter, bis alle Bits berechnet wurden.
Daher geht es bei binär nur darum, Spannungen zu erhöhen und zu verringern, die periodisch gemessen werden.
Hier ist ein vereinfachtes Beispiel. Lassen Sie uns im Bereich von 1 V bis 256 V (analog) 137 mit Pseudocode in binär (numerisch) übersetzen:
// used this way: analogToNumeric(137, 256);
function convert(var number, var length) {
if (number > length) { return(ERROR); }
function convert(var half, var binary) {
if (half < 2) { return(binary); }
elseif (number < half) {
return(convert((half / 2), append(binary, 0)));
} else {
return(convert((half / 2), append(binary, 1)));
}
} return(convert((length / 2), list()));
}
abdullah kahraman
abdullah kahraman
abdullah kahraman
Nur Jeff
Matt
Matt