mikrocontroller.net

Forum: FPGA, VHDL & Co. Warum keine Division


Autor: Marco M. (marco1987)
Datum:

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

Autor: Jan M. (mueschel)
Datum:

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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

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

Autor: Marco M. (marco1987)
Datum:

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

Autor: Johannes Slotta (johanness)
Datum:

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

Autor: Marco M. (marco1987)
Datum:

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

Autor: Christian R. (supachris)
Datum:

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

Autor: A. K. (prx)
Datum:

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

Autor: Marco M. (marco1987)
Datum:

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

Autor: Johannes Slotta (johanness)
Datum:

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

Autor: A. K. (prx)
Datum:

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

Autor: Flic (Gast)
Datum:

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

Autor: Johannes Slotta (johanness)
Datum:

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

Autor: A. K. (prx)
Datum:

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

Autor: Martin Kohler (mkohler)
Datum:

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

Autor: Mirko (Gast)
Datum:

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

Autor: Marco M. (marco1987)
Datum:

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

Autor: Frank (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Also LUP CPLs usw?

RTFM. Wikipedia kann ein guter Einstieg sein.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

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

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]
  • [vhdl]VHDL-Code[/vhdl]
  • [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.