benutzerdefinierte FPGA-PCB-Design-Tipps

Ich plane, eine benutzerdefinierte FPGA-Leiterplatte zu entwerfen. Die Platine enthält Sensoren. Ich muss die Ausgabe der Sensoren lesen und im Prozessor verarbeiten. Ich habe viele Projekte mit FPGAs abgeschlossen, aber dies wird mein erstes kundenspezifisches Design sein, bei dem ich auch die Hardwarekonfiguration berücksichtigen muss. Ich habe in letzter Zeit recherchiert, aber es fällt mir immer noch schwer, von einem Punkt aus zu beginnen. Daher bitte ich Sie, mir und anderen Personen, die ihr kundenspezifisches FPGA entwerfen möchten, dabei zu helfen, welche Punkte sie bei jedem Schritt berücksichtigen müssen. Gibt es Bücher/Online-Ressourcen, die uns bei diesem Prozess helfen können? Ich werde auch ein Dokument erstellen, nachdem ich mein Projekt abgeschlossen habe, damit die Leute davon Gebrauch machen können.

Vielleicht sollten Sie die physische Größe des FPGAs erwähnen, das Sie verwenden möchten, die Anzahl der Pins, die erforderlichen Versorgungsspannungen, ...
Diese sind noch nicht spezifiziert. Vielleicht war meine Frage unklar, aber ich suche nach einer Richtlinie.
OK Fair genug.
Diese Frage scheint nicht zum Thema zu gehören
Die große Frage ist, ob Sie bereit sind, ein BGA-Gehäuse zu verwenden, oder ob Sie sich auf die Teilmenge von Angeboten (und reduzierter elektrischer Leistung) beschränken, die in handarbeitsfreundlichen TQFP-Gehäusen verfügbar sind. Hoffen Sie als nächstes, dass alle Ihre Versorgungsmaterialien und Signale auf zwei Ebenen geroutet werden (schwierig, aber für begrenzte Ziele möglich), oder sind Sie bereit, 4 oder mehr zu verwenden? Wie schnell sind Ihre Sensorsignale? Mit welcher Geschwindigkeit hatten Sie gehofft, die interne Logik zu takten? Hast du ein rauschempfindliches Analog? Haben Sie darüber nachgedacht, eine Tochterplatine zur Verwendung mit einer vorhandenen FPGA-Platine herzustellen?

Antworten (3)

In meiner Firma haben wir zuvor einige kundenspezifische FPGA-Boards entworfen und haben vor kurzem damit begonnen, handelsübliche FPGA-Boards ("COTS") mit kundenspezifischen FMC-Tochterboards zu verwenden.

Prototypenstadium

Wenn Sie sich noch in der frühen Projektdefinitionsphase befinden, planen Sie den Kauf von mindestens einem COTS-FPGA-Board für das Prototyping ein. Sie können einen Ihrer Sensoren mit den E/A-Headern verdrahten und einen schnellen Proof-of-Concept durchführen. Dadurch erhalten Sie eine Vorstellung davon, wie das Projekt bei einer Skalierung auf viele Sensoren funktionieren könnte, und können abschätzen, wie viele Sie mit einem bestimmten FPGA unterstützen können.

Wenn das FPGA zu klein oder zu langsam ist oder die Tools für die Aufgabe nicht ausreichen, ist es in dieser Phase einfach, ein anderes COTS-FPGA auszutauschen. (Nun, nicht einfach , aber zumindest machbar...)

Wenn die Firmware zu diesem Zeitpunkt nicht funktioniert, liegt dies eindeutig an einem Firmware-Problem und nicht an einem benutzerdefinierten PCB-Designfehler. Bei kundenspezifischer Firmware und kundenspezifischer Leiterplatte ist es manchmal schwer zu sagen, welche Seite für ein Problem verantwortlich ist.

Benutzerdefiniertes FPGA-Board im Vergleich zu kommerziellem FPGA-Board von der Stange

Das Entwerfen eines benutzerdefinierten FPGA-Boards ist sinnvoll, wenn das Projekt einen kurzen Lebenszyklus oder ein hohes Volumen hat oder einen kleineren Formfaktor erfordert, als Sie mit COTS FPGA-Boards und PMOD- oder FMC-Zusatzboards erreichen können.

Wenn der Lebenszyklus des Projekts die Produktlebensdauer eines DDR-Speicherchips (ein paar Jahre) überschreitet, kann das Entwerfen einer kundenspezifischen FMC-Tochterplatine eine bessere Alternative sein.

Die Kosten sind ein Faktor bei dieser Entscheidung. Die meisten COTS-FPGA-Boards sind eher universell einsetzbar und auf maximale Flexibilität ausgelegt. Wenn Sie ein hochvolumiges, kostensensibles Produkt herstellen, lohnt es sich wahrscheinlich, ein kundenspezifisches Design zu erstellen. aber bei geringem Volumen ist es wahrscheinlich besser, sich auf die Herstellung einer Tochterkarte zu konzentrieren.

Unabhängig davon, für welchen Ansatz Sie sich entscheiden, gibt es bestimmte Schnittstellen, die eine klare Masterdokumentation erfordern: an der Schnittstelle zwischen den FPGA-I/O-Pins der obersten Ebene und dem Rest der Platine sowie an der Steckverbinderschnittstelle zwischen Platinen. Dies sind Stellen, an denen Pin-Positionen, interne Netznamen und externe Netznamen manchmal nicht übereinstimmen und vertauscht werden. Eine Tabelle ist eine ausreichende Dokumentation; Achten Sie darauf, diese Schnittstellentabelle versioniert und unter Quellcodeverwaltung zu halten. Bevor Sie PCB-Dateien an die Fertigung senden, drucken Sie eine Kopie dieser Schnittstellentabelle, eine Kopie des Schaltplans und eine Kopie des FPGA-Pin/Pad-Berichts aus. Ziehen Sie einen Textmarker über die Papiere, um zu überprüfen, ob jedes Signal dort angeschlossen ist, wo es sein sollte.

Für Steckverbinder habe ich auf die harte Tour gelernt, eine mechanische "Systemzeichnung" bereitzustellen, die sowohl Platinen als auch Gegensteckverbinder zusammen auf einer einzigen bemaßten Zeichnung zeigt. Ich wurde zuerst von einem VME-Anschlusssystem verbrannt, bei dem Pin „A1“ an einem Anschluss nicht Pin „A1“ am anderen Anschluss zugeordnet war. Ich habe auch gesehen, wie Designer vergessen haben, dass ein Paar rechtwinkliger Steckverbinder zu einer spiegelbildlichen Verbindung führt (90 Grad + 90 Grad = 180 Grad). Dies war ein Problem, als ich für das Motherboard verantwortlich war und mehrere andere Projektmanager für verschiedene Tochterboards verantwortlich waren.

Tipps für benutzerdefinierte FPGA-Boards

Beginnen Sie mit dem „Referenzdesign“ des FPGA-Anbieters und lassen Sie dann alle Teile weg, die für Ihre Anwendung nicht erforderlich sind. Entfernen Sie keine Bypass-Kondensatoren aus dem FPGA und versuchen Sie nicht, mit weniger PCB-Schichten davonzukommen. Achten Sie auf den Schichtaufbau (häufig neben der Bohrzeichnung zu finden); Fine-Pitch-Komponenten verwenden normalerweise 0,5 Unzen Kupfer anstelle der standardmäßigen Kupferfoliendicke von 1 Unze.

BGA-Paket ist ein Schmerz, mit dem man arbeiten kann. Die Ausbeute ist nie so gut wie bei TQFP- oder TQFN-Gehäusen, und die Nachbearbeitung eines BGA ist nahezu unmöglich. Selbst die Prüfung auf Montageprobleme erfordert einen Röntgenbildgeber. Stellen Sie sicher, dass Sie einen Lohnfertigungsdienstleister Ihres Vertrauens beauftragen.

