Hallo an alle, bin neu bei FPGAs und wollte mal fragen, wieso man mit einem FPGA nur wenige Divisionen machen kann? WArum kommt er mit Multiplikationen besser klar und warum frisst eine Division soviele Ressourcen. Danke
Schriftlich Multiplizieren ist auch eine viel einfachere Angelegenheit als schriftliches Dividieren - Multiplizieren kann man immer Ziffer für Ziffer, während man für das Dividieren immer den kompletten Divisor im Auge haben muss...
> WArum kommt er mit Multiplikationen besser klar...
Eine Multiplikation ist eine rein kombinatorische Angelegenheit.
Bei der Division wird jede Stelle per Handschlag verabschiedet.
Nur durch 2er Potenzen (2,4,8,16...) lässt es sich leicht dividieren,
dann werden einfach die "unteren" Bits nicht weiterverwendet (also nicht
mal ein "Shift", sondern einfach ein "Ignore").
Lothar Miller wrote:
> Bei der Division wird jede Stelle per Handschlag verabschiedet.
Danke für deine Antwort die eine Zeile hab ich leider nicht so
verstanden. Kannst du vllt ein kleines Beispiel geben zum Beispiel 8:3
oder sowas einfaches?
Ich vermute mal es läuft wie bei einer normalen schriftlichen Division ab: 1000/11 1/11 => 0 10/11 => 0 100/11 => 1 Rest 1 10/11 => 0 Ergebnis: 1000/11=10 Das würde bedeuten, dass die Division vor allem aus Subtraktionen, bedingten Sprüngen und Bitverschieben besteht.
Hey vielen dank für dein Beispiel aber irgendwas muss bei deiner Rechnung falsch gelaufen sein. 1000 / 11 ist 10? eher 90 mit Rest oder? Mat der µC das vllt Binär?
Marco M. wrote: > Hey vielen dank für dein Beispiel aber irgendwas muss bei deiner > Rechnung falsch gelaufen sein. > > 1000 / 11 ist 10? > > eher 90 mit Rest oder? > > Mat der µC das vllt Binär? Ein FPGA ist zwar kein µC, kann aber auch nur binäre Signale verrechnen.
Aber dafür machen PC-Prozessoren das schon seit langer Zeit nicht mehr so ganz binär. Die Logik ist es zwar noch, aber die Rechenweise war schon beim ersten Pentium auf Basis 4 - was Intel den berühmt gewordenen Bug einbrachte.
> Ein FPGA ist zwar kein µC, kann aber auch nur binäre Signale verrechnen. Jep, das weiss ich :-) aber wie wird denn nun genau die Division vollzogen, so wie das Johannes Slotta geschrieben hat? WObei mir nicht ganz klar ist, wieso der FPGA dort 2 mal 10/11 teilen sollte oder ob das nur ein Tippfehler ist. MFG
Kenne FPGAs (noch) nicht persönlich, aber dass die wie µCs binär ticken hab ich einfach mal so den Beschreibungen entnommen, daher mein Beispiel (wie ich mir eine Division vorstelle, das muss nicht die tatsächlich eingesetzte Variante sein) binär formuliert. Welchen Vorteil bringt die Basis 4? Ist doch viel komplizierter, wenn man [1 bis 3]*x abziehen muss als einfach nur x... OK, Beispiel noch mal wie schriftliche Divison: 1000 : 11 = 0010,1... -0 - 10 - 0 -- 100 - 11 --- 10 - 0 -- 100 - 11 --- 1... Jetzt verstanden, wie ich das meinte?
Johannes Slotta wrote: > Welchen Vorteil bringt die Basis 4? Ist doch viel komplizierter, wenn > man [1 bis 3]*x abziehen muss als einfach nur x... Ist doppelt so schnell. 2 Bits pro Schritt statt 1. http://members.cox.net/srice1/pentbug/introduction.html (von gewissem persönlichem Interesse, siehe Kap 7 ;-).
Nimm mal einen Zettel und rechne beide Varianten durch. Du wirst schnell erkennen, wo man mit weniger Schritten auskommt.
Man hat zwar weniger Schritte, aber man muss den Subtrahenden erst ausrechnen (Multiplikation mit 1, 2 oder 3), bei der Basis 2 reicht eine einfache Fallunterscheidung.
Ist nicht wirklich nötig, ein kleines PAL für Daumenpeilung tut es auch wenn dessen Inhalt korrekt ist (was bei Intel nicht der Fall war). Lies dir mal den Artikel durch.
@Johannes: er hat nicht geschnallt, dass du seine 8:3 direkt in binär rechnest. Marco M. wrote: >> Ein FPGA ist zwar kein µC, kann aber auch nur binäre Signale verrechnen. > > Jep, das weiss ich :-) aber wie wird denn nun genau die Division > vollzogen, so wie das Johannes Slotta geschrieben hat? > > WObei mir nicht ganz klar ist, wieso der FPGA dort 2 mal 10/11 teilen > sollte oder ob das nur ein Tippfehler ist. > > MFG Eben. Die gesamte Rechnung von Johannes ist in Binär ;-) Durch deine "eher 90" Rückfrage hast du gezeigt, dass du nicht erkannt hast, dass im Binärsystem gerechnet wurde. Es gibt nur 10 Sorten von Menschen, die einen kennen das Dualsystem, die anderen nicht.
>bin neu bei FPGAs und wollte mal fragen, wieso man mit einem FPGA nur >wenige Divisionen machen kann? Weil man soviele Divisionen machen kann, wie man will. Ich kann diese Fragen "Wieso ist <richtige Aussage> falsch" oder "Wieso ist <falsche Aussage> richtig" nicht mehr lesen. Wer grundlegende Logik nicht beherrscht, sollte sich nicht an FPGAs versuchen.
> Eben. Die gesamte Rechnung von Johannes ist in Binär ;-) > Durch deine "eher 90" Rückfrage hast du gezeigt, dass du nicht erkannt > hast, dass im Binärsystem gerechnet wurde. Jep alles klar, stand auf dem Schlauch. SO meine letzte Frage noch, ob jmd weiss, was der FPGA genau beim shiften macht? Also LUP CPLs usw?
> LUP CPLs ?? > ob jmd weiss, was der FPGA genau beim shiften macht? Ja, der wird wohl den Datenausgang eines FFs auf den Eingang des nächsten FFs legen und dann mal kräftig durchtakten. Wenn du allerdings mehrere Bits weit oder gar variabel shiften willst, dann wrid die Logik zwischen den FFs wein wenig aufwendiger/aufwändiger.
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.