Gast
#1388674
Liebe Kollegen! Gibt es einen Logarithmus in VHDL oder muss ich eine function basteln? LG Midnight
|
Anzeige
|
Logarithmus in VHDL
Gast
#1388674
Liebe Kollegen! Gibt es einen Logarithmus in VHDL oder muss ich eine function basteln? LG Midnight
Gast
#1388679
Ich würde es bei http://www.gidf.de/ versuchen. Da gibt es eigentlich immer etwas.
Gast
#1388691
Tolle Hilfe, danke. Nein da habe ich nichts brauchbares gefunden.
Gast
#1388698
was für einen log brauchst du? google findet da sehrwohl was... beispielsweise für den log2 hier direkt im forum: Beitrag "log2 in VHDL auf integer?"
Gast
#1388709
Die kurze Antwort ohne viele Belehrungen ist also: Nein, mußt selber basteln. Danke, jetzt kenn ich mich aus. LG Midnight
Gast
#1388738
Das Package math_real bietet Logarithmus-Funktionen an. Ist aber nicht synthesierbar.
Gast
#1388835
Ja, leider. Werde ein kleines Unterprogramm (function) entwickeln, das die Funktion ausrechnet. Das kann ich dann immer wenn ich es brauche einbinden.
Gast
#1388968
Entweder so oder du generierst dir ein Look-up-Table mit den Werten. Halt das übliche Dilemma: Chipfläche <-> Geschwindigkeit
Gast
#1389218
Leider hast du nicht beschrieben, welches Zahlenformat du verwendest. Laß mal ein paar deiner Randbedingungen rüberwachsen.
Gast
#1389814
Ich rechne mit std_logic Matrizen. Für den letzten Schritt werden daraus integer Matrizen und die werden mit einer Formel (unter anderem LOG) umgerechnet und schließlich über die RS232 ausgegeben. Mein Problem hat sich aber inzwischen gelöst. Ich habe ein Package für die Rechenoperationen erstellt und werde die Zahlen in Real konvertieren (sonst wirds zu ungenau). LG Midnight Hab mal im "Mayer-Baese" ISBN 3540211195 nachgeschaut: die einzige Stelle zur log-Berechnung ist der Cordic-Algorithmus, auf dem Umweg über ln(W)=2*arctanh(Y/X) mit Y=W-1 und X=W+1
Gast
#1391473
DANKE für´s nachsehen. Wenn ich alles richtig gemacht habe sollte der Log funktionieren. Das Buch sieht gut aus, ich glaube ich will mir das kaufen.
Gast
#1391488
>Wenn ich alles richtig gemacht habe sollte der Log funktionieren. Könntest du mal deinen Log hier posten, würde mich sehr interressieren wie dein VHDL-Code aussieht! es gibt eine Neuauflage von 2007 (die Nummer war von 2004), erweitert - ich habe eine FFT mit NIOS gesehen - ISBN 3540726128 man kann bei Amazon und books.google.com drin blättern Vlt hilft meine Variante der Logarithmus ... Und das ROM dazu ... So ähnlich mache ich es auch, wobei ich mir die Zeilen automatisch generieren lasse. Je nach Realisation kann man das in ein Ein-Clock-Modul pressen. Beispiel fuer Teiler (127/127): Beitrag "Re: Durch 10 teilen"
Gast
#5616914
Christoph db1uq K. schrieb: > Hab mal im "Mayer-Baese" ISBN 3540211195 nachgeschaut: die einzige > Stelle zur log-Berechnung ist der Cordic-Algorithmus, auf dem Umweg über > ln(W)=2*arctanh(Y/X) mit Y=W-1 und X=W+1 Hallo, ich suche ein Implementation für pipeline. Cordic habe ich geschaut, ist aber zu kompliziert und ungenau. Ich brauche Log (n) in Ganzzahl nur für Werte bis (65536*65536-1). Knn diese Algorithmus umgeschrieben werden? Thomas P. schrieb: > Vlt hilft meine Variante der Logarithmus ... Wie kann das erreicht werden? Danke
Gast
#5618988
Morten schrieb: > Cordic habe ich geschaut, ist aber zu kompliziert und ungenau. Ungenau? Das ist doch nur eine Frage der Bitbreiten und der Zahl der Iterationen... Das hier hattest Du schon gefunden?!: Beitrag "Re: CORDIC in VHDL" Und das hier dürfte sich auch relativ brauchbar in VHDL umsetzen lassen: Beitrag "Re: Code für Logarithmus gesucht" Duke Oder händisch: Beitrag "Rechnen mit Logarithmustabellen?"
Gast
#6409401
Ich nehme das Beispiel von oben aus der WIKIPEDIA und habe dazu eine Frage: https://de.wikipedia.org/wiki/Logarithmus Der Algo ist so definiert:
Wie kann ich eine binäre Zahl, die z.B. 16 Bit hat hier verwenden - im Bezug auf "X zwischen 1 und 2" bringen? Meine INT-Zahl hat 16 Vorkommastellen und 16 Nachkommastellen, also etwa so: 33333.32768, was 33333.5 sind. Rechenphreak schrieb: > Meine INT-Zahl hat 16 Vorkommastellen und 16 Nachkommastellen, also etwa > so: > 33333.32768, was 33333.5 sind. Kannst du diese Herleitung noch mal ein wenig ausführlicher darstellen? Welche Zeichenkombination hat da welche Basis und welches Zeichen an welcher Stelle welche Wertigkeit? > Meine INT-Zahl hat 16 Vorkommastellen und 16 Nachkommastellen Integerzahlen haben eigentlich prinzipiell keine Nachkommastellen. > Meine INT-Zahl hat 16 Vorkommastellen und 16 Nachkommastellen Wenn es eine vorzeichenbehaftete Festkommazahl ist, dann passen schon die 33333 nicht in die 16 zur Verfügung stehenden Vorkommastellen. Wenn deine Zahl unsigned ist, dann solltest du das sagen. > Meine INT-Zahl hat 16 Vorkommastellen und 16 Nachkommastellen Dann hat sie insgesamt 32 Stellen und wegen des Kommas in der Mitte einen Wertebereich von -2147483648/65536 bis +2147483647/65536. Das erste Bit links vom Komma hat die Wertigkeit 1. Des erste Bit rechts vom Komma hat die Wertigkeit 0,5. Prinzipiell solltest du dir also vorrangig nochmal die binäre Darstellung einer Festpunktzahl. Im Grunde ist das nur eine Integerzahl, bei der man sich an einer bestimmten Stelle ein Komma "hindenkt" und deshalb den Integerwert durch eine bestimmte Zweierpotenz (bei dir 2^16 wegen der 16 Nachkommastellen) teilen muss. Rechenphreak schrieb: > Wie kann ich eine binäre Zahl, die z.B. 16 Bit hat hier verwenden - im > Bezug auf "X zwischen 1 und 2" bringen? Das steht im Grunde im Text deines Links: du suchst das MSB und schiebst dann die Zahl soweit nach rechts, bis du diese Bedingung erfüllst. Lothar M. schrieb: >> Meine INT-Zahl hat 16 Vorkommastellen und 16 Nachkommastellen > Integerzahlen haben eigentlich prinzipiell keine Nachkommastellen. Wahrscheinlich sind binäre Zahlen mit verschobenem Komma gemeint. Für die gilt aber grundsätzlich das Gleiche. Es steckt ja nur ein Faktor drin. Aufpassen muss man freilich bei der anschließenden Interpretation des Ergebnisses: Bei einer Wurzel ist das Ergebnis nur noch halb so "lang" wie der reingesteckte Wert, also YYYY.XXXX -> ZZ.KK. Bei dem Beispiel des LOG steckt dann gemäss LOG (A x K) ein Faktor LOG K im Ergebnis, der als Offset auftaucht. Schlauerweise wird man dann um eine Zahl erweitern, die so groß ist, dass die sich ergebende Auflösung in Bits bei der kleinsten Zahl noch groß genug ist, also EXP(k,2)+n. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|