Lässt sich mit dem Altera Megawizzard irgendwie eine LUT für SIN/COS
oder ein Berechung dafür generieren? Xilinx hat sowas drin.
Gibt es das überhaupt ? gfs als käuflicher Core?
... oder muss ich mir ein ROM bauen und die Werte selber erzeugen?
hm, das wäre doch mal interessant, ob sich ein generischer VHDL-Code
dafür schreiben lässt, der vom Synthesetool in ein Block-RAM umgesetzt
wird.
Dann brauch ich mir auch kein Excel kaufen ;-)
>>30 Zeilen C-Code
3 Zeilen Matlab, zu C also 20dB einfacher !
c=cos(2*pi*(0:9999)/10000);
s=sin(2*pi*(0:9999)/10000);
save t.txt s c /ascii
File habe ich angehängt, das is unter GPL, have fun !
Cheers
Detlef
Jo, das ist sicherlich weniger Schreibarbeit, allerdings hätte ich keine
Lust 10000 Werte in einen BRAM per Hand zu schreiben. In meinen
zusätzlichen Zeilen ist gleich noch die Initialisierung für den BRAM
drin. Also nur einige wenige Copy&Paste anstatt 10000 x in Hex umwandlen
und jedesmal C&P ;)
Werde morgen mal den Code posten, falls das erwünscht ist. Hab ihn
gerade nicht zur Hand.
c=cos(2*pi*(0:999)/1000);
sprintf('%i, \n', round(c*255))
...und das dann einfach in die Arrayinitialisierung reinkopieren.
Es hat schon einen Sinn warum Skriptsprachen wie Matlab erfunden wurden.
@ Detlef _a (detlef_a)
>3 Zeilen Matlab, zu C also 20dB einfacher !>c=cos(2*pi*(0:9999)/10000);>s=sin(2*pi*(0:9999)/10000);>save t.txt s c /ascii>File habe ich angehängt, das is unter GPL, have fun !
Vollkommen unbrauchbar! So ne Tabelle hat a) Integerwerte und b) braucht
man noch das VHDL-Konstrukt.
Also nachbessern!
MFg
Falk
Den Megawizzard kenne ich, doch der macht nicht, was er soll. Er
generiert entweder dynamishc über Algorithmik oder produziert gewaltigen
Registerverbrauch. Die Funktion ist oversized für meine Ansprüche.
Ich habe Excelgenommen, was jederzeit leicht modifizierbar ist.
Hallo,
habe einen FIR Filter in Verliog implementiert und bin nun dabei diesen
zu testen. Wie würde ich den eine Sinus LUT erzeuegn mit einem 8bit
Amplitudenbereich von +1...-1.
Also das MSB representiert das Vorzeichen und die restlichen bits
stellen den Nachkomma anteil der Zahl dar. Nachdem ich mit Excel
gescheitert bin, versuch ich das gerade mit Matlab, bekomme es aber
irgendwie auch nicht auf die Reihe. Ein Lösungsvorschlag mit Excel wäre
spitze.
Gruss,
Jonas
Hey super,
das haut schin fast hin. Habe mir eine Tabelle wie Christian oben
beschrieben hat erzeugt. Das Problem was ich nun habe ist die Wandlung
der vorzeichenbehafteten Ganzzahl in ein Binärwort. Mit
dezinbin(Zelle,8) hauts hin mit positiven Zahlen. Negative besitzen
insgesamt 10Stellen und liegen im 2'S complement vor. Hat hier jemand
einen Kniff auf Lager wie ich diese Geschichte vereinheitlichen könnte.
Benötige zuviel Werte, da macht die perHandUmrechnung des
Zweierkomplements für die einzelnen Werte nicht soviel Spass. Würde
gerne direkt die Werte zur Initialiserung eines 8bit breiten FPGA onchip
Speichers nutzen.
Danke und Gruss,
Jonas
Hallo,
ich habe mich nochmal in Matlab probiert und bin nun auch zu einem
Ergebnis gekommen.
Sollte die Fixed-Point Toolbox vorhanden sein geht es so recht nett:
Ein Sinussignal im Q1,7 Format:
a=fi(sin(2*pi*(0:100)'*0.05),true,8,7);
a.bin
Danke für dein Post Igor; schaue mir gleich auch nochmal deinen Code an.
Gruss,
Jonas
Das Q1,7 Format beschreibt eine sogenannte signed fractional fixed-point
zahl.
Hierbei handelt es sich um eine 8bit Zahl mit einem Ganzzahlanteil von 1
und sieben Nachkommastellen.
S | . | X | X | X | X | X | X | X |
-1 | . |0.5| 0.25 | ... | ...| ...| ...| ...|
Der abgedeckte Zahlenbereich erstreckt sich somit von -1 bis (1- 1/128).
P.S Hat jemand schon mal einen FFT core in signed fractional
implementiert ?
So etwas möchte ich mal als nächstes angehen. Der core sollte recht
einfach gehalten werden: 8point, radix-2, kein inplace.
Über allgemeine Hinweise zum Vorgehen (overflow-Problematik,
Zahlenbereichsauslegung etc.)
bin ich dankbar. Schönes WE,
Jonas