mikrocontroller.net

Forum: FPGA, VHDL & Co. NCO im FPGA realisieren


Autor: Stanko T. (newie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)!

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
The AD9832 is a numerically controlled oscillator employing a phase 
accumulator, a sine look-up table and a 10-bit D/A converter integrated 
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...

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  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

Autor: Antti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
300MHz geht schon, trick ist:
man benutzt 150mhz, kalkuliert 2 worte pro clock
und DDR I/O flop :)

Antti

Autor: Antti (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: commtel (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hhmm hab da was gefunden siehe anhang
seite 163

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Max: parallel x+1 und x+2 berechnen?

Autor: Max (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: Commtel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: weltbester FPGA-Pongo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Uwe Bonnes (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Z.b.OSERDES bei neueren Bausteinen

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: commtel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  Max

gibt es bei dir was neues?
wie weit bist du?

mfg
commtel

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.