Netzteile sind bei der Arbeit mit FPGA-Boards immer knifflig. Der tatsächliche Leistungsbedarf des FPGA hängt sehr stark vom Konfigurationsbitstrom ab. Xilinx bietet ein „Power Estimator“-Tool, aber die Schätzung ist nur gültig, wenn die Firmware vollständig ist. Bei einer Firmware-Änderung in letzter Minute besteht das Risiko, dass der Strombedarf größer als erwartet ist. Planen Sie, etwas Versorgungsstrommarge zu lassen. Wenn die anfängliche Leistungsschätzung besagt, dass Sie 560 mA benötigen, fahren Sie fort und verwenden Sie einen 1000-mA-Regler. Der zusätzlich verfügbare Ausgangsstrom schadet nicht, aber ein unzureichender Ausgangsstrom führt zu einem fehlerhaften Systemverhalten.

Wenn es nicht festgeschriebene FPGA-Pins gibt, bringen Sie so viele wie möglich zu einem Header heraus. Wenn ein Problem auftritt, werden diese nicht festgeschriebenen Pins zu einer wertvollen Diagnoseressource zum Prüfen von Signalen innerhalb des FPGA.

Ich habe über ein Dutzend FPGA-basierte Boards entwickelt, die eine breite Palette unterschiedlicher FPGA-Typen verwenden, von Lattice Mach X02 mit geringem Stromverbrauch bis hin zu Virtex 6 mit hoher Leistung und 24 SERDES-Kanälen. Die normalen Schritte, denen ich folge, sind:

Finden Sie ein COTs-Board (ähnlich wie MarkU) und machen Sie sich eine ungefähre Vorstellung von den internen FPGA-Ressourcen, die Sie benötigen, insbesondere achte ich auf:

  • LUT (Nachschlagetabelle) zählen:(Passt das Design in die LUTs auf dem Referenzboard?) Wenn Sie nicht über die Ressourcen oder eine umfassende Methode verfügen, um eine genaue Schätzung der LUT-Nutzung (< 1K LUT-Genauigkeit) zu ermitteln, weil das Design möglicherweise noch nicht fertig ist. Verwenden Sie diese Faustregel. Wenn das Design fast fertig ist, nehmen Sie die Größe des Designs (LUT-Anzahl) und finden Sie ein FPGA mit mindestens 30 % mehr LUTs. Wenn das Design noch nicht annähernd fertig ist, gehen Sie bis zu 50 % oder 100 % mehr LUTs. Wenn das Design also in 9K-LUTs passt, stellen Sie sicher, dass Sie ein FPGA mit 12K-LUTs oder mehr verwenden. Ich neige dazu, übertrieben zu werden und würde wahrscheinlich auf 25.000 LUTs hochgehen. Das erspart Ihnen später quälende Kopfschmerzen. Wer dieses Platinendesign in Auftrag gibt, sollte sich darüber im Klaren sein, dass es mehr als einen Spin dieses Designs geben sollte, sodass es verständlich ist, die erste Version des FPGA zu überdimensionieren.
  • BRAM (Block-RAM-Anzahl):Stellen Sie fest, ob Ihr Design mehr Speicherressourcen benötigt, als Ihr FPGA intern hat. Dies wird zunächst leicht übersehen, aber in einem Design neigen Sie aus verschiedenen Gründen dazu, Block-RAM zu verwenden (ROMs, FIFOs usw.). Mir ging bei einem Design der Blockspeicher aus und ich versuchte, verteiltes RAM zu verwenden (unter Verwendung der LUTs als RAM). ) und es hat alle meine LUTs sehr schnell aufgefressen. Es ist wichtig zu bestimmen, ob Sie externen Speicher benötigen. Dies fügt den Designs ein großes Risiko hinzu, denn wenn das Design ein gewisses Maß an Leistung erfordert, können Sie es tun.
  • Zählen Sie alle Signalisierungsstandards und möglichen Spannungspegel auf, die Sie verwenden werden: Dies ist wichtig, da einige der Signalisierungsstandards, die Sie verwenden möchten (LVDS, LVSPEC, LVCMOS), Spannungsbeschränkungen haben können. Gehen Sie die Benutzerhandbücher durch und vergewissern Sie sich, dass alle diese Standards unterstützt werden.
  • Anforderungen an die Stromversorgung:Ich sympathisiere mit all den vorherigen Beschwerden über unterdimensionierte Netzteile, bei denen die angegebene Kernspannung schlecht ist. In letzter Zeit habe ich viele TI Nano-Module für die großen, aber niedrigen FPGAs verwendet (Spartan LX45 (T) - LX75 (T) und Gitter ECP3). Glücklicherweise können Sie einige der Risiken mindern, wenn Sie die für die E/A verwendeten Netzteile dimensionieren. Insbesondere wenn diese Bank keine unbekannte Quelle (Erweiterungsstecker) antreibt, ist der Prozess wie folgt: Finden Sie alle Komponenten, an die diese Bank angeschlossen wird, bestimmen Sie die Eingangskapazität für alle diese Komponenten, finden Sie die maximale Taktrate heraus diese Signale ansteuern, dann können Sie sowohl den Leistungsbedarf berechnen als auch den Bypass-Bedarf grob abschätzen,

