Hallo VHDL Profi's, ich benötige für eine32 Bit Division eine Genauigkeit von 3 Nachkommastellen. Empfiehlt es sich dann ein Fixed Point Divider zu nehmen? (Anzahl der Nachkommastellen soll immer gleich bleiben, evtl. auch nur zwei)
Tom schrieb: > ich benötige für eine32 Bit Division eine Genauigkeit von 3 > Nachkommastellen. Das eine hat mit dem anderen erstmal nicht soo viel zu tun. > Empfiehlt es sich dann ein Fixed Point Divider zu > nehmen? (Anzahl der Nachkommastellen soll immer gleich bleiben, evtl. > auch nur zwei) Welcher Alternativen kennst Du denn noch? Duke
Duke Scarring schrieb: > Welcher Alternativen kennst Du denn noch? Beispielsweise den Floating Point Divider. Wenn ich einen "einfachen" Radix-2 Dividierer nehme, den man hier im Forum des öfteren findet, wie realisiert man die Nachkommastellen anhand des Restes? Muss ich dazu den Divdenden "aufblähen", beispielsweise um 3 Stellen, damit ein größerer Quotient heraus kommt und ich die 3 dazugekommenden Reststellen dann als Nachkommawerte betrachten kann? Also beispielsweise so:
1 | 47 / 8 = 5,875 |
2 | 47000 / 8 = 5875 |
So würde ich dann alles nach der 5 als Nachkommastelle betrachten. Aber lässt sich das auch im Binären so umsetzen?
> Aber lässt sich das auch im Binären so umsetzen?
Klar du mußt halt das komma auf eine 2er Potenz festlegen und nicht auf
eine 10er Potenz.
Also Dezimal : 100er 10er 1er , 10tel 100tel 1000tel 10000tel
Binär : 4er 2er 1er , halbe 4tel 8tel 16tel
Da würden sich natürlich 1024 also 10Bit Nachkommastellen anbieten. dann bleiben dir 22 Bit vor dem Komma also ca. 4000000.
Uwe schrieb: > Da würden sich natürlich 1024 also 10Bit Nachkommastellen anbieten. dann > bleiben dir 22 Bit vor dem Komma also ca. 4000000. Und genau da entsteht mein Problem. Meine Werte, bzw. mein Dividend kann die 32 Bit unter bestimmten Voraussetzungen ausnutzen. Mein Xilinx FPGA unterstützt aber nicht die IP Cores für die 64 Bit Division. Und einen geeigneten Divisionsalgorithmus habe ich nicht für 64 Bit gefunden. Das würde also bedeuten, dass meine maximale Wertigkeit des Dividenden auf 22 Bit schrumpfen (wenn ich also 3 Nachkommastellen bedenke) oder ich selbst einen 64 Bit Divider schreiben müsste?
Tom schrieb: > Wenn ich einen "einfachen" Radix-2 Dividierer nehme, den man hier im > > Forum des öfteren findet, wie realisiert man die Nachkommastellen anhand > > des Restes? Indem Du vor der Division den Ausgangswert um einige Stellen schiebst.
Das würde bedeuten, dass für 2 Nachkommastellen dann 7 Bit (128) ausreichen würden? (da ich max die 99 Darstellen möchte?) Wie würde das Ganze in diesem Falle aussehen?
1 | 47 / 8 = 5,87 |
2 | 4700 / 8 = 587 |
3 | |
4 | 101111 : 1000 = 101 Rest 111 |
5 | 47 : 8 = 5 Resr 7 |
6 | |
7 | |
8 | 4700 : 8 = 587 Rest 4 |
9 | 1001001011100 : 1000 = 1001001011 Rest 100 |
Jedoch gehe ich bei diesem Vorgehen in den Dezimalbereich über, um dann wieder in den binären zu wechseln. Das kommt mir irgendwie nicht richtig vor. Zumal ich hier auch nichts verschiebe. Und wie ich die 5 von der ,87 trennen würde, weiß ich auch nicht. Ein anderer Ansatz wäre vielleicht, dass ich 7 Nullen an die 101111 hänge und damit rechne. Jedoch kommt dabei auch ein anderer Wert raus. Hach, was können banale Dinge verwirrend sein.
Ich schreib das mal etwas um: Tom schrieb: > 101111 : 1000 = 101 Rest 111 > 47 : 8 = 5 Resr 7 47 : 8 = 5 + 7/8 101111 : 1000 = 101,111 > 4700 : 8 = 587 Rest 4 > 1001001011100 : 1000 = 1001001011 Rest 100 4700 : 8 = 587 + 4/8 100100101_1100 : 1000 = 1001001011,100 > Jedoch gehe ich bei diesem Vorgehen in den Dezimalbereich über, um dann > wieder in den binären zu wechseln. Das kommt mir irgendwie nicht richtig > vor. Zumal ich hier auch nichts verschiebe. Fällt Dir was auf? Duke
Das die Vorkommastelle die ganzzahligen Vielfache des Divisors und die Nachkommastelle das nicht ganzzahlige Verhältnis zwischen Rest und Divisor beschreibt. Duke Scarring schrieb: > Fällt Dir was auf? Durch den Rest und dem Wissen, wie groß der Divisor ist, habe ich bereits meine gewünschte Nachkommastellenwertigkeit und brauche keine zusätzlichen Genauigkeitsbits? Bzw. man betrachet Ganzzahligen und Nichtganzzahligen Faktor seperat.
Tom schrieb: > Das die Vorkommastelle die ganzzahligen Vielfache des Divisors und die > Nachkommastelle das nicht ganzzahlige Verhältnis zwischen Rest und > Divisor beschreibt. So könnte man es sagen. Tom schrieb: > Das würde bedeuten, dass für 2 Nachkommastellen dann 7 Bit (128) > ausreichen würden? (da ich max die 99 Darstellen möchte?) Ja. Aber: Du solltest die Nachkommastellen nicht in xx/100stel sondern in xx/128stel einteilen. Nur damit wird die Rechnung einfach. Duke
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.