Forum: FPGA, VHDL & Co. Probleme mit AD/DA-Wandler


von Benjamin K. (halunke86)


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

von Martin (Gast)


Lesenswert?

Redest du von dem "AC-97 Codec with 48KHz sampling" ? WIE heisst der 
Chip?

von Benjamin K. (halunke86)


Lesenswert?

Zunächst noch eine kleine Korrektur: ich treibe die Wandler zwar mit 
einem 20MHz-Clock, jedoch beträgt die Abtastrate 1MSPS (serielle 
Datenausgabe).

@Martin: als ADC wird ein AD7476 (12 bit, 1MSPS) und als DAC ein 
DAC121S101 zum Einsatz.

von Duke Scarring (Gast)


Lesenswert?

@Benjamin K.:
Kannst Du mal ein Bild von Deinem Takt- und Datenpfad aufzeichnen (mit 
ADC und DAC)?

Duke

von Benjamin K. (halunke86)


Angehängte Dateien:

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

von Jojo S. (Gast)


Lesenswert?

ist es denn gültig dem ADC 17 Takte zu verpassen? Könnte es sein das er 
dann schon wieder eine Wandlung anfängt und durcheinander kommt?

von Benjamin K. (halunke86)


Lesenswert?

Da laut Datenblatt der Wandler erst mit fallender CS-Flanke aktiviert 
wird sollte das meiner Meinung nach kein Problem darstellen.. (ich habe 
auch schon eine Version gehabt wo CS/Sync nur 16 Takte aktiv waren, 
jedoch ohne sichtbare Auswirkungen)

von Benjamin K. (halunke86)


Angehängte Dateien:

Lesenswert?

Hier mal noch die Timings aus den Datenblättern...

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.