Unter Verwendung der Gleichung [P = (1/2)CV^2 * (f)] wobei C = Eingangskapazität, f = Frequenz. des Eingangs, den Ihr FPGA ansteuern muss (für jedes Signal!). Sie können eine Worst-Case-Schätzung darüber finden, wie viel Leistung erforderlich ist, um alle Ausgangssignale zu treiben.

Sie müssen auch den Leistungsverlust berücksichtigen, der mit internen Abschlusswiderständen verbunden ist (basierend auf den von Ihnen verwendeten E/A-Standards).

Auch das TI Webbench Tool nutze ich in letzter Zeit immer häufiger mit großem Erfolg:

TI Webbench (ich arbeite nicht für TI)

Schema:

  • Richten Sie Ihren Schaltplan mit einem Idioten im Hinterkopf ein Sie und alle HDL-Designer werden häufig auf diesen Schaltplan zurückkommen, also machen Sie es allen leicht, schnell zu finden, was sie brauchen, ohne dass Sie oder sie in Zukunft den gesamten Schaltplan recherchieren müssen, um es herauszufinden wenn Pin 20 der Takteingang ist. Dazu gehören viele Notizen zum Schaltplan (wenn möglich), beschreiben den Zweck einer Schaltung, das erwartete Ergebnis und sogar Bedenken. Da FPGAs in Bänke unterteilt werden können, sollten Sie die FPGA-Komponente in mehrere Teile aufteilen und vielleicht sogar eine ganze Schaltplanseite für eine einzelne Bank reservieren.

  • FÜGEN SIE IN IHREM SCHALTPLAN RIESIGE nervige Notizen über das Anbringen von Uhren an die richtigen Stifte ein: Ich habe meinen Kopf gegen viele Wände geschlagen, als ich mein erstes Bild für das Design erstellte, und bekam das gefürchtete „Uhrsignal, das auf einen nicht für die Uhr aktivierten Stift geleitet wird“. . Leben Sie in Angst vor den verschiedenen Arten von Clock-Pins auf dem FPGA. Stellen Sie sicher, dass Sie verstehen, dass einige Clock-Pins für die Verwendung in einem Quadranten eines FPGA bestimmt sind, sonst werden Sie allen gegenüberstehen und sagen: „Hey, wussten Sie, dass es bestimmte Clock-Pins gibt, die für die Verwendung in einem Quadranten eines FPGA vorgesehen sind?“. Es braucht nur 15 Leute, die dir das sagen, um sicherzustellen, dass du es nie wieder tust.

  • VERBRINGEN SIE VIEL ZEIT MIT DEM FPGA-KONFIGURATIONSDESIGN: Stellen Sie sicher, dass Sie die JTAG-Pins herausbringen, auch wenn Sie nicht vorhaben, sie zu verwenden. Es ist der Unterschied zwischen einem praktikablen Fehler und einem schwerwiegenden Fehler.

  • Bringen Sie im Zweifelsfall zusätzliche Signaltasten, LEDs und Dip-Schalter heraus: Ich habe viel über die zusätzliche Arbeit nachgedacht, die mit dem Routing zusätzlicher Signale zu Breakout-Header-LEDs, Dip-Schaltern und Tasten verbunden ist, aber es hat IMMER geholfen.

