Generation einer SIN-COS LUT unter Altera Megawizzard

Gast #700702
Lesenswert?

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.
Gast #700839
Lesenswert?

Nun falls dich überhaupt nichts erschickt, dann kannst du das auch mit 
der eingebauten TCL-Shell probieren:

1
for {set i 0} {$i <= 90} {incr i} {puts [format "%X" [expr {int(sin($i/90.*acos(0))*255)}]]}

Zu finden unter View->Utility Windows->TCL Console.
#701068
Lesenswert?

@ 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
Gast #701317
Lesenswert?

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.
Gast #701629
Lesenswert?

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
Gast #701831
Lesenswert?

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
Gast #703296
Lesenswert?

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
Gast #703901
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren