Hallo zusammen, habe folgendes Problem: Möchte einen NCO (Numeric Controled Oscillator) wie den AD9832 im Spartan 3A nachbilden. D.h. Durch Laden eines Datenwortes ändert sich die Ausgangsfrequenz des Oszillators. Ideal wäre ein DCM mit variabler Ausgangsfrequenz! Finde im Core Generator nix dass diese Funktion abbilden könnte. Ein Zähler würde prinzipiell auch gehen, aber die Auflösung (Delta f) ist nicht zufriedenstellend (auch wenn der FPGA intern mit 300 MHz läuft)!
1 | The AD9832 is a numerically controlled oscillator employing a phase |
2 | accumulator, a sine look-up table and a 10-bit D/A converter integrated |
3 | on a single CMOS chip. |
Such mal nach DDS, DDFS und/oder schau dort nach: http://www.lothar-miller.de/s9y/categories/31-DDFS > Ideal wäre ein DCM mit variabler Ausgangsfrequenz! Damit geht das nicht...
@ Stanko T. (newie) >Möchte einen NCO (Numeric Controled Oscillator) wie den AD9832 im >Spartan 3A nachbilden. Dann tu das doch einfach. >Ideal wäre ein DCM mit variabler Ausgangsfrequenz! Geht nicht. >Ein Zähler würde prinzipiell auch gehen, aber die Auflösung (Delta f) >ist nicht zufriedenstellend (auch wenn der FPGA intern mit 300 MHz >läuft)! Kaum. Eine DDS mit 300 MHz und 24 Bit Phasenakku hat 17,8 Hz Auflösung. Mit 32 Bit Phasenakku sind es 0,07 Hz Auflösung, allerdings muss man dann schon etwas tricksen, um den bei 300 MHz laufen lassen zu können. MFg Falk
300MHz geht schon, trick ist: man benutzt 150mhz, kalkuliert 2 worte pro clock und DDR I/O flop :) Antti
http://groups.google.com/group/antti-brain/files?hl=en bitte ISSUE JUNE und JULY lesen! da ist ein project das NCO/DDS auf dem Spartan-3A platine benutzt es lauft mit nur 210MHz, ich hatte es for die DDS frequenz auf 640MHz hoch zu pumpen, habe aber noch nicht gemacht aber moglich ist es, muss man 4 sample pro clock rechnen, dann upconvert to 320mhz, und dann mit DDR I/O raus mit "virtuellen" DDS update rate von 640MHz viel spass fur alle, FPGA's sind es:) Antti
Hallo Antti, >300MHz geht schon, trick ist: >man benutzt 150mhz, kalkuliert 2 worte pro clock >und DDR I/O flop :) könntest du das bitte näher erläutern? Wenn du beim Kalkulieren (Addition im Phasenakku) durch die 150Mhz begrenzt bist, dann kannst du doch nicht durch DDR I/O schneller werden. Man kan doch nur das ausführen, was man zuvor gerechnet hat, oder? Wegen zwei Flanken wird der Addierer nicht schneller rechnen können. Danke, Max
>hhmm hab da was gefunden siehe anhang >seite 163 Besten Dank commtel! Genau das habe ich gebraucht! >@Max: parallel x+1 und x+2 berechnen? Ja, gerechnet. Meiner ansicht nach, X+1 und X+2 das ist das maximum, was man dabei rausholen kann(?). X+1 brauch seine Zeit, und die kann man doch nicht verkürzen (?). Danke, Commtel Danke Gast.
jo bitte ich sitz vor dem gleichen problem nur leider hab ich keine zeit für mein spartan3a board. Ich hoffe du kommst schneller vorwärts als ich ud postet deine source c.u commtel
aber dadurch musst kannst du im nächsten schritt mit x+2+1 und x+2+2 weitermachen, und das DDR (DoubleDataRate)-Interface kann halt in einem deiner Berechnungsschritte beide Werte ausgeben
Das kann man doch beliebig ausbauen,indem man nicht nur den Speicher verdoppelt sondern auch die Kanäle. Man muss eben 8 Kanäle mit 300 MHz treiben, diese 1/8 clocks versetzung und 8 AD-Wandler nutzen, deren Ausgang addiert wird.
@weltbester FPGA-Pongo: > 8 AD-Wandler nutzen, deren Ausgang addiert wird. Dann brauchst Du aber auch D/A-Wandler, deren Genauigkeit bei 1/8 Bit liegt. Dazu schaut man sich im Datenblatt die Angaben zu INL und DNL an. Wenn Du einen passenden Wandler gefunden hast, kannst Du ja mal den Link hier posten. Duke
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.