www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Sinus-Generator von FPGA an DAC analog umwandeln


Autor: VeriBro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe auf einem ML505-Board von Xilinx testhalber mal einen 
Sinus-Generator in Verilog erzeugt, der mein Signal aus dem FPGA analog 
umwandeln soll. Als DAC verwende ich einen DAC5686 von TI.
Das ist ein zweikanaliger 16-Bit DAC, bei dem ich umgewandelt auf dem 
einen Kanal einen Sinus und auf dem anderen einen Cosinus erwarte.
Nun ist das aber so, dass ich aus beiden Kanälen ein und das selbe 
Signal bekomme, obwohl ich (schon gemessen) andere Zahlenwerte an den 
Biteingängen habe. In der Simulation hat es eigentlich soweit gepasst 
und auch am Eingang des DAC messe ich die richtigen Werte.
D.h. ich müsste den DAC nun auch so einstellen, dass er mir beide 
Signale die ich haben möchte auch richtig, also um 90° phasenverschoben, 
liefert. Habe schon alle erdenklichen Einstellungen probiert: 
2-Komplement ist eingestellt, DAC Coarse Gain auf Maximum usw. ich 
hoffe, dass mir jemand bei diesem Problem helfen kann.

Autor: Netter Mensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entweder hast Du einen Fehler in Deinem Code oder Du misst halt Mist!

Oh man! Denk mal darüber nach: Wie soll jemand aus Deinen 933 Anschlägen 
umfassenden Gefasel schlau werden?

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

Bewertung
0 lesenswert
nicht lesenswert
hmm okay - dann halt in der Praxis:

- folgender Code:
module sin_gen(clk, reset, sin, cos, send_clk);
  //Variablen
   input clk, reset;
   output[15:0] sin, cos;
   output send_clk;
  reg[15:0] sin_r, cos_r;

  //Berechnung
  assign      send_clk = clk;
   assign      sin = sin_r + {cos_r[15], cos_r[15], cos_r[15], 
cos_r[15], cos_r[15], cos_r[15], cos_r[15], cos_r[15], cos_r[15:8]};
   assign      cos = cos_r - {sin[15], sin[15], sin[15], sin[15], 
sin[15], sin[15], sin[15], sin[15], sin[15:8]};


   always@(posedge clk or negedge reset)
     begin
         if (!reset) begin
             sin_r <= 0;
             cos_r <= 32752;
         end else begin
                 sin_r <= sin;
                 cos_r <= cos;
             end
     end
endmodule

- folgendes Simulationsergebnis:
Sinus: 1 ....32755 32756 32755 ... 1 0 -1 ... -32755 -32756 -32755 ... 
-1 0 1 ...

Cosinus: 32755 ... 1 0 -1 ... -32755 -32756 -32755 ... -1 0 1 ...

- folgendes real analog moduliertes Ergebnis:
siehe Bild im Anhang


Kann mir jemand verraten wie ich den Hilbert-Transformator im DAC 
abschalten kann bzw. Dual-DAC-Einstellungen vornehmen kann ohne, dass 
diese sich am Ausgang miteinander addieren bzw. der eine auf den anderen 
multipliziert wird?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kann nur dein DAC Hersteller, würde sich sagen,

Aber was anderes: Mir scheint der Code so, als ob du beides tust: Cosinu 
nehmen und 90 Grad verschieben, sodaß sich das wieder aufhebt.

Autor: VeriBro (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, aber nö - Code hat gepasst!
Das Problem lag wirklich am DAC... auf dem Board waren vier 
0-Ohm-Widerstände, die NC sein hätten sollen, mit denen beide 
DAC-Ausgänge auf +3,3V kurzgeschlossen wurden, nachdem ich die 
rausgenommen habe war die Phasenverschiebung schön sichtbar.

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.