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
Redest du von dem "AC-97 Codec with 48KHz sampling" ? WIE heisst der Chip?
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.
@Benjamin K.: Kannst Du mal ein Bild von Deinem Takt- und Datenpfad aufzeichnen (mit ADC und DAC)? Duke
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
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?
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)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.