Hallo
ich bin gerade dabei mir eine Art DSO zu entwerfen.
Als ADC verwende ich CDK1308 von Exar mit 80MSps, diese sollen paarweise
für 2 Kanäle aufgebaut werden, für Ein-Kanal-Betrieb möchte ich alle 4
ADC zusammenschalten.
Ich würde gerne Xilinx CPLD XC9572XL verwenden um die ADCs zu takten und
jeweils ein CPLD verwenden um die Daten auf jeweils 2 SRAM aufzuteilen,
so bräuchte ich nur SRAMs bis ca. 40 MHz.
Kann ich nun mit einem 80MHz Takt an meinem CPLD, dass ich als Taktgeber
benutze, das Signal irgendwie intern dreimal um ca 3ns verzögern und
dann jeweils die ADCs damit takten? Die Verzögerungszeiten im Datenblatt
lassen sich für mich nur schwer interpretieren?
Weiterhin möchte ich Analog- und Digitalteil der Schaltung trennen um
den schwierigen Analogteil separat zu designen. Kann ich beide Platinen
problemlos per SMC bzw. BNC-Verbinder verbinden??
Kann auf dem Digitalteil das Signal direkt von den SMC-Verbindern an 2
zusammengeschaltete ADCs??
Ich hoffe ihr könnt mir etwas helfen und bedanke mich schonmal
Der XC9572 sollte für sowas grad noch schnell genug sein. Trotzdem rate
ich dir eher zu einem Coolrunner, da du vermutlich nicht wirklich die 5
Volt Kompatibilität der 95er brauchst.
Ansonsten sind die Herstellerangaben zumeist so zu verstehen, daß es die
durchschnittliche Verzögerungszeit von Pin zu Pin ist. Aber Vorsicht,
lieber die Manuals durchlesen.
Da du ja sowieso die Eingangssignale intern erstmal zwischenspeichern
willst/mußt, ist die Pin zu Pin Zeit für dich eher nicht relevant - eher
schon die schiere Anzahl von MC, denn du wirst doppelt zwischenspeichern
müssen und vermutlich mit 200 MHz CPLD-Takt arbeiten, um für den
anschließenden RAM ein sauberes Signalbild hinzukriegen.
Aber mal ne Frage: Warum gerade 10 Bit Wandler? Entweder du nimmst davon
bloß 8 Bit oder du vergeigst ne Menge. Von TI gibt's doch schon seit
gefühlten 100 Jahren Wandler im gleichen Speed-Segment, aber mit 13 oder
14 Bit.
W.S.
Vielen Dank für deine Antwort
ich hatte zuerst überlegt, einen Takt von 80 MHz z.B. dreimal durch ein
Flipflop o.ä. intern zu verzögern und dann jeweils auszugeben um meine
4x 80 MHz zu bekommen, aber wie ich gerade sehe kosten CPLDs bis 400 MHz
kaum etwas und 320MHz benötige ich ja (4x 80 MSps)...das wäre geklärt.
Kann mir jemand sagen ob ich die Eingänge zweier ADCs direkt miteinander
verbinden kann und an eine BNC-Buchse hängen kann??
Wie gesagt, ich würde gerne Analog- und Digitalteil getrennt aufbauen.
Ein Designfehler im Analogteil würde somit nicht die komplette Arbeit
vernichten und dieser Teil soll ja bekanntlich seine Tücken haben.
Wie werden normalerweise im Einkanalbetrieb die ADCs des zweiten Kanal
auf den ersten geschalten? Analog-Multiplexer? Haben diese eine genügend
hohe Signaltreue?
Ich möchte genau diese ADCs verwenden, da ich diese sehr günstig
erhalten habe. Im differentiellen Betrieb lassen sich damit auch
negative Spannungen messen, somit entfällt schonmal ein Bit auf das
Vorzeichen der Spannung. Ob letztendlich die volle Auflösung gültig ist,
hängt ja eher vom Analogteil ab
ich mache mal in meinem alten Thread weiter
Kann ich bei Write Cycle 1 /CE durchgängig auf Low lassen und /WE
gleichzeitig mit dem Hochzählen meines Adresszählers auf High ziehen?
Da ich mit einem 80 Mhz Takt meinen 80 Msps ADC takten will, wird das
ganze etwas haarig.
Hat jemand eine Idee wie ich /WE direkt nach dem Hochzählen der Adresse
wieder auf Low bekomme? Ich dachte daran /WE durch ein FlipFlop des CPLD
zu schicken und den Ausgang für einen Reset zurückzuführen um einen
kurzen Impuls zu bekommen.
Weshalb soll Analog und Digital auf der Analogseite getrennt werden?
Mach die Wandler auf die Analogplatine. Der Wandler ist ja per LVDS
angeschlossen und kann daher ein paar mV Gleichtakt Spannung aufnehmen.
Man darf einfach die Analog- und Digitalsignale nicht kreuzen lassen.
Ich meinte das anders. Ich möchte gerne alles was vor dem AD-Wandler
kommt auf eine extra Platine auslagern (Opamp, Tiefpass etc.)
Kann mir jemand etwas zu meinen SRAM Timing-Problemen sagen?
Ich wuerd das mal mit den ueblichen FPGA Simulatoren simulieren. Die
externen Teile dabei mitsimulieren.
Das Ganze ist ein sehr anspruchsvolles Projekt.
Ist der /CE controlled writecycle nicht besser geeignet? Wenn ich das
richtig verstehe, kann es sein, dass der Chip nachdem /WE auf low geht,
Twhz braucht, bis er auf Datainput umgeschaltet hat. Siehe Fußnote 4 auf
der ersten Seite. Wenn /WE dauerhaft low ist, must du nur anfangs einmal
Twhz abwarten.
Sonst ist wohl nur entscheidend, dass /CE und /WE nicht gleichzeitig
geschaltet werden sollen und dass Adresse und Daten stabil sind, bevor
/CE low geht.
hmm... aber Twhz gibt es in beiden write cycles, aber bei "CE
controlled" bleibt Dout auf "High-Z". Bedeutet das, dass der Chip auf
Eingang geschaltet bleibt? Das wäre natürlich von Vorteil.
Mit welcher Frequenz kann ich die Daten eintakten? Mit der Doppelten?
Oder gibt es eine Möglichkeit meine 80 MHz ADC Daten mit einem 80 Mhz
Takt reinzuschreiben? Wenn ich den 160 oder 240 MHz dafür bräuchte,
bringt das vermutlich nur mehr Probleme mit sich, oder? Die Platine wird
zweilagig.
Udo Meinz schrieb:> bei "CE> controlled" bleibt Dout auf "High-Z". Bedeutet das, dass der Chip auf> Eingang geschaltet bleibt?
genau das.
Bei 80MHz wirds mit dem Timing sehr haarig. Die Addresse ist der Teil,
der am längsten stabil am SRAM anliegen muss (write cycle time Twc). Und
die wird ja berechnet. Mit dem schnellsten Variante des SRAM hast du
aber nur 4.5 ns bei 80MHz (12.5ns periode) für die Berechnung. Da must
du schon genau die Durchlaufzeiten des längsten Pfades beachten. Wenn
die Zeit zu lang ist brauchts dann Ausgangsregister für Daten und
Adresse und ne "mini pipeline". Vorne samplen und addresse berechnen und
ans register anlegen, hinten Register in SRAM schreiben. Und bei 80MHz
muss dein Clock Manager wohl auch die /CE signale erzeugen, denn Tcw is
minimal 6.5ns (chip enable to end of write) was etwas mehr als die halbe
Taktperiode ist.
> die Platine wird zweilagig....
So wird das nichts. Unter sechs lagen wuerd ich gar nichtberst beginnen.
Die beim layouten gesparte Zeit uebersteigt die Kosten schon alleine.
Dann kommn noch die EMV probleme hinzu, und dass man bei diesen
Frequenzen mit Impedanzkontrollierten Leitungen arbeitn muss.
Lass es sein, das wird so nichts.
Von der Umsetzung mit (evtl. sogar mehreren) CPLDs würde ich auch
dringend abraten! Dafür nimmt man einen einzelnen FPGA, der muss für die
Erfassung garnicht mal besonders groß sein. Von Vorteil ist hier auf
jeden Fall auf dem Chip verfügbare, schnelle SRAM.
Als großen Sample-Speicher hängt man dann externen Speicher dran. Je
nach Geschwindigkeit synchronen SRAM, oder eine DDR-DRAM-Variante.
Das stimmt. 320 MHz war zu schnell gedacht. Ich bin von einem Vielfachen
von 80 MHz ausgegangen, da ich den Takt intern ja durch Zähler wieder
teilen müsste, also durch 2, 4 usw. deshalb die 160.
Ja an FPGA, hatte ich auch schon gedacht. Z.B. könnte dann mit dem
Xilinx MIG ein SDRAM angesprochen werden.
Zweilagig sollte doch noch ok sein, für ein Hobbyprojekt, im Forum gibts
sogar ähnliches auf Lochraster. Die Funktion sollte demnach gegeben
sein.
Das ganze soll kein DSO werden....nennen wir es Messwerterfassung mit
möglichst großem Lerneffekt.
Ich orientiere mich stark hieran, ein Hantek DSO 2090:
http://fabiobaltieri.com/2013/07/10/inside-a-hantek-dso-2090-usb-oscilloscope/CPLD und SRAM liegen bei mir genügend rum. Ok, nur bei 1 Kanal gibts die
volle Abtastrate mit zwei parallelen SRAM, ansonsten wirds teuer. Ich
hab verstanden ;)
>Das stimmt. 320 MHz war zu schnell gedacht. Ich bin von einem Vielfachen>von 80 MHz ausgegangen, da ich den Takt intern ja durch Zähler wieder>teilen müsste, also durch 2, 4 usw. deshalb die 160.>Ja an FPGA, hatte ich auch schon gedacht. Z.B. könnte dann mit dem>Xilinx MIG ein SDRAM angesprochen werden.>Zweilagig sollte doch noch ok sein, für ein Hobbyprojekt, im Forum gibts>sogar ähnliches auf Lochraster. Die Funktion sollte demnach gegeben
Dafür nimmt man eine DCM im fpga und erzeugt phasenverschobene Signale
die die ADC's takten.
Wenn du mit dem vielfachen taktest, samplen die ADC's doch gleichzeitig
und nicht leicht versetzt. Im ürbigen
>Aus 2x 80MHz wird außerdem nicht 1x 160MHz! * In diesem Fall.
Du musst die Bandbreite deiner ADC's beachten...
Gruß Jonas
80, oder 160MHz auf Lochraster ist voellig illusorisch. Zudem sind die
FPGA gerne BGA. Und falls TQFP, dann 144 und hoeher. Falls das RAM
intern sein soll, hat das FPGA mehr pins, und wenn das RAM extern sein
soll benoetigt man auch viel mehr pins. Mit Hobby Projekt ist da leider
nichts mehr.
es war ja nur eine Überlegung den doppelten Takt zu nehmen und dann mit
Zählern herunterzuteilen. Wenn diese zu Beginn unterschiedliche
Zählerstände haben, sehe ich da kein Problem zwei um 180° versetzte
Takte zu bekommen.
Aber eigentlich will ich gar keine FPGA benutzen. Wie gesagt, ich
orientiere mich am obigen Link vom DSO 2090. Das Problem ist ja
eigentlich nur, genügend schnelle SRAM zu verwenden oder eben zwei
parallel zu schalten.
@nochwas
Beitrag "8 Kanal 50Ms/s AVR Logic-Analyzer"
hier zum Beispiel mit 50 MHz. Also 80 MHz sollten doch zweilagig gehen.
Oben meinte ich nur, dass wenn es jemand auf Lochraster sogar geschafft
hat, die Chancen gut stehen, es mit einer vernünftigen Platine zu
schaffen.
@Udo Meinz
Geht's eigentlich ums Basteln oder um Geld zu sparen?
Du wirst es nicht schaffen das preiswerter hinzukriegen als das DSO
2090. Soweit das ungefähr das wäre was angestrebt wird; wobei ich nicht
weiss ob dieses DSO 2090 ordentlich funktioniert -- kenne es nicht.
Lochraster oder 2 Lagen? Haha.
Habe mal vor langer Zeit (>10J) was mit 2x ADC08100 gebaut, und mit
schnellem Fifo Ram SN74V263, auf 6-Lagen Multilayer. Takt 100 MHz,
erster ADC auf steigende der zweite auf fallende Taktflanke.
Gruss