Forum: FPGA, VHDL & Co. FPGA+DDS Anfänger benötigt Starthilfe


von commtel (Gast)


Lesenswert?

Hallo Leute

Ich möchte mein Funtionsgenerator weiter bauen,dabei dachte ich
an ein 14 bit D/A Wandler + Ram(internes oder externes) und ein FPGA.

Der FPGA wird z.b von einem ATmega gesteuert was für eine Signalart und
und welche Frequenz er ausgeben soll.
Die Größenordnung liegt vom wenigen Hz bis so um die 1Mhz.
Mehr wäre auch nicht schlecht.

Warum kein AD von Analog?
Weil ich Sägezahn,Sinus,Rechteck,Dreieck,FM,FSK und andere Formen 
implementieren möchte.

Was für ein FPGA würdet ihr mir vorschlagen?
Hoffe hab genug infos gegeben.

von Falk B. (falk)


Lesenswert?

@  commtel (Gast)

>Ich möchte mein Funtionsgenerator weiter bauen,dabei dachte ich
>an ein 14 bit D/A Wandler + Ram(internes oder externes) und ein FPGA.

Naja, 14 Bit ist schon recht luxeriös. Aber machbar.

>Die Größenordnung liegt vom wenigen Hz bis so um die 1Mhz.
>Mehr wäre auch nicht schlecht.

Hmmm.

>Warum kein AD von Analog?

Du meinst wohl DDS?

>Was für ein FPGA würdet ihr mir vorschlagen?

Jeder aktuelle Typ ist verwendbar. Ob nun Spartan3, Cyclone oder 
wasauchimmer ist egal. GGf. passt das sogar in einen grösseren CPLD.

MFG
Falk

von commtel (Gast)


Lesenswert?

Hallo Falk

>Du meinst wohl DDS?

Ja von Analog.com die AD typen die fast alles drin haben.
Nette kleine Kisten nur eben müste die LUT ein Ram sein und ich hätte 
was ich wollte.

Ich google schon seit Freitag aber der zündente Funke will einfach nicht 
kommen.

Wer sonst noch paar Hinweise hat bitte melden.

von Michael (Gast)


Lesenswert?

Ich dachte ich hätte mal einen mit RAM von ADI gesehen, aber den finde 
ich nicht mehr.

Versuch es lieber mit einem DA-Wandler. Mit einem FPGA kannst Du schnell 
an die 200MHz schaffen. Wichtig ist vermutlich eine DC-Kopplung deines 
Ausgangs. Du möchtest bestimmt auch sehr langsame Signale (< 1kHz) 
erzeugen :).

Allerdings kann es sein, dass Du etwas Rechnepower benötigen wirst. 
Sofern die maximale Frequenz deines synthetisierten Signals klein 
(mindestens Faktor 10) gegenüber der Abtastfrequenz ist wirst Du den 
si(x)- Abfall nicht wirklich bemerken. Die typischen DDS-Chips geben ja 
immer nur ein Sinussignal einer Frequenz aus und kompensieren den Effekt 
durch einen Multiplikator der Ausgangsamplitude (1/si(x)) per 
Lookuptabelle.
Sofern Du aber z.B. ein Rechtecksignal erzeugst werden die einzelnen 
Frequenzkomponenten durch das tiefpassartige Verhalten des DAC verzerrt.
Du könntest aber eine vorverzerrte Signalfolge in deinen RAM legen -> 
dafür die Rechenleistung.

Gruß
Michael

von commtel (Gast)


Lesenswert?

@  Michael
vielen Dank für dein Hinweis.Dieses Problem kannte ich noch nicht
war wohl zu langsam mit meinem ATmega und DAC08

Ich dachte mehr an einem Signalgenerator den ich bauen will.
Im Ram wollte ich die komplexen Signalkurven ablegen.

Der ATmega48 hat einfach zu wenig rechenpower und bis vor einem Jahr
wust ich noch gar nicht wie man das Ding in Assembler progt.

Viel Erfahrung hab ich noch nicht in FPGA proggen.
Mir ist auch klar das das kein Wochenend Projekt ist.
Ich such zur Zeit eine Seite wo ich bei null Anfangen kann z.b LED 
blinken

Darum nochmals meine Bitte um ein wenig ünterstützung.
Vieleicht melden sich auch Leute die schon sowas gebaut haben
und ein paar Tips posten so wie Michael.

c.u
Commtel

von Neuingenieur (Gast)


Lesenswert?

Der FPGA.eil ist simpel: Man muss nur ein RAM haben und einen Zähler und 
gfs einen programmierbaren AA Filter.

von Gerdo (Gast)


Lesenswert?

Wie weit kann man mit der Frequuenz des DDS-Taktes gehen?
Die Ausgangsfrequenz ist doch dann immer nur 1/n wenn man n Zeilen in 
der Tabelle hat. Mit einem FPGA auf 50MHz und einer Tabelle von 1024 
Werten hätte man gerade 50kHz, oder?

Wie hoch kommt man mit einem DDS?

Wie Sinusförmig ist das dann noch, wenn man mit der halben Taktfrequenz 
rausgeht?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> Wie Sinusförmig ist das dann noch, wenn man mit der halben Taktfrequenz
> rausgeht?
Geht nicht. Da wird das Abtasttheorem verletzt  :-o

Es ist einfach so: du hast eine Ausgabefrequenz, die in deinem Signal 
auftaucht. Diese Ausgabefrequenz ist störend und muß rausgefiltert 
werden. Je höher du mit der Signalfrequenz gehst, umso geringer wird der 
Abstand zwischen der Ausgabefrequenz und deiner Signalfrequenz. Und umso 
steilflankiger (=aufwendiger) muß dein Filter sein.

von Gerdo (Gast)


Lesenswert?

Das heisst, man kann mit DDS eigentlich nur Frequenzen deutlich kleiner 
der Taktfrequenz direkt erzeugen. (?)

von commtel (Gast)


Lesenswert?

@ Gerdo

nein eigentlich Sinus=FPGA Takt/2 um den Abtasttheorem nicht zu 
verletzen.

Ich arbeite mich zur Zeit in VHDL ein.
Wird aber noch ein weilchen dauern bis ich ergebnisse liefern kann 
Schaltpläne usw.

Viele grüße aus Bosnien wo ich zur zeit urlaub mache

c.u
commtel

von Projektleiter (Gast)


Lesenswert?

> eigentlich Sinus=FPGA Takt/2 um den Abtasttheorem nicht zu
> verletzen.

Das bringt aber erhebliche Schwebungen. Real sollte man wenigstens mal 
einen Faktor 3-4 Überabtasten, wenn man sich nicht am Filter aufhängen 
will. Bei einem einfach Filter mit 24db spendiert man 40% für die 
Grenzfrequenz und 10x oversampling.

Aus einem 300 MHz Takt im FPGA kriegt man so wirklich gute 20MHz raus.

von commtel (Gast)


Lesenswert?

@  Projektleiter

welchen FPGA hast du benutzt?
Wäre es möglich das du deine Sourcen hier zu verfügung stellst?

c.u
Commtel

von icke (Gast)


Lesenswert?

>Aus einem 300 MHz Takt im FPGA kriegt man so wirklich gute 20MHz raus.
Hö, das ist doch jetzt zu pauschal. Kommt drauf a, wie man es 
realisiert. Ich bin der Meinung, dass bei 300Mhz viel mehr drin wäre.

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
Noch kein Account? Hier anmelden.