benutzerdefinierte FPGA PCB Design-Tipps

9

Ich plane, eine benutzerdefinierte FPGA-Platine zu entwerfen. Die Platine enthält Sensoren. Ich muss die Ausgabe der Sensoren lesen und sie im Prozessor verarbeiten. Ich habe viele Projekte mit FPGAs abgeschlossen, aber dies wird mein erstes benutzerdefiniertes Design sein, bei dem ich auch die Hardwarekonfiguration berücksichtigen muss. Ich habe in letzter Zeit Nachforschungen angestellt, aber es fällt mir immer noch schwer, von einem Punkt aus zu beginnen. Deshalb bitte ich Sie, mir und anderen Personen, die ihr benutzerdefiniertes FPGA entwerfen möchten, 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 es nutzen können.

omid
quelle
Vielleicht sollten Sie die physische Größe des FPGA, das Sie verwenden
möchten
Diese sind noch nicht spezifiziert. Vielleicht war meine Frage unklar, aber ich suche eine Richtlinie.
Omid
OK Fair genug.
Dzarda
Diese Frage scheint nicht zum Thema zu gehören
Roh
4
Die große Frage ist, ob Sie bereit sind, ein BGA-Paket zu verwenden, oder ob Sie sich auf die Teilmenge der Angebote (und die reduzierte elektrische Leistung) beschränken möchten, die in handarbeitsfreundlichen TQFP-Paketen verfügbar sind. Hoffen Sie als nächstes, dass alle Ihre Vorräte und Signale auf zwei Ebenen geleitet 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 wollten Sie die interne Logik takten? Haben Sie ein rauschempfindliches Analog? Haben Sie darüber nachgedacht, ein Tochterboard für die Verwendung mit einem vorhandenen FPGA-Board zu erstellen?
Chris Stratton

Antworten:

11

In meiner Firma haben wir zuvor einige benutzerdefinierte FPGA-Karten entworfen und seit kurzem kommerzielle Standard-FPGA-Karten ("COTS") mit benutzerdefinierten FMC-Tochterplatinen verwendet.

Prototyp Stadium

Wenn Sie sich noch in der frühen Phase der Projektdefinition befinden, planen Sie den Kauf von mindestens einer COTS-FPGA-Karte für das Prototyping. Sie können einen Ihrer Sensoren an die E / A-Header anschließen und einen schnellen Proof-of-Concept durchführen. Auf diese Weise 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 den Job nicht geeignet sind, können Sie zu diesem Zeitpunkt problemlos ein anderes COTS-FPGA austauschen. (Nun, nicht einfach, aber zumindest überschaubar ...)

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

Benutzerdefinierte FPGA-Karte im Vergleich zu handelsüblicher FPGA-Karte

Das Entwerfen einer benutzerdefinierten FPGA-Karte ist sinnvoll, wenn das Projekt einen kurzen Lebenszyklus und ein hohes Volumen aufweist oder einen kleineren Formfaktor erfordert, als dies mit COTS-FPGA-Karten und PMOD- oder FMC-Zusatzkarten möglich ist.

Wenn der Projektlebenszyklus die Produktlebensdauer eines DDR-Speicherchips (einige Jahre) überschreitet, ist das Entwerfen einer benutzerdefinierten FMC-Tochterplatine möglicherweise die bessere Alternative.

Die Kosten sind ein Faktor bei dieser Entscheidung. Die meisten COTS-FPGA-Karten sind eher universell einsetzbar und auf maximale Flexibilität ausgelegt. Wenn Sie ein hochvolumiges, kostensensitives Produkt herstellen, lohnt es sich wahrscheinlich, ein individuelles Design zu erstellen. Bei geringer Lautstärke ist es jedoch wahrscheinlich besser, sich auf die Erstellung 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-E / A-Pins auf oberster Ebene und dem Rest der Karte und an der Anschlussschnittstelle zwischen den Karten. Dies sind Orte, an denen Pin-Positionen, interne Netznamen und externe Netznamen manchmal nicht übereinstimmen und ausgetauscht werden. Eine Tabelle ist eine ausreichende Dokumentation; Stellen Sie sicher, dass diese Schnittstellentabelle versioniert und unter Quellcodeverwaltung ist. Drucken Sie vor dem Senden von PCB-Dateien an die Fertigung 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 sollte.

Für Steckverbinder habe ich gelernt, wie schwierig es ist, eine mechanische "Systemzeichnung" bereitzustellen, die sowohl Platinen als auch passende Steckverbinder in einer einzigen, dimensionierten Zeichnung zusammen zeigt. Ich wurde zuerst von einem VME-Steckverbindersystem verbrannt, bei dem Pin "A1" an einem Steckverbinder nicht Pin "A1" am anderen Steckverbinder zugeordnet war. Ich habe auch Designer vergessen sehen, 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.

Benutzerdefinierte FPGA-Board-Tipps

Beginnen Sie mit dem "Referenzdesign" des FPGA-Herstellers 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, weniger PCB-Schichten zu verwenden. Achten Sie auf den Ebenenstapel (häufig neben der Bohrzeichnung). Bei Komponenten mit feiner Teilung wird normalerweise 0,5 Unzen Kupfer anstelle der Standarddicke von 1 Unze Kupferfolie verwendet.

Das BGA-Paket ist ein Problem. Die Ausbeute ist niemals so gut wie bei TQFP- oder TQFN-Paketen, und eine Überarbeitung eines BGA ist nahezu unmöglich. Selbst die Überprüfung auf Montageprobleme erfordert einen Röntgenbildgeber. Stellen Sie sicher, dass Sie einen Auftragsfertigungsdienstleister verwenden, dem Sie vertrauen.

Netzteile sind bei der Arbeit mit FPGA-Karten immer schwierig. Der tatsächliche Strombedarf des FPGA hängt sehr stark vom Konfigurationsbitstrom ab. Xilinx bietet ein "Power Estimator" -Tool, das jedoch nur gültig ist, wenn die Firmware vollständig ist. Bei einer Firmware-Änderung in letzter Minute besteht das Risiko, dass der Strombedarf höher ist als erwartet. Planen Sie, eine gewisse Versorgungsmarge zu belassen. Wenn die anfängliche Leistungsschätzung besagt, dass Sie 560 mA benötigen, verwenden Sie einen 1000-mA-Regler. Der zusätzliche verfügbare Ausgangsstrom schadet nicht, aber ein unzureichender Ausgangsstrom führt zu einem fehlerhaften Systemverhalten.

Wenn nicht festgeschriebene FPGA-Pins vorhanden sind, bringen Sie so viele wie möglich in einen Header. Wenn ein Problem auftritt, werden diese nicht festgeschriebenen Pins zu einer wertvollen Diagnoseressource für die Prüfung von Signalen im FPGA.

MarkU
quelle
11

Ich habe über ein Dutzend FPGA-basierte Karten entwickelt, die eine breite Palette verschiedener Arten von FPGAs verwenden, von Lattice Mach X02 mit geringem Stromverbrauch bis zu Hochleistungs-Virtex 6 mit 24 SERDES-Kanälen. Die normalen Schritte, denen ich folge, sind:

Suchen Sie ein COTs-Board (ähnlich wie MarkU) und erhalten Sie eine ungefähre Vorstellung von den internen FPGA-Ressourcen, die Sie benötigen. Insbesondere achte ich auf:

  • Anzahl der LUT (Tabelle nachschlagen):(Passt das Design in die LUTs auf der Referenzplatine?) Wenn Sie nicht über die Ressourcen oder eine umfassende Methode verfügen, um eine genaue Schätzung der LUT-Nutzung zu ermitteln (<1K LUT-Genauigkeit), 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 suchen Sie ein FPGA mit mindestens 30% mehr LUTs. Wenn das Design nicht fast fertig ist, können Sie bis zu 50% oder 100% mehr LUTs verwenden. Wenn das Design in 9K-LUTs passt, stellen Sie sicher, dass Sie ein FPGA mit 12K-LUTs oder höher verwenden. Ich neige dazu, zu viel zu tun und würde wahrscheinlich bis zu 25.000 LUTs erreichen. Dies erspart Ihnen später unerträgliche Kopfschmerzen. Wer dieses Board-Design in Auftrag gibt, sollte verstehen, dass es mehr als eine Drehung dieses Designs geben sollte, damit es verständlich ist, die erste Version des FPGA zu überdimensionieren.
  • BRAM (Block RAM count):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 wird aus verschiedenen Gründen (ROMs, FIFOs usw.) häufig Block-RAM verwendet. Bei einem Design ging mir der Blockspeicher aus und ich habe versucht, verteiltes RAM zu verwenden (wobei die LUTs als RAM verwendet wurden) ) und es hat alle meine LUTs sehr schnell aufgefressen. Es ist wichtig zu bestimmen, ob Sie externen Speicher benötigen. Dies birgt ein hohes Risiko für Designs, denn wenn das Design ein Leistungsniveau erfordert, können Sie
  • Führen 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), möglicherweise Spannungseinschränkungen aufweisen. Lesen Sie die Benutzerhandbücher durch und stellen Sie sicher, dass alle diese Standards unterstützt werden.
  • Anforderungen an die Stromversorgung:Ich sympathisiere mit all den früheren Problemen mit untergroßen Netzteilen, bei denen die angegebene Kernspannung Tuff ist. In letzter Zeit habe ich viele TI Nano-Module für die großen, aber Low-End-FPGAs (Spartan LX45 (T) - LX75 (T) verwendet. und Gitter ECP3). Glücklicherweise können Sie einige der Risiken bei der Dimensionierung der für die E / A verwendeten Netzteile verringern. Insbesondere wenn diese Bank keine unbekannte Quelle (Erweiterungsanschluss) ansteuert, ist der Prozess wie folgt: Suchen Sie alle Komponenten, an die diese Bank angeschlossen wird, bestimmen Sie die Eingangskapazität für alle diese Komponenten und ermitteln Sie die maximale Taktrate Wenn diese Signale angesteuert werden, 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 muss Ihr FPGA ansteuern (für jedes Signal!). Sie können die Worst-Case-Schätzung darüber ermitteln, wie viel Leistung erforderlich ist, um alle Ausgangssignale anzusteuern.

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

Ich habe in letzter Zeit auch immer häufiger das TI Webbench-Tool mit viel Erfolg verwendet:

TI Webbench (Ich arbeite nicht für TI)

Schema:

  • Richten Sie Ihren Schaltplan mit Blick auf einen Idioten ein Sie und alle HDL-Designer werden viel auf diesen Schaltplan zurückkommen. Machen Sie es also jedem leicht, schnell zu finden, was er benötigt, ohne dass Sie oder sie in Zukunft den gesamten Schaltplan recherchieren müssen, um dies herauszufinden wenn Pin 20 der Takteingang ist. Dies beinhaltet viele Hinweise zum Schaltplan (falls möglich), beschreibt den Zweck einer Schaltung, das erwartete Ergebnis und sogar Bedenken. Da FPGAs in Banken unterteilt werden können, sollten Sie die FPGA-Komponente in mehrere Teile aufteilen und möglicherweise sogar eine gesamte Schaltplanseite für eine einzelne Bank reservieren.

  • PUT RIESIGE STÖRENDE ANMERKUNGEN IN IHREM SCHEMA ÜBER DAS ANBRINGEN VON UHREN AN DEN RICHTIGEN PINS: Ich habe meinen Kopf gegen viele Wände geschlagen, als ich mein erstes Bild für das Design erstellt habe, und das gefürchtete "Taktsignal" auf einen nicht taktfähigen Pin geleitet bekommen. . Lebe 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 vorgesehen sind. Andernfalls 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 sind nur 15 Personen erforderlich, um sicherzustellen, dass Sie es nie wieder tun.

  • Verbringen Sie viel Zeit mit dem FPGA-Konfigurationsdesign: Stellen Sie sicher, dass Sie die JTAG-Pins herausziehen, auch wenn Sie nicht vorhaben , sie zu verwenden. Es ist der Unterschied zwischen einem funktionsfähigen Fehler und einem schwerwiegenden Fehler.

  • Wenn Sie Zweifel haben, bringen Sie zusätzliche Signaltasten, LEDs und DIP-Schalter heraus: Ich habe viel über die zusätzliche Arbeit nachgedacht, die mit dem Weiterleiten zusätzlicher Signale an Breakout-Header-LEDs, DIP-Schalter und Tasten verbunden ist, aber es hat IMMER geholfen.

Layout :

  • Kommunizieren Sie frühzeitig mit dem Fab-Haus: Insbesondere wenn Sie ein impedanzgesteuertes Routing benötigen, fordern Sie einen Layer-Stack für die gewünschte Layer-Anzahl an. Es ist viel einfacher, Hochgeschwindigkeitssignale zu routen, wenn Sie die Spurenbreiten zuerst definiert haben, um herauszufinden, dass Sie 6-mil-Spuren anstelle von 8-mil-Spuren 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 Small Caps unter dem FPGA oder in der Nähe der Pins. Die größeren außerhalb des FPGAs verlegen einen gesamten Stromversorgungskreis und platzieren ihn ungefähr dort, wo ich ihn erwartet habe. Auf diese Weise kämpfen Sie nicht gegen das Routing-Puzzle und machen keine Kompromisse.

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


Ich lerne immer mehr Dinge und würde mich über andere Tipps freuen, die anderen Designern begegnet sind. Fügen Sie sie also bitte hinzu.

Dave
quelle
6

Ich denke, ein guter Ausgangspunkt für eine kundenspezifische Leiterplatte, die mit einem FPGA ausgestattet ist, sind die Referenzdesignkarten des FPGA-Herstellers. Sie können diese Designs beispielsweise auf das Netzteil überprüfen. Beachten Sie jedoch, dass Referenzdesign-Boards manchmal zu klein sind. Wir hatten viele Probleme mit Xilinx ML605-Karten, die aufgrund eines zu kleinen Netzteils die Konfiguration verloren haben.

Antwort auf den Kommentar von omid:

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 sich keine Daten in den Eingangs-Fifos befanden oder hauptsächlich alle Flip-Flops des FPGA mit 200 MHz umschalteten, wenn ein neuer Ethernet-Frame eintraf. Dieses Ungleichgewicht bei der Berechnung führte dazu, dass die TIs-Stromversorgungskreise die ML605-Karte abschalteten, was nur durch Umschalten des Hauptnetzschalters aus diesem Zustand wiederhergestellt werden konnte.

Wir haben dieses Design dem Fachbereich Elektrotechnik unserer Universität übergeben und sie haben herausgefunden, 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 meiner Kollegen war eine um 80% reduzierte FPGA-Auslastung.

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

Paebbels
quelle
Können Sie erklären, was Sie unter "zu klein" verstehen, das ich beachten sollte?
Omid