Guten Abend. Ich habe hier schon einige Beiträge zum Thema "FMC" bei FPGA-Entwicklungsboards gelesen. Da sie mehr als sechst Monate zurück liegen und meine Frage nicht ganz den selben Inhalt abzielt poste ich sie hier. Ich möchte eine Platine an ein Entwicklungsboard über einen FMC anbinden. Die Platine werde ich fertigen lassen. In den vorherigen Beiträgen war davon die Rede, dass bestimmte Lötmasken etc. benötigt werden. Ich erstelle das Layout der Platine in Eagle und würde dann die Gerberdaten an den Platinenhersteller, Bestücker senden. Gibt es da in der Regel Schwierigkeiten mit dem FMC? Habe mit dem Platinen in Auftrag geben noch keine Erfahrung gemacht. Auf was sollte ich da achten beim Layout erstellen ?
Pcb schrieb: > Guten Abend. Ich habe hier schon einige Beiträge zum Thema "FMC" bei > FPGA-Entwicklungsboards gelesen. Da sie mehr als sechst Monate zurück > liegen und meine Frage nicht ganz den selben Inhalt abzielt poste ich > sie hier. > > Ich möchte eine Platine an ein Entwicklungsboard über einen FMC > anbinden. Die Platine werde ich fertigen lassen. In den vorherigen > Beiträgen war davon die Rede, dass bestimmte Lötmasken etc. benötigt > werden. Ich erstelle das Layout der Platine in Eagle und würde dann die > Gerberdaten an den Platinenhersteller, Bestücker senden. Gibt es da in > der Regel Schwierigkeiten mit dem FMC? Habe mit dem Platinen in Auftrag > geben noch keine Erfahrung gemacht. Auf was sollte ich da achten beim > Layout erstellen ? Hallo PCB, ich mach seit mehreren Jahren FMC-Mezzanines für Auftraggeber... der FMC Stecker ist ein SMD-Teil mit einem Pin Raster von 1,28mm mit 160/400 Pins. Durch seine (für ein SMD Bauteil) enorme Ausmaße ist es von extremer Wichtigkeit dass die Platine beim löten plan ist bzw. plan bleibt. Von entsprechender Wichtigkeit ist der Lagenaufbau bzw. die Verteilung und gleichmäßigkeit der Kupferflächen). Gleichermaßen wichtig ist der passende Zinnauftrag auf den Landingpads des FMC Steckers (Die bauteile bringen kein Zinn-Depot mit wie beispielsweise BGAs). Hierfür solltest Du im Vorfeld Rücksprache mit dem Bestücker deiner Wahl halten und von Ihm die Info einhalten, wei groß die Pads in der Pastenmaske werden sollen und Dir auch entsprechende Vorgaben für die Dicke derselben geben lassen. Keinesfalls empfehlen kann ich den auftrag via Dispenser und Hand. Trotz des eher grobschlächtigen Pin Pitches ist der Stecker anfällig für Lötprobleme. Da der Stecker ja mechanischen Kräften während der Steckvorgänge ausgesetzt ist, kann es bei minderer Lötqualität auch im Nachhinein noch zu Ausfällen kommen welche sich in seltsamsten Syntomen äußern... Gruß Vanilla
Hallo Vanilla. Vielen Dank dir für die sehr hilfreiche Antwort. Ich habe mir zunächst eine Lib des FMC-Steckers (Male) erstellt. Dazu habe ich auf dieser Seite den FMC-Stecker (Male) herausgesucht (müsste auf die Xilinx-Bords passen)(http://www.em.avnet.com/en-us/design/featuredpromotions/Pages/Samtec-Vita-57-SEARAY-Connectors.aspx). Ich habe mich genau an die Dimensionen im PCB-Layout (siehe Datenblatt Seite 2/4) gehalten. Demnach ist der Pindurchmesser auf 25mil festgelegt. Da steht noch etwas von "stencil..." (Seite 3/4) Ist sicher der Punkt, den du oben angesprochen hast und für die Fertigung von Bedeutung. Das muss ich sicher irgendwo in der Lib unterbringen. Ist damit das Lötstopplayer (Durchmesser 35mil), oder wie heißt dieses in der Fachsprache? Du schreibst, dass der Lagenaufbau sowie die Massefläche extrem wichtig sei. Zu meinem Projekt: ich möchte einen achtkanaligen adc anbinden. Das heißt, dass ich 8x14bits einlesen muss. Hierzu kommt noch die Ausgangs-Taktleitung vom adc selbst. Die Spannungsversorgung entnehme ich nicht dem Entwicklungsboards sondern stelle ich extern zu Verfügung. Ist einfacher denke ich fürs erste?! Als Anfänger hätte die Pins jetzt so belegt, wie es vom Layout am besten passt. Natürlich hätte ich schon auf die I/o-Belegung des FPGAs geachtet. Auf einen Ausgangsbuffer zwischen FPGA und DAC hätte ich verzichtet, da das Spannungslevel stimmt. Ich habe keine Erfahrung mit FMC-mezzanines. Für Unterstützung bin ich sehr dankbar. Hast du generelle Hinweise für mich, wie ich die DAC Datenleitungen zu den Steckerpins führen sollte? Zum Beispiel in welchem Layer es am günstigsten ist. Eventuell hast du ja ein Fotoausschnitt von Leitungen die vom Stecker weggehen.. Also für anfängertipps wie man am geschicktesten die Leiterbahnen von den Steckerpins zu den Schaltungselementen führt bin ich sehr dankbar. Welche Leitungsbreite wählt man erfahrungsgemäß am sinnvollsten bei den Leiterbahnen zum Steckerelement? Hast du noch mehr Tipps oder Links zu dem Thema. Es soll keine Platine zur Serienfertigung werden. Nur für einen Messaufbau. Funktionieren sollte es trotzdem. Ich möchte eine Karte auf den Lpc abstimmen, da ich diese dann auch an dem HPC bei Bedarf betreiben kann. Die relevanten Pins sind ja identisch. Danke nochmals und ein schönes Wochenende dir.
Pcb schrieb: > Ich habe mich genau an die Dimensionen im PCB-Layout (siehe Datenblatt > Seite 2/4) gehalten. Demnach ist der Pindurchmesser auf 25mil > festgelegt. Da steht noch etwas von "stencil..." (Seite 3/4) Ist sicher > der Punkt, den du oben angesprochen hast und für die Fertigung von Ja Sencil ist die Metalldruckschablone für den (Zinn)past(en)auftrag. > Bedeutung. Das muss ich sicher irgendwo in der Lib unterbringen. Ist > damit das Lötstopplayer (Durchmesser 35mil), oder wie heißt dieses in > der Fachsprache? Lötstoppmaske wäre die Soldermask und die Lötpastenmaske im Englischen einfach Pastemask. > > Du schreibst, dass der Lagenaufbau sowie die Massefläche extrem wichtig > sei. > > Zu meinem Projekt: ich möchte einen achtkanaligen adc anbinden. Das > heißt, dass ich 8x14bits einlesen muss. Hierzu kommt noch die > Ausgangs-Taktleitung vom adc selbst. Die Spannungsversorgung entnehme > ich nicht dem Entwicklungsboards sondern stelle ich extern zu Verfügung. > Ist einfacher denke ich fürs erste?! Eher nicht, für 14 Bit ADC brauchts eine extrem saubere Versorgung, außerdem würde der Verzicht von sich aus das Layout nicht von selbst vereinfachen... Wichtig ist einen symetrischen Lagenaufbau zu haben: Bsp: Layer 1 (Top) = Bauteile + Signalleitungen Layer 2 (Innenlage unter Top) = Masse Layer 3 (Innenlage über BOT) = VCC ( wenn mehrere VCCs auf dem Layer sind, darauf achten dass keine größeren Lücken zwischen den einzelnen Planes sind). Layer 4 (Bot) = Bauteile + Signale Ist jetzt stark vereinfacht, es gibt eine Reihe weiterer Fallstricke. Ggfs. nochmals jemanden über das Layout drüberschauen lassen der sich damit auskennt... > > Als Anfänger hätte die Pins jetzt so belegt, wie es vom Layout am besten > passt. Natürlich hätte ich schon auf die I/o-Belegung des FPGAs > geachtet. Auf einen Ausgangsbuffer zwischen FPGA und DAC hätte ich > verzichtet, da das Spannungslevel stimmt. Wie schon geschrieben, wenns wirklich annähernd 14 Bit Auflösung sein sollen dann hat das ganze schon seinen Anspruch. Schau Dir hierzu einmal an welche Anforderungen dein FPGA an den Clockjitter stellt. Normalerweise sind diese Forderungen mit einem durch den FPGA gezogenen Clock oder gar über DCM/PLL geführt nur schwer bis gar nicht zu erfüllen, die Folge wären eine Degradierung der ADC-Auflösung um mehrere LSBs. > > Ich habe keine Erfahrung mit FMC-mezzanines. Für Unterstützung bin ich > sehr dankbar. Neben den Informationen im Standard (welche nur gegen Bezahlung von der VITA zur erhalten sind), kommt es auch stark darauf an, an welches (oder welche) Baseboards das FMC betrieben werden soll. So gibt es z.B. mehrere FMC-Boards in welchen bestimmte Signalpins unbelegt sind oder aber Besonderheiten aufweisen (unterschiedliches Timing durch teilweise Levelshifter etc.) als Dinge wie Sie nicht im VITA 57 stehen aber von manchen FMC-Evalboard unter Misachtung des Standards ausgelebt werden. Wenn also mehrere FMC-Baseboards in Frage kommen, alle Schematics eingehend studieren! > > Hast du generelle Hinweise für mich, wie ich die DAC Datenleitungen zu DAC oder ADC? > den Steckerpins führen sollte? Zum Beispiel in welchem Layer es am > günstigsten ist. Eventuell hast du ja ein Fotoausschnitt von Leitungen > die vom Stecker weggehen.. Also für anfängertipps wie man am > geschicktesten die Leiterbahnen von den Steckerpins zu den > Schaltungselementen führt bin ich sehr dankbar. Welche Leitungsbreite > wählt man erfahrungsgemäß am sinnvollsten bei den Leiterbahnen zum > Steckerelement? Ich könnt jetzt mit der reinen Leere und von Wellenwiderständen, Z0 etc. anfangen. Ich denke, dein Ansatz sich vom ADC ausgehend passende FMC Pins zu suchen ist schon OK, vermeide möglichst Kreuzungen und Knoten und bringe den ADC so nahe wie möglich an den Stecker ran, dann passt das wahrscheinlich schon. Viel wichtiger ist die Qualität der Spannungsversorgung und das Abblockung der Versorgungsspannungspins am ADC. Hier ist jeder halbe Millimeter von entscheidender Bedeutung. Bei den Signalen ist ersteinmal nur die Strobe/clockleitung im Vergleich zu den Signalleitungen von höchster Bedeutung. Signal- bzw. Datenleitungen unter sich erst bei zunehmender Geschwindigkeit (wie viele MSamples/sec. sollens denn werden?). > > Hast du noch mehr Tipps oder Links zu dem Thema. Es soll keine Platine > zur Serienfertigung werden. Nur für einen Messaufbau. Funktionieren > sollte es trotzdem. Ich möchte eine Karte auf den Lpc abstimmen, da ich > diese dann auch an dem HPC bei Bedarf betreiben kann. Die relevanten > Pins sind ja identisch. Wie gesagt hatte da bei Spartan6 Evals von Avnet meine Überraschung erlebt... > > Danke nochmals und ein schönes Wochenende dir. ... was davon noch übrig bleibt... Gruß Vanilla
Danke. Irgendwie wurde damit meine Motivation gedämpft. Hoff, dass ich es in vertretbarer zeit schaffe. Es soll folgender ad Wandler werden: ad9231. Den wollt ich eigentlich vier mal auf einer Karte unterbekommen. Zweimal auf dem Top und zweimal auf dem Bot Layer. Die Spannungsversorgung über den fmc reicht nicht aus, da vier Wandler zu viel Leistung benötigen. Nehme den Wandler mit 80msps.
Achja. Habe dem virtex6. Muss ich zwischen fmc Stecker und Adc Ausgang Ausgangsbuffer schalten? Eigentlich müsste der Spannungspegel stimmen.
Pcb schrieb: > Danke. Irgendwie wurde damit meine Motivation gedämpft. dann bist aber wirklich zu zart beseitet ;) > Die > Spannungsversorgung über den fmc reicht nicht aus, da vier Wandler zu > viel Leistung benötigen. Nehme den Wandler mit 80msps. was bringt dich nun darauf? Würd ich jetzt erst mal nicht reflektiert so stehen lassen... Im FMC Standard steht nur ein Maximalstrom welcher beispielsweise über die 3,3V (4 Pins) zu entnehmen sind: 3A. Dazu kommen dann noch mals max. 2A über den VADJ (LPC). Wenn ich jetzt deinen AD9231 mit sagen wir je 125mA @ 1,8V zubillige (jetzt einfach mal unterstellt die komplette nominalen 204mW würden über die 1,8V gezogen [was ja wiederum nicht stimmt, da wir sehen dass alleine über die Datenausgangstreiber rund 40mW mehr verbraten werden [bei 3,3V DRVDD gegenüber 1,8V]) so haben wir bei 4*ADC gesamt ein halbes Ampere @ 1,8V. Das könntest Du jetzt entweder von den VADJ (normalerweise 2,5V wenn Du nichts umstellst oder aber das FPGA Board nichts anderes vorgib) mittels Ultralow Drop Linearregler oder aber von den 3,3V runterregeln (jeweils mit zusätzlicher Filterung). Die meisten EVAL Boards können bei eintsprechender Supply die 2/3A auf VADJ und 3V3 zur Verfügung stellen... Btw.: Da das ganze eh nur auf Prototypen rausläuft würde ich zu 4 * Linearreglern greifen und jeden ADC einzeln versorgen. Entspannt das Layout und die Verlustleistung wird automatisch über eine größere Fläche abgegeben... P.S. Dem Clockeingang Pin 1/2 gebührt besondere Hingabe. Ein eigener Quarz mit LVDS Ausgang (nicht aus oder durch den FPGA), am besten ein Clockdistribution Baustein wenn die ADCs gleichlaufen sollen. Am besten gleichlange Leitungspaare vom Clockbuffer zu den ADCs und weit weg von Störern verlegen. Terminierung unmittelbar an oder unter den Clockpins am ADC nicht vergessen... Ähnliches gilt auch für den VREF Pin (Störer fern halten (ich würd z.B. direkt unter dem VREF Pin die GND und anderen Planes aussparen, den 100nF direkt und den 1uF (lt. Applikation empfohlen bei interner Referenz) auf der PCB Rückseite mit minimalster Leiterbahnlänge anschliessen. Gruß Vanilla
Pcb schrieb: > Achja. Habe dem virtex6. Muss ich zwischen fmc Stecker und Adc Ausgang > Ausgangsbuffer schalten? Eigentlich müsste der Spannungspegel stimmen. Der VITA 57 (FMC) sieht Standardmässig 2,5V womit Du ADC und FPGA betreiben kannst. Insofern besteht hier kein Handlungsbedarf. Für DCOA und DCOB (Clock zum FPGA) würd ich zum einen Serienwiderstände (Serienterminierung) vorsehen und ein- bis zwei cm länger als die Datenleitungen halten... und darauf achten das DCOA und DCOB auch auf Clockinputpins vom FMC Stecker (GCLK Inputs am FPGA) landen. Zur originären Frage: Ausgangsbuffer sind nicht notwendig. Leitungsterminierung für alle Pins wäre schön, solange Du nur einen Prototypen baust welcher keine Prüfungen zu bestehen hat kannst Du diese einer idealeren Platzierung und Routing zum Opfer fallen lassen. Ausnahme wie beschrieben die Clockpins bei welcher man sich zumindest die Option offen halten sollte eingreifen zu können. Wichtig auch darauf achten dass die Clockpins auch tatsächlich auf FPGA clockinputs ankommen um das FPGA Inputtiming in den Griff zu bekommen. Gruß Vanilla
Danke dir. Habe das Layout fast fertig geroutet. Eine Frage, bevor ich es vollende: Ich habe mir auf deinen Rat hin andere FMC mezzanine Layouts angeschaut. Mir ist aufgefallen, dass stets versucht wird die Ausgänge des devices hin zu den FMC Kontakten mit gleich langen Leitungsstücken zu verbinden. Dazu wird so wie ich das sehe der längste nötigste Pfad (max) als Referenz genommen. Die anderen Pfade werden nun künstlich auf die Referenzpfadlänge (Max) verlängert (Durch mäanderförmige Verläufe). Sehr schwierig von Hand finde ich. Gerade dann, wenn man wie ich vier mal 12 Signale zum FMC Stecker ziehen muss. Also eine kurze Überlegung: die Signale werden mit max 80 Msps abgetastet. (Wenn ich vom schnellsten adc der Baureihe ausgehe). Der Unterschied zwischen max und min Weg zu den FMC-Pins nenne ich Delta. Es resultiert ein max laufzeitunterschied der Signale von delta x c_substrat. Dieser laufzeitunterschied muss nun viel kleiner als die taktrate mit der die datenbits im fpga eingelesen werden sein. Ansonsten gibt es Fehler. D.h. lese ich bei 80 Msps auch mit 80 MHz ein, dann muss gelten: 1/80 MHz = 80 us >> laufzeitunterschied. Sehe ich das so richtig ? Das bedeutet, dass mein maximaler wegunterschied Delta << c_substrat x 80 us. Relevant in meinem Fall? Ich weiß, dass es ja im fpga selbst noch die Möglichkeit gibt Timings festzulegen. Was meinst du in meinem Fall? Danke dir.
Pcb schrieb: > Also eine kurze Überlegung: die Signale werden mit max 80 Msps > abgetastet. (Wenn ich vom schnellsten adc der Baureihe ausgehe). Der > Unterschied zwischen max und min Weg zu den FMC-Pins nenne ich Delta. Es > resultiert ein max laufzeitunterschied der Signale von delta x > c_substrat. Dieser laufzeitunterschied muss nun viel kleiner als die > taktrate mit der die datenbits im fpga eingelesen werden sein. Ansonsten > gibt es Fehler. D.h. lese ich bei 80 Msps auch mit 80 MHz ein, dann muss > gelten: 1/80 MHz = 80 us >> laufzeitunterschied. Sehe ich das so richtig > ? Das bedeutet, dass mein maximaler wegunterschied Delta << c_substrat x > 80 us. Relevant in meinem Fall? Ich weiß, dass es ja im fpga selbst noch > die Möglichkeit gibt Timings festzulegen. Was meinst du in meinem Fall? Ups was rechnest Du da? Den wichtigsten Bezug den Du herstellen must, ist die Signallaufzeit in Bezug auf den Clock, respektive Datenstrobe. Da letzterer bekannt ist musst Du nur dafür sorgen dass die Datenleitungen kürzer sind als die Clockleitung. 80Mhz sind dabei noch sehr relaxte Anforderungen, wenn Du dafür Sorge trägst dass längste und kürzeste Datenleitung nicht mehr als sagen wir ein bis 1,5cm auseinander liegen, und die Clockleitung nochmals ca. anderthalb Zentimeter länger ist als die längste Datenleitung, dann bist Du wohl im sicheren Bereich. Mit deiner Rechnung komme ich nicht klar, du hast eine Periodendauer von 125 ns. Real gesehen bewegt sich dein Signal immer noch > 10cm pro Nanosekunde auf der Leiterplatte fort. Bei 80us Laufzeitunterschied möchte ich die Dimension deiner Leiterplatte aber mal sehen ;) Gruß Vanilla
Gustl Buheitel schrieb: > Bei 80MHz sind das 12,5ns. Danke, bei mir waren die Kommas wohl grad ausgegangen...
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.