DDFS von Lothar Miller ich steh aufm Schlauch

Gast #5147548
Lesenswert?

Hallo,
ich habe vor einigen Jahren mal basierend auf Lothar Miller's DDFS

http://lothar-miller.de/s9y/archives/37-DDFS-mit-BROM.html

eine DDFS mit 32Bit Breite erstellt.

Jetzt versuche ich das Modul erneut zu verwenden.
Es kommt leider aber kein Signal raus.....

zum Verständnis -->

CLK ist mein Eingangstakt
FREQ_INC ist ein Wert, mit dem ich die lut durchlaufe, also der Abstand
zwischen zwei benachbarten, auszugebenden Werten
BCK keine Ahnung warum das da ist?
DIN_CNT
DIN_CNT_MAX beides keine Ahnung
PHASE_INC damit kann das Signal in der Phase verschoben werden
DOUT generiertes Ausgangssignal

warum frag ich bloß DIN_CNT und BCK ab?
Angehängte Dateien:
Gast #5147755
Lesenswert?

Daniel F. schrieb:
> Es kommt leider aber kein Signal raus.....

In der Simulation? Oder bei der Implementierung?

Simuliere mal und schau, was an Dout ankommt und was überhaupt so mit 
der DDS passiert.

Daniel F. schrieb:
> DIN_CNT
> DIN_CNT_MAX beides keine Ahnung

Ich auch nicht. Dein Phasenakkumulator zählt nur weiter, wenn BCK=1 ist 
und Din_cnt=Din_cnt_max -1 . Beides sind Eingänge, d.h. für jede andere 
Kombination deiner Eingangswerte bleibt der Phasenakku stehen. 
Vielleicht wolltest du dir damit so was wie einen "Vorteiler" bauen. 
Glaube eher nicht, dass das sinnvoll ist. Aber in jedem Fall musst du 
die passenden Signale an diese Eingänge legen, wenn deine DDS was tun 
soll.
Beitrag #5147764 wurde von einem Moderator gelöscht.
Gast #5148476
Lesenswert?

Lothar M. schrieb:
> Das steht üblicherweise in den Kommentaren im Code. Aber wenn du die
> sowieso nicht brauchst, dann lösch die Zeilen doch raus.
>
> So wie ich das sehe, wirken alle diese Signale eine Art Enable, die die
> Signalerzeugung von anhalten können...

Stimmt ich hab das jetzt mal rausgelöscht....
BCK sollte wohl mal "Bit Clock" heißen....

bräuchte ich das dann nicht auch weiterhin?

also z.B. mit CLK arbeiten
und BCK als Clock Enable
Gast #5148543
Lesenswert?

Daniel F. schrieb:
> bräuchte ich das dann nicht auch weiterhin?
>
> also z.B. mit CLK arbeiten
> und BCK als Clock Enable

Wenn du ein Clock Enable brauchst (weil du die DDS zwischendurch 
anhalten oder "einfrieren" willst), dann kannst du das so machen.

Wenn du es nicht brauchst (bzw. nicht mehr weißt, wozu des früher mal zu 
brauchen glaubtest), dann kannst du es weglassen.
Gast #5155702
Lesenswert?

Hallo,

Vielen Dank noch einmal an alle, die mir hier bisher geholfen haben.
Nun stehe ich vor einem weiteren, (hoffentlich) kleinen Problem!
ich wollte die Sinustabelle neu berechnen oder besser gesagt : die 
"Viertel-Sinustabelle".

Im Vergleich zur ursprünglichen Tabelle aus "DDS.vhd" erhalte ich
andere Werte und mit diesen Werten erhalte ich ganz eklige
"Peaks" im erzeugten Signal.... vermutlich irgendwie ein Überlauf....
Ich nutze zur Erzeugung der Sinuswerte ein Script, das ich in "Octave"
ausführe (siehe Anhang).
Ich kann mir nicht so recht erklären, wie die ursprünglich generiert 
worden sind, die auch supi funktionieren... da hab ich wohl schlecht 
dokumentiert.
aber was könnte das Problem sein?
Ich wäre für Tipps sehr dankbar.

Viele Grüße

Daniel
Angehängte Dateien:
Gast #5155834
Lesenswert?

Daniel F. schrieb:
> Hmmh ich kann leider partout nichts finden, was dann die richtige
> Representation sein könnte?
> etwa 0xFFFFFFFF?

ok ich merke gerad, dass das mit der Ausgabe im fprintf  als hex also 
%x

nicht das ist, was ich will....... negative Werte können so nicht 
dargestellt werden blabla...... oh man das ist doch alles viel zu lange 
her ;)
#5155868
Lesenswert?

Ich habe mal vor ein paar Jahren in

< http://opencores.org/project,sincos >

eine Sinustabelle veröffentlicht, die komplett parametrisierbar
ist und vom VHDL-Compiler zur Compilationszeit ausgerechnet wird.
Man braucht nichts als die Bordmittel von ISE oder Modelsim.
Es wird geprüft, ob die Ergebnisse bitgenau sind, es wird
nur ein Quadrant gespeichert und ohne Mehraufwand an Speicher
gibt's auch den Cosinus dazu, was ganz praktisch ist wenn
man reale ADC-Werte komplex weiterverarbeiten will.
(Mischer in einem SDR)
Pipelineregister werden auch strategisch günstig eingebaut
für hohe Taktfrequenzen.

Es sind in den 7 Jahren noch keine Beschwerden gekommen, was
ich mal als gutes Zeichen nehme.

Das Testbett ist ein DDS.

Ob 32 Bit Y-Auflösung bei 10 Bit X-Auflösung sinnvoll sind
ist eine andere Sache.

Gruß, Gerhard
Gast #5161483
Lesenswert?

Das ist wie die ewige V0.99 bei einigen Programmen :-)
Das wird noch fast jeden Tag runtergeladen und die einzigen
Nachfragen waren, wie man den Modelsim auf ps-Zeitauflösung
einstellt, das aber öfter.

Von der un/signed-lib gibt's erweiterte Versionen, hab'
aber nicht den Antrieb, das nochmal zu testen und hochzuladen.
Es gibt neue VHDL-features die das tangieren, die habe ich aber
selber noch nicht benutzt.

Mein Interessengebiet ist zur Zeit eher Mikrowellensachen,
so mit rauscharmen Oszillatoren, S-Parametern, ps-scopes und TDR..

Gruß, Gerhard

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