mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Volladdierer


Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

Matthias

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

Matthias

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Quark (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Quark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Christof Krüger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schöne Seite, habe ich mir gerne durchgelesen.

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

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Quark (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh Gott,
da muss ich mahlen, kann ein Moment dauern.

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok, kein Problem!

Danke schonmal (-:

Gruß Tobi

Autor: Christof Rieger (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja das geht.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christof Rieger (Gast)
Datum:

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

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

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

Gruß

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Martin S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christof Rieger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 (-;

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Reiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Reiner (Gast)
Datum:

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


Gruß Reiner

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.