Forum: Platinen FMC Platine fertigen lassen


von Pcb (Gast)


Lesenswert?

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 ?

von Vanilla (Gast)


Lesenswert?

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

von Pcb (Gast)


Lesenswert?

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.

von Vanilla (Gast)


Lesenswert?

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

von Pcb (Gast)


Lesenswert?

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.

von Pcb (Gast)


Lesenswert?

Achja. Habe dem virtex6. Muss ich zwischen fmc Stecker und Adc Ausgang 
Ausgangsbuffer schalten? Eigentlich müsste der Spannungspegel stimmen.

von Vanilla (Gast)


Lesenswert?

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

von Vanilla (Gast)


Lesenswert?

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

von Pcb (Gast)


Lesenswert?

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.

von Vanilla (Gast)


Lesenswert?

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

von Gustl B. (-gb-)


Lesenswert?

Bei 80MHz sind das 12,5ns.

von Vanilla (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.