Anordnung :

  • Kommunizieren Sie frühzeitig mit dem Fab-Haus: Insbesondere wenn Sie impedanzgesteuertes Routing benötigen, fragen Sie nach einem Layer-Stack für die gewünschte Layer-Anzahl. Es ist viel einfacher, Hochgeschwindigkeitssignale zu routen, wenn Sie zuerst die Leiterbahnbreiten definiert haben, anstatt herauszufinden, dass Sie 6-mil-Leiterbahnen anstelle von 8-mil-Leiterbahnen hätten verwenden können, um Ihre 50-Ohm-Impedanz zu erreichen.

  • Beginnen Sie mit Bypass-Kappen: Entwerfen Sie das Stromversorgungssystem frühzeitig. Als erstes platziere ich alle kleinen Kappen unter dem FPGA oder in der Nähe der Pins. Die größeren außerhalb des FPGA und routen einen ganzen Stromversorgungsschaltkreis und platzieren ihn ungefähr dort, wo ich ihn erwarte. Auf diese Weise kämpfen Sie nicht gegen das Routing-Puzzle und gehen keine Kompromisse ein.

  • Hochgeschwindigkeitssignale an zweiter Stelle: Dies sind diejenigen, bei denen Sie nicht zu viele Schichten überspringen möchten.


Ich lerne immer mehr dazu und würde mich über weitere Tipps freuen, auf die andere Designer gestoßen sind, also fügen Sie sie bitte hinzu.

Ich denke, ein guter Ausgangspunkt für ein kundenspezifisches PCB, das mit einem FPGA ausgestattet ist, sind die Referenzdesign-Boards des FPGA-Anbieters. Sie können diese Designs zum Beispiel für die Stromversorgung überprüfen, aber beachten Sie, dass Referenzdesign-Platinen manchmal zu klein sind. Wir hatten viele Probleme mit Xilinx ML605-Boards, die ihre Konfiguration aufgrund eines zu kleinen Netzteils verloren.

Antwort auf Omids Kommentar:

Einer meiner Kollegen implementierte einen systolischen Berechnungsalgorithmus auf einem Virtex-6 LXT240. Die Dateneingabe erfolgte über Gigabit-Ethernet. Aufgrund des systolischen Ansatzes tat das FPGA fast nichts, wenn keine Daten in den Eingangsfifos waren oder hauptsächlich alle Flipflops des FPGA mit 200 MHz getoggelten, wenn ein neuer Ethernet-Frame eintraf. Dieses Ungleichgewicht bei der Berechnung führte dazu, dass die Stromversorgungsschaltungen von TI die ML605-Platine abschalteten, die nur durch Umschalten des Hauptschalters aus diesem Zustand wiederhergestellt werden konnte.

Wir gaben dieses Design an die Fakultät für Elektrotechnik unserer Universität und sie fanden heraus, dass es keine Möglichkeit gibt, die Reglerkoeffizienten basierend auf den installierten Kondensatoren anzupassen.

Ja, man könnte sagen: schlechtes Design oder größere Fifos verwenden oder ...

Die Lösung meines Kollegen war eine reduzierte FPGA-Auslastung von 80%.

Dennoch sollten ein Prototyping-Board und ein Referenzdesign in der Lage sein, extreme Arbeitslasten zu bewältigen, insbesondere wenn dieses Board ein FPGA enthält, das nicht so regelmäßig Strom verbraucht wie eine CPU.

Können Sie erklären, was Sie mit "unterdimensioniert" meinen, worauf ich achten sollte?