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.
@ 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
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.
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
@ 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
Der FPGA.eil ist simpel: Man muss nur ein RAM haben und einen Zähler und gfs einen programmierbaren AA Filter.
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?
> 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.
Das heisst, man kann mit DDS eigentlich nur Frequenzen deutlich kleiner der Taktfrequenz direkt erzeugen. (?)
@ 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
> 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.
@ Projektleiter welchen FPGA hast du benutzt? Wäre es möglich das du deine Sourcen hier zu verfügung stellst? c.u Commtel
>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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.