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
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
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
Danke für deine Antwort Da es eine 32bit CPU is, muss ich dann wohl 8x 4bit Volladdierer verbauen, dass wird lustig (-; Gruß Reiner
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
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
Schöne Seite, habe ich mir gerne durchgelesen. Meinen Respekt für so viel Leidenschaft an der Bastelei!
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
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
@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
@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
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.
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
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.
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
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
Coll "Russische Bauernmultiplikation" den Begriff kannte ich noch nicht. Hatte es einfach vom schriftlichen Multiplizieren abgeleited.
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
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
Hallo machst Du das als herausfordernde Aufgabe im Hobbybereich? Kannst Du mal Fotos des Aufbaus veröffentlichen, wenn es fertig ist? Gruß
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.
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
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
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.
@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.
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
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 (-;
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
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
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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.