Forum: FPGA, VHDL & Co. Warum keine Division


von Marco M. (marco1987)


Lesenswert?

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

von Jan M. (mueschel)


Lesenswert?

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...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 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").

von Marco M. (marco1987)


Lesenswert?

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?

von Johannes S. (johanness)


Lesenswert?

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.

von Marco M. (marco1987)


Lesenswert?

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?

von Christian R. (supachris)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

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.

von Marco M. (marco1987)


Lesenswert?

> 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

von Johannes S. (johanness)


Lesenswert?

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?

von (prx) A. K. (prx)


Lesenswert?

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 ;-).

von Flic (Gast)


Lesenswert?

Nimm mal einen Zettel und rechne beide Varianten durch. Du wirst schnell 
erkennen, wo man mit weniger Schritten auskommt.

von Johannes S. (johanness)


Lesenswert?

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.

von (prx) A. K. (prx)


Lesenswert?

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.

von Martin K. (mkohler)


Lesenswert?

@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.

von Mirko (Gast)


Lesenswert?

>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.

von Marco M. (marco1987)


Lesenswert?

> 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?

von Frank (Gast)


Lesenswert?

>Also LUP CPLs usw?

RTFM. Wikipedia kann ein guter Einstieg sein.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> 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
Noch kein Account? Hier anmelden.