mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Verständnisfrage: ALU mit EPROM Table


Autor: christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi allerseits.

Rein interessehalber beschäftige ich mich mit
allgemeinen internen CPU Abläufen.

Angenommen man möchte eine 4 Bit ALU konzipieren
mit 2 Eingangsbusse: A0..3=A, A4..7=B und 1 Ausgang:
Q0..3=Q, welche noch zusätzliche Eingänge für
entsprechenden Modi(Add,Sub,Mul...) und Flags
besitzt.

Die verschieden Operationen für Add,Sub... sollen
nun in Binärform(z.b. mittels C Compiler generiert)
in einen EPROM als Look-Up Table hinterlegt werden.

Mir ist klar das über A0..3=A, A4..7=B die 2 Operanten
adressiert werden(im EPROM) die die Werte für z.b. A+B=Q
enthalten.

Ein C Program zur Lookup-Table Generierung sieht dann meistens so aus:
-----------------------------
main()
{
...
outstream=fopen("4bitalu.bin","wb");
for(i=0; i<0x10000; i++) //alle möglichen Eing.kombinationen
  {
    fputc(do_rom(i),outstream); //schreibe EPROM Byte
  }
...
-----------------------------
wobei do_rom(i),die entsprechende Operation ausführt:
-----------------------------
char do_rom(long addr)
{  ...
   switch(cmd)
  {
     case ALU_ADD:    out+=(a&0xf)+(b&0xf);
     ...
  }
     return(out);
}
-----------------------------
Das Ergebnis out wird also ins EPROM gespeichert.

Jetzt endlich meine Frage:
Wie/Wo wird denn die Addition ausgeführt?
Ich habe mir im Internet versch. Projekte angeschaut
(z.b.MYCPU) die eine ALU mittels oben beschriebenen
Lookup-Table mittels EPROM implementierten.
Aber nirgends Hardwareseitig Addierer oder so entdeckt.
Ich verstehe nicht wie aus den Operanten a und b eine
Summe berechnet werden kann ohne entspr. Hardware.
Macht das etwa das EPROM oder so?

Im Voraus Danke für eure Informationen.

Gruß
Christian

Autor: jason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

In dem EEPROM sind die Lösungen gespeichert, d.h., wenn du bspw. 0b0000 
und 0b0000 addieren willst, werden diese beiden Zahlen an die 
Addresseingänge des EEPROMs "gesendet". Die Addresse, die angesprochen 
wird, ist also 0b00000000. An dieser Stelle ist dann 0b0000 gespeichert, 
das Ergebis der Addition also.
Willst du 0b0001 und 0b0010 addieren, werden diese Daten auch an die 
Addresseingänge "gesendet". Die angesprochene Addresse ist also 
0b00010010. In diesem Teil des Speichers ist das Ergebnis (also 0b0011) 
gespeichert.

Look-up Table heißt übersetzt "Nachschlag Tabelle". In dem EEPROM wird 
also das Ergebnis "nachgeschlagen".

MfG

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Heißt das, das man für jede Operation(Add,Sub...)und jede 
Adresskombination  die Ergebnisse schon vorher in den EPROM
speichern muß?

Hat man z.b. EPROM mit 20 Eingängen = 2^20=1MB(Adressraum)
dann bräuchte man doch bei 8 Operationen(Add,Sub...)einen
8MB großen EPROM.Ist das so richtig.

Gruß
Christian

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine 4-Bit ALU mit 16 Operationen benötigt
  4 Eingänge A
  4 Eingänge B
  4 Eingänge Op
= 12 Adressbits = 4KB

Evtl. kommt noch ein Eingang für's Carry-Bit hinzu.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Christian (Gast)

>Heißt das, das man für jede Operation(Add,Sub...)und jede
>Adresskombination  die Ergebnisse schon vorher in den EPROM
>speichern muß?

ja.

>Hat man z.b. EPROM mit 20 Eingängen = 2^20=1MB(Adressraum)
>dann bräuchte man doch bei 8 Operationen(Add,Sub...)einen
>8MB großen EPROM.Ist das so richtig.

Das kommt auf die Breite deiner Operanden an. Wenn du von den 20 
Eingangsbits drei für die Auswahl der Operation wegnimmst, bleiben 17 
für die Eingänge. Gerade genug 2x8 Bit Operanden plus Carry Bit. Daran 
erkennt man, dass die LooK Up Table Sache auch ihre Grenzen hat. Weshalb 
man das sinnvoll in Logik zerlegen muss.

MfG
Falk

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach ja habe die 3 Leitungen für die 8 Operationsmodi vergessen.

Wie werden denn ALU's in Mikroprozessoren realisiert?

Gibt es welche in festverdrahteter Logik? Diese müssten doch
viel schneller arbeiten können, da Zugriffszeiten der Speicher(EPROM)
wegfallen.

Gruß
Christian

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, es gibt ALUs in festverdrahteter Logik. Man kann so etwas im 
TTL-Baustein 74181 finden, oder als Bestandteil von klassischen CPUs, 
deren Schaltplan bekannt (und überschaubar) ist, z.B. 6502, evtl. Z80.

Autor: Michael L. (michaelx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi christian,

ich glaube, du bringst hier 2 Dinge gehörig durcheinander.

1.
Die ALU einer CPU ist keineswegs wie ein EPROM aufgebaut, in dem alle 
Ergebisse aller möglichen Berechnungen abgespeichert sind. Da wird 
wirklich gerechnet!

2.
Es ist z.B. möglich, mit Hilfe eines EPROMs eine ALU "nachzubilden".
Dazu werden die Adressleitungen als Eingänge verwendet, und die 
Datenleitungen geben das Ergebnis aus. So könnte man mit einem 
1k-Byte-EPROM schon eine 4-Bit-ALU mit den 4 Grundrechenarten erstellen. 
Man könnte die Adressleitungen A0..A3 für den ersten, A4..A7 für den 
zweiten Operanden verwenden, und mit A8 und A9 dann Add, Sub, Mul und 
Div kodieren. Programmiert würde der EPROM mit allen zugehörigen 
Ergebissen.

Oft wird ein EPROM (bzw. intern als Lookup-Table) im 
Mikrocontroller-Bereich auch dazu verwendet, um Umrechnungen in 
Sinus/Cosinus o.ä. zu realisieren.

HTH

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.