Forum: Mikrocontroller und Digitale Elektronik Volladdierer


von Reiner (Gast)


Lesenswert?

Hallo, ich bin gerade auf der Suche nach Volladdieren.
4bit Volladdierer wie den 74HC283 gibt es ja wie Sand am Meer,
aber kennt jemand einen 8bit oder 16bit Volladdieren, der wenn möglich
schneller als 20ns ist????

Würde mich sehr über Hilfe freuen
Reiner

von Matthias (Gast)


Lesenswert?

Hi

Gehe nicht über 74HCxx, ziehe keine Drahtigel gehe direkt zu CPLD's
:-)

Matthias

von Reiner (Gast)


Lesenswert?

Das wärs einfachste, aber ich versuche gerade eine kleine CPU zu bauen
und das nur aus TTL Bausteinen! Hört sich vielleicht krank an, bis
jetzt funktioniert es aber (-;

Gruß Reiner

von Matthias (Gast)


Lesenswert?

Hi

Ja, hört sich wirklich krank an :-)
Ich würde das heute, ganz ohne Drahtverhau, in einem FPGA realisieren.

Was den 8-Bit Volladdierer betrifft muß ich dich leider entäuschen. In
der 74er Reihe gibts da AFAIK nichts.

Matthias

von Reiner (Gast)


Lesenswert?

Danke für deine Antwort
Da es eine 32bit CPU is, muss ich dann wohl 8x 4bit Volladdierer
verbauen, dass wird lustig (-;

Gruß Reiner

von Matthias (Gast)


Lesenswert?

Hi

und deine 20ns kannst du dann auch mehr als abschreiben.

Matthias

von Reiner (Gast)


Lesenswert?

Ja ich weiß, einer brauch 17ns, des dauert dann aber für einen durchlauf
eher 20*8=160ns, des sind aber immerhin noch über 6 Mhz.
Theorethisch bin ich dann schneller als ein 386er (-:

Gruß Reiner

von Quark (Gast)


Lesenswert?

Hi,
mit Deinem Volladdierer kann ich Dir nicht helfen.
Nur eine Frage. Diese Seite kennst Du natürlich?
Wieviele Chips brauchst Du dann, wenns 32-Bit sein soll?
Viel Spaß und Erfolg dabei!
Quark

von Quark (Gast)


Lesenswert?


von Christof Krüger (Gast)


Lesenswert?

Schöne Seite, habe ich mir gerne durchgelesen.

Meinen Respekt für so viel Leidenschaft an der Bastelei!

von Reiner (Gast)


Lesenswert?

Die Seite habe ich mir schon durchgelesen, aber mir ist aufgefallen,
dass das eigntlich keine echte Recheneinhaeit is, da alle möglichen
Ergebnisse in EEProm´s gespeichert sind und die 8bit Daten als
Adressleitungen für die EEProm´s benutzt werden!

@ Quark
Wenn ich zum Addieren 4bit Volladdierer nehm, brauch ich 8 Stück für 32
Bit. Für Minus wird der zu substrahierende Wert einfach invertiert und
das Carry auf 1 gesetzt und dann addiert. So brauch ich für Plus und
Minus so um die 15 IC´s. Bei multi. und divi. weiß ich noch ned genau
wie ich dass anstellen soll.
Hat da jemand eine Idee?

Gruß Reiner

von Matthias (Gast)


Lesenswert?

Hi

Multiplizieren ist in Hardware groß oder langsam. Nicht umsonst wird
bei den TinyAVR's auf einen Hardware-Multiplizierer verzichtet.
Multiplizierer gibt es AFAIK garnicht als seperate Chips sondern nur
integriert in µC. Da deine CPU eh keine Rakete sein wird würde ich mich
auf eine Softwarelösung beschränken.

Matthias

von Quark (Gast)


Lesenswert?

@Reiner
danke für die Antwort.
Ich meinte die ganze 32-Bit CPU, kannst Du die Anz. Chips schon
absehen?
Wenn Deine CPU Mikroprogrammiert wird, machst Du Mult./Div. doch damit?
Ist das dann eine Softwarelösung? Oder rede ich "wieder" Quark.
Gruß
Quark

von Reiner (Gast)


Lesenswert?

@Matthias
Dachte ichs mir doch schon fast, dass es dafür keine Ic´s gibt*g*
Eigentlich hatte ich eh vor in der ALU eine Einheit zum schieben der
Bits zu machen. Ich kann dann ja im ersten Register immer schauen
welches Bit gesetzt ist und im 2. Register dann schieben und die
Ergebnisse des "geschobenen Registers" addieren! So funktionert es
jedenfalls ins der Simulation (-;


@Quark
Bis jetzt hab ich noch keine genaue Stückzahl, aber ich denke unter 100
IC´s werd ich wohl ned wegkommen (die 8 bit CPU in dem Link hat ja schon
50 IC´s)!
Das mult./div. wird wohl eher eine Mischung aus Software und Hardware,
aber vielleicht fällt mir ja noch ne schnellere Lösung ein.

Gruß Reiner

von Christof Rieger (Gast)


Lesenswert?

Sag mal,
wieviel Eurokarten hast du denn für das Projekt vorgesehen ?
Für die Multiplikation zweier 32 Bit Zahlen brauchst du übrigens ein 64
Bit Volladdierer, ein 64 Bit Scheiberegister, ein 64 Bit Latch und ein
16 Bit Schieberegister. Dieser Aufbau braucht dann immer noch
mindestens 16 Taktzüklen für eine Multiplikation ohne Laden und
Auslesen der Register.

von Reiner (Gast)


Lesenswert?

Danke für deine Antwort!!!!!!!
Das mit den Eurokarten oder der größe ist kein Problem, allerdings
glaub ich, dass die Einstreuungen usw. mein größtes Problem sein werden
)-:

zum multiplizieren:
Könntest du mir das nochmal etwas genauer erklären, weil 16 Taktzyklen
sind deutlich weniger, als das was ich benötigt hätte!!

Aber wieso brauch ich 64 bit Volladdierer, 64bit Latch, 64bit
Schieberegister und 16bit Schieberegister???

Gruß REiner

von Christof Rieger (Gast)


Lesenswert?

Oh Gott,
da muss ich mahlen, kann ein Moment dauern.

von Reiner (Gast)


Lesenswert?

ok, kein Problem!

Danke schonmal (-:

Gruß Tobi

von Christof Rieger (Gast)


Angehängte Dateien:

Lesenswert?

Sorry, habe mich vertan.
Brauche naturlich 32 Zyklen. Kann sein, dass das nun nix mehr ist.

Siehe Bild.

Das funktioniert wie beim Schriftlichen Multiplizieren.
Achso Latch ist Falsch, Register natürlich.
1. Register löschen.
   Schieberegister 1 und 2 Laden
2-33. wenn das LSB von Faktor 2 1 ist wird die Summe aus Vorergebnis
und Faktor 1 ins Register geschrieben, bei O bleibt der Alte Wert. Dann
werden beide Register verschoben und der Vorgang wiederholt, solange bis
Faktor 2 durchgeschoben wurde. Dann kann man das Ergebnis lesen.

von Reiner (Gast)


Lesenswert?

Danke für die Zeichnung!!!!!!!!!!!!!!
Die 32 Zyklen sind immernoch wahnsinnig schnell im Gegensatz zu dem,
was ich gebraucht hätte (unter 200 wär ich nicht gekommen)!!
Jetzt stellt sich nurnoch die Frage, wo ich 64bit Schieberegister
herbekomme, oder kann ich 8x8bit Schiebregister nehmen (falls die sowas
wie Carry haben)?

Viele Grüße Reiner

von Christof Rieger (Gast)


Lesenswert?

ja das geht.

von Matthias (Gast)


Lesenswert?

Hi

8x8 Schieberegister kannst du durchaus nehmen. z.B. 74299

http://www.standardproducts.philips.com/products/ könnte für deine
Projekt ganz hilfreich sein.

Das was Christof Rieger da gezeichnet hat ist übrigens auch als
"Russische Bauernmultiplikation" bekannt
http://de.wikipedia.org/wiki/Bauernmultiplikation

BTW:
Interesantes Projekt hast du da. Wäre nett wenn du ab und an etwas über
den Vortschritt berichten könntest. Nur so aus reiner Neugier.

Matthias

von Christof Rieger (Gast)


Lesenswert?

Coll "Russische Bauernmultiplikation" den Begriff kannte ich noch
nicht. Hatte es einfach vom schriftlichen Multiplizieren abgeleited.

von Reiner (Gast)


Lesenswert?

Danke für eure Hilfe, die Schulferien sind gerettet (-;

Wenn ihr wollt, kann ich ruhig immer wieder den neusten Stand
berichten, aber wenn das Projekt fertig ist (falls das eintreten
sollte*g*), stell ich es eh auf meine Homepage.

Gruß Reiner

von Reiner (Gast)


Lesenswert?

Hab noch ne kleine Frage:
Wäre als Schieberegister so etwas wie diese Typen geeignet:

74F166 -> 175 Mhz
74HC166 -> 63 Mhz

Bis jetzt habe ich den 74F166 nirgendwo gesehen, weis jemand, wo man
den herbekommt, denn dann könnte man ihn mit 100Mhz betreiben (also
nicht an der Grenze) und könnte somit 100/32 = 3,125 Millionen
Multiplikationen pro Sekunde durchführen. Oder lieg ich jetzt falsch?

Gruß Reiner

von Chris (Gast)


Lesenswert?

Hallo

machst Du das als herausfordernde Aufgabe im Hobbybereich? Kannst Du
mal Fotos des Aufbaus veröffentlichen, wenn es fertig ist?

Gruß

von Christof Rieger (Gast)


Lesenswert?

Mach dich nicht verückt wegen dem Schieberegister, deine Bremse wird der
64Bit breite Volladdierer sein. Selbst bei einer Laufzeit von 5ns pro
Bit sind das 320nS Gesammtlaufzeit. Da Schieben z.B. auf der Positieven
Taktflanke uns der Strob dann auf der negativen Taktflanke liegen wir,
brauchst du eine Zykluszeit von 640nS, das sind ca 1,6MHz das macht
jedes Schieberegister kalt lächelnd mit. Es hat nämlich keine
zusätzliche Verzögerung durch die größere Bit Zahl. Vergiss nicht, das
du hier einen diskreten Aufbau machst, damit wirst du nie die
Leistungsklasse eines "Gepressten Prozessors" erreichen.

von Martin S. (Gast)


Lesenswert?

Das erinnert mich an meine Lehre. Ich habe "Meß- und Regeltechnik"
gelernt bei einem "großen deutschen Pharma-Unternehmen". Irgendwann
haqben wir eine Meßwarte abgebaut, welche in einem "Ex-Betrieb"
(Explosionsgefährterter Betrieb) aufgebaut war. Die ganze
Anlagensteuerung war luftbetrieben. Viel analoges Zeugs (PID-Regler,
Vertärker, aber auch hunderte von grundsätzlich digitalen
Schaltfunktionen, aber alle haltaufgebaut aus LUFT-STEUERELEMENTEN!

Nach 3 Monaten Ausschlachterei und Bastelei hatten wir es tatsächlich
geschaft, einen "Luft-Rechner" zu bauen: 8 Bit Addierer,
Eingabemöglichkeit, Ausgabe etc.

Das Ding war "etwas" größer als ein Taschenrechner (hat in
Wirklichkeit 2 Regalracks voll mit ca. 6 Qm Fläche gebraucht)

Hie, das war ein Spass, wenn das Ding angefing zu rechnen ... es
klackerte,  zischte und pustete, und nach ca. 1 Minute war das
Rechenergebniss stabil .... Man konnte jedes Bit noch einzeln sehen
(und hören)


Und sowas willst du heute in so einen klitzekleinen Käfer reinpressen
:-( Da fehlt ja total der sinnliche Bezug zum Rechnen g

von Peter D. (peda)


Lesenswert?

Ich will Dir ja nicht den Optimismus nehmen, aber 32 Bit und dann noch
schnell und mit Multiplikation, das schreit geradezu nach CPLD oder
FPGA.

Ich hatte mal auch so ne Idee, aber nur 8-Bittig mit 1-Bit-ALU und 2
8-Bit-Schieberegistern, aber selbst da schien mir Kuchenblechgröße
nötig.

Schon allein die 32 Datenleitungen überall hin zu verdrahten klingt
nach 8-Ebenen Platine.


Peter

von Christof Rieger (Gast)


Lesenswert?

Mit dem GAL GAL 20V8-15QP könntes du für den Volladdierer auf 15nS pro 6
Bit kommen inclusive Registerfunktion. 11x15nS=165nS den bekommst du bei
R....elt. Lt Datenblatt gibt es noch ein 7,5nS Model aber wo? = 82,5nS.
Leider sind die Dinger nicht so leicht zu Progen.

von Christof Rieger (Gast)


Lesenswert?

@Peter
Ja da hast du recht der LSI 5128 VE100LT könnte die ALU aufnehme
vorausgesetzt man kapiert wie man das Ding programmieren muss.
Ich bin ein wenig erschrocken.

von Matthias (Gast)


Lesenswert?

Hi

In den LSI 5128 wirst du deine ALU nicht reinbringen da schon für für
64 Bit Schieberegister und 64 Bit Register die 128 Makrozellen
verbraucht sind.

Also gleich ein (etwas größeres) FPGA. Da bringst du deine ganz CPU
unter und die Entwicklung und Fehlersuche geht auch einfacher von der
Hand. So könntest du mehr Zeit in ein ordentliches Design der CPU
investieren.

Matthias

von Reiner (Gast)


Lesenswert?

Danke für eure ganzen Antworten!
Ich weis, dass man die CPU in einen FPGA packen könnte, aber dann
könnte ich das alles gleich mit Microcontrollern wie ARM7 usw.
aufbauen. Ich habe ja die Absicht die CPU von Anfang bis Ende mit TTL´s
aufzubauen und mir is es eigentlich egal wie groß die Wird, so lange se
in mein Zimmer passt (-;

von Reiner (Gast)


Lesenswert?

Ich hab mir das jetzt nochmal überlegt und hab mich dazu entschlossen,
dass ich doch PAL´s oder GAL´s verwende, wenn dies den Aufwand
verringert. Ich habe noch nie etwas mit solchen Logikbausteinen
gemacht, gibt es eine gute Seite die erklärt wie man die Programmiert
(wenns geht auf Deutsch, bin erst 8. Klasse )-: )
Könnte ich damit auch den Multiplizierer aufbauen??

Gruß Reiner

von Peter D. (peda)


Lesenswert?

Ich würde zu XCR3064 oder XC9572 raten. Die gibts nämlich noch im
PLCC-Sockel, d.h. man kann sie bequem in eine Fassung auf ne
Lochrasterplatte setzen.

Die JTAG-Pins kann man alle kaskadieren und somit alle über einen
gemeinsamen Programmieranschluß vom PC über den LPT programmieren.

Die Software mußt Du von Xilinx runterladen oder laß Dir ne CD
schicken.

Die XCR3*** haben den Vorteil, daß sie CMOS sind (kein Takt->kein
Stromverbrauch), allerdings laufen sie nur mit 3,3V.

Wenn Du es geschickt anstellst, kannst Du einen als 8-Bit ALU
programmieren und davon für 32 Bit 4 Stück kaskadieren.


Peter

von Reiner (Gast)


Lesenswert?

Wäre es dann nicht geschickter gelich einen größeren CPLD/FPGA nehmen,
wie z.B. den LSI 1032 E70LJ von Lattice oder einen XCS 05-3 von
Xillinx??????
Ich kenne mich zwar nicht aus, aber ich glaube, dass man für eine 32bit
ALU schon einen Leistungsfähigen CPLD/FPGA braucht, oder?

Gruß Reiner

von Reiner (Gast)


Lesenswert?

Wenn ich einen FPGA/CPLD für mein Projekt verwende, sollte dieser alle
Rechenarten, wie addieren, substrahieren, mul und div können!!
Es wäre nicht schlecht, wenn der FPGA oder CPLD auch noch überprüfen
könnte, welches Register größer ist, oder ob beide gleich groß sind
usw.
Welchen FPGA/CPLD würdet ihr mir empfehlen??
Oder ist das für den Anfang zu schwer??


Gruß Reiner

von Reiner (Gast)


Lesenswert?

Ich will ja nichts sagen, aber ihr habt mir vorgeschlagen einen FPGA zu
benutzen, deswegen fänd ich es jetzt nett, wenn ihr mir bischen helfen
würdet!!

Reiner

von Matthias (Gast)


Lesenswert?

Hi

besorg dir eine Software (z.B. bei Xilinx) und arbeite dich erstmal
darin ein. Die Logik kann man (sollte man sogar) am PC entwerfen und
dann auf den FPGA bringen.

Typmäßig wirst du in Richtung Spartan2 gehen müssen wenn die ganze CPU
in den FPGA soll.

Matthias

von Reiner (Gast)


Lesenswert?

Eigentlich soll der FPGA nur die ALU übernehmen und den Rest will ich
mit TTL´s aufbauen!


Gruß Reiner

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.