Volladdierer

Gast #121964
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
Gast #121967
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
Gast #121968
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
Gast #121971
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
Gast #121972
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
Gast #121973
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
Gast #121974
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
Gast #121975
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.
Gast #121976
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
Gast #121979
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.
Angehängte Dateien:
Gast #121980
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
Gast #121982
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
Gast #121984
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
Gast #121985
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
Gast #121987
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.
Gast #121988
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
#121989
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
Gast #121990
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.
Gast #121992
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
Gast #121993
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 (-;
Gast #121994
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
#121995
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
Gast #121996
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
Gast #121997
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
Gast #121999
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren