Probleme mit AD/DA-Wandler

OP #2667794
Lesenswert?

Hallo,

ich habe folgendes Problem: Ich möchte mit dem Digilent Genesys FPGA 
Evalboard und den zugehörigen PMods ADC / DAC2 ein einfaches Testsystem 
aufbauen, bei dem ich ein mit einem Signalgenerator erzeugten Signal 
digitalisiere und anschließend wieder in ein analoges verwandle.
Die Ansteuerung der Wandler funktioniert soweit auch und DC bis kleine 
Frequenzen werden auch korrekt gewandelt, jedoch wird die Signalqualität 
bei höheren Frequenzen (+5kHz) immer schlechter (am DA-Wandler ist zwar 
weiterhin ein Sinus zu erkennen, jedoch mit zunehmender Frequenz immer 
weiter "verrauscht").
Noch ein paar weitere Informationen : die Wandler werden über einen 
Clockbuffer mit einem Takt von 20MHz(aus einer DCM) getrieben. Die 
Timings sehen in der Simulation soweit gut aus (ich setze die Signale 
immer bei steigender Taktflanke, Auswertung findet bei fallender TF 
statt -> somit halte ich die Setup-/Holdzeiten auf jedenfall ein).

Ich habe in den letzten Tagen schon sehr viele Versuche unternommen, das 
Problem in den Griff zu bekommen, hier eine kurze Zusammenfassung:

- Spannungsversorgung sowohl vom Evalboard als auch von den Wandlern 
outgesourced, d.h. mit einem externen Netzteil betrieben
- Auf dem Evalboard ist neben dem Haupttakt mit 100MHz ein Clk-Generator 
vorhanden, welcher u.a. einen weiteren 100MHz-Takt generiert. Dies hatte 
eine Schwebung zur Folge, welche ich jedoch durch umprogrammierung des 
Clk-Gen. in den Griff bekommen habe.
- Ich habe alle möglichen Einstellungen für die FPGA-Pins versucht 
(Slewrate, Drivestrength), jedoch auch ohne Erfolg.

Was mir zudem aufgefallen ist ,dass der D/A-Wandler auch dann Probleme 
hat, wenn ich ein hochfrequentes Testsignal (z.B. Sägezahn) im FPGA 
generiere und direkt dem Wandler übergebe.

Eine letzte Auffälligkeit ist, dass die Variation des ADC/DAC-Clocks 
einen Einfluss auf mein DA-Ausgangssignal habe: bei Verringerung des 
Clocks vergrößert sich die Amplitude. Dies ist ein Effekt, welchen ich 
mir am wenigsten erklären kann, da die Wandler ja immer auf die 
Taktflanken reagiert, unabhängig von deren Frequenz (solange die Timings 
eingehalten werden).

Falls jemand eine Idee hat bzw. schon Erfahrung mit den o.g. Wandlern 
hat, wäre ich sehr dankbar !

Gruß Benny
OP #2668176
Lesenswert?

So, hier die Simulationsergebnisse zum Lese- und Schreibvorgang:

Einige Erläuterungen:

clk ist der FPGA-Clk (100MHz)(ich habe diesen Clock eingeführt, um eine 
bessere Kontrolle über die Timings zu haben)
sclk1 bzw. sclk_int sind die Clocktreiber der Wandler
cs_n ist das Chip-Select-Signal für den ADC (low-active)
Sync ist das "Chip-Select-Signal" für den DAC (low-active)

Beschreibung der Wandler:

Beide Wandler reagieren auf die fallende Taktflanke, weshalb ich zur 
Einhaltung der Setup-/Hold-Zeiten die Daten zur steigenden setze

Auch das serielle Datenformat ist bei beiden mehr oder weniger gleich:
Nach fallender CS-Flanke folgen jeweils 4 Zero's, daraufhin dann die 12 
Bit und anschließend folgt ein idle-Zustand, welcher so ausgelegt ist, 
dass ich mit 20 Takten von sclk auf 1MSPS komme (im Moment betreibe ich 
das System jedoch nur mit 500kSPS, da meine State-Machine nacheinander 
ADC bzw DAC treibt).

Zudem verwende ich in der Simulation einen Testvektor als 
Eingangssignal, bei welchem sich '0' und '1' abwechseln
Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren