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


von VeriBro (Gast)


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.

von Netter Mensch (Gast)


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?

von VeriBro (Gast)


Angehängte Dateien:

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?

von Peter (Gast)


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.

von VeriBro (Gast)


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.

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.