FPGA - DIY-Programmierung

9

Ich programmiere seit einigen Jahren Mikrocontroller und habe gerade FPGAs entdeckt, nachdem ich an einem Kurs für digitales Design teilgenommen habe. Nachdem ich einige Nachforschungen über verschiedene FPGAs, Entwicklungsboards usw. angestellt habe, zögere ich immer noch, irgendwelche zu kaufen, da ich nicht wissen würde, wie ich meine eigene Version des endgültigen "Produkts" herstellen soll. Ich habe PICs, SAMs, AVRs usw. ohne Probleme auf benutzerdefinierten Leiterplatten installiert, daher mache ich mir darüber keine Sorgen - mein Hauptanliegen ist die Programmierung eines FPGAs ohne Herstellerplatine.

Meine spezielle Frage: Würde ein FPGA funktionieren, wenn ich die von Quartus, Vivado, iCEcube usw. generierte Bitmap-Datei auf einen SPI-Flash-Speicherchip schreiben würde, der bei Adresse 0 beginnt (z. B. über einen FT2232H), und den Flash-Speicher an anschließen würde die SPI-Pins eines FPGA (mit der richtig eingestellten MODE-Konfiguration)?

Ich entschuldige mich für die teilweise Hypothese; Ich bin mir ziemlich sicher, dass dies alles ist, was Lattices Diamond Programmer tut, aber ich habe mich gefragt, ob dieser Ansatz für FPGAs verschiedener Hersteller funktionieren würde oder ob Quartus dem Speicher beim Schreiben zusätzliche "Fensterdekoration" oder Header hinzugefügt hat.

Lassen Sie mich wissen, ob ich etwas tun kann, um die Frage zu verbessern / zu klären, oder ob mir ein wichtiger Punkt im FPGA-Programmierprozess fehlt. Vielen Dank!

Blake Lucas
quelle
Mit "Bitmap" meinen Sie Bit-Stream?
Eugene Sh.
Diese Frage wurde in einer anderen Inkarnation vor gestellt
Voltage Spike
1
Bei Ihrem ersten FPGA-Board-Design würde ich vorschlagen, zwei Methoden zur Geräteprogrammierung bereitzustellen (plus den JTAG-Header des Herstellers). Platzieren Sie die Jumperpositionen, damit Sie die MODE-Pins nach Bedarf ändern können. Es ist sehr einfach, diese durcheinander zu bringen, und es ist gut, Sicherungspläne zu haben. Stellen Sie außerdem sicher, dass Sie Testpunkte für INIT und DONE bereitstellen (oder was auch immer Lattice verwendet, um den Programmierstatus anzuzeigen).
Das Photon
2
Die Prozesssteuerung, die zum Mounten von BGAs erforderlich ist, insbesondere von BGAs mit hoher Pinanzahl, ist strenger als bei einem QFP. Die Tatsache, dass es mehr Bälle gibt, bedeutet, dass die Wahrscheinlichkeit von Überbrückungen oder schlechten Verbindungen höher ist. Da diese verborgen sind, können Sie Probleme (es sei denn, Sie haben eine Röntgenaufnahme) nicht erkennen, bevor Sie das Objekt ausführen, um festzustellen, ob Sie welche haben irgendwelche Probleme. Und wenn Sie die Komponente wieder montieren, müssen Sie sie neu zusammenstellen, was mehr Ausrüstung erfordert. FPGAs sind auch teure Chips, die Sie nicht beschädigen möchten. Bei großen BGAs werden Dinge wie Leiterplattenvorwärmer notwendig.
DKNguyen
1
Ich habe an einem Ort gearbeitet, an dem die Techniker den ganzen Tag nur nachgearbeitet haben und Heißluftstationen hatten (strengere Temperaturregelung und zuverlässiger als die Heißluftpistole), und sie waren nicht in der Lage, BGAs zuverlässig von Hand zu löten. Ich glaube nicht, dass sie einen Vorwärmer hatten. Wenn Sie ihn also ausprobieren möchten, besorgen Sie sich einen Vorwärmer und verwenden Sie einen billigen Chip (möglicherweise sogar ein DGA-BGA-Paket mit Daisy-Chain-Kette, damit Sie Ihre Verbindungen elektrisch überprüfen können, bis Sie ihn festgenagelt haben, bevor Sie das tun echte Sache).
DKNguyen

Antworten:

12

Ja, es würde gut funktionieren.

Mit den Entwicklungstools für die meisten FPGAs können Sie den externen Flash direkt über die FPT-eigene JTAG-Verbindung programmieren, sodass keine separate Programmierschnittstelle für den Flash erforderlich ist.

Dave Tweed
quelle
1
Und einige, wie Lattice Mach X02, haben den Blitz an Bord, sodass Sie nur ein paar Widerstände und einen 5x2-Header benötigen, um eine Verbindung zum Lattice-Programmier-Pod herzustellen.
Spehro Pefhany
Mir war bewusst, dass Sie den Flash direkt über JTAG mit Tools wie Vivado / Quartus programmieren können. Ich hatte gehofft, dies zu tun, ohne ein herstellerspezifisches Kabel kaufen zu müssen - verwenden Sie einfach einen FT2232H und schreiben Sie den Bitstream (nicht) Bitmap?) ich selbst. Ich glaube jedoch nicht, dass der Chip von Quartus unterstützt wird und von Vivado nicht offen unterstützt wird (obwohl sie auf den Nexys- und Basys-Boards verwendet werden).
Blake Lucas
1
Ja, Sie können den Flash mit der Bitdatei auf andere Weise programmieren. Einer Ihrer Programmierer für Ihre MCUs kann dies wahrscheinlich tun. Ich weiß, dass mein Segger J-Link das kann.
DKNguyen
@Toor: Das ist zwar kein herstellerspezifisches Kabel, aber es bietet immer noch fest codierte Unterstützung in den Hersteller-Tools, und der Segger ist ein bisschen teurer als ein FT2232H.
Ben Voigt
2
Nahezu alle großen Anbieter stellen technische Dokumentationen zur Verfügung, mit denen die ermittelten Upload-Bitstreams mit benutzerdefinierten Tools auf ihre Teile (sowohl FPGA- als auch benutzerdefinierte Konfigurationsblitze) übertragen werden können, da dies in integrierten Systemen oder Testgeräten manchmal wünschenswert ist. Es mag am einfachsten sein, die vom Hersteller unterstützten Geräte zu verwenden (insbesondere am Anfang), aber ich habe im Laufe der Jahre mehrmals Alternativen für bestimmte Projekte implementiert. Der schwierigere Teil eines ursprünglichen FPGA-Kartenprojekts kann die Unterstützung sein, die ein FPGA auf der Karte benötigt - viele Leistungspaare zum Routen und Umgehen, häufig für mehrere unterschiedliche Spannungen.
Chris Stratton
3

Wenn Sie "die von" generierte [sic] Bitmap [sic] -Datei "sagen, lautet die Antwort" Ja ", solange Sie die richtige auswählen. Sie haben einen leichten Fehler gemacht, indem Sie den bestimmten Artikel verwendet haben, da nicht nur eine Datei generiert wurde .

Beispielsweise kann Quartus SOF-, POF- und JIC-Dateien erstellen. Das letzte verwenden Sie für die indirekte Programmierung über das FPGA JTAG. Es wäre nicht sinnvoll, dies in den SPI-Flash zu schreiben. Das SOF dient zum Laden über JTAG, um Ihr Design vorübergehend im FPGA auszuführen. POF ist das, was Sie in den Flash-Chip laden müssen.

Unter FPGA: Bitstream vs. SRAM-Objektdatei finden Sie viele nützliche Informationen darüber, was die verschiedenen Dateien von den verschiedenen Anbietern bedeuten.

Ben Voigt
quelle
1

Würde ein FPGA funktionieren, wenn ich ... den Flash-Speicher an die SPI-Pins eines FPGAs anschließen würde (wobei die MODE-Konfiguration richtig eingestellt ist)?

Wenn ich Ihre Frage richtig verstehe, möchten Sie die FPGA-Konfiguration (z. B. Ihr kompiliertes HDL-Modell) in ein SPI-EEPROM oder SPI-Flash schreiben und möchten, dass sich das FPGA anhand der Daten auf dem SPI-IC selbst programmiert.

(Wenn ich die Antwort von Dave Tweed richtig verstehe, hat er Ihre Frage anders verstanden.)

Zumindest viele SPI-Flash-Speichergeräte würden NICHT funktionieren, da für SPI-Flash-Speicher-ICs eine bestimmte Wellenform (z. B. die zu lesende Adresse) gesendet werden muss, damit die Daten vom IC ausgelesen werden.

Diese Wellenform ist nicht für alle Flash-Speichergeräte gleich. Selbst wenn wir nur SD-Speicherkarten betrachten (die auch als SPI-Flash-Speicher verwendet werden können), finden wir zwei Varianten, bei denen eine andere Wellenform an die Karte gesendet werden muss, bevor die Karte die Daten ausliest.

Wenn die Modus-Pins des FPGA richtig eingestellt sind, sendet das FPGA eine Wellenform, die ein serielles Speichergerät anweist, die Daten zu senden. Da jedoch unterschiedliche ICs unterschiedliche Wellenformen erfordern, wird die Wellenform nicht von allen Flash-ICs verstanden, sondern nur von bestimmten Typen.

Ich weiß, dass Altera spezielle Flash- oder EEPROM-ICs herstellt, die mit ihren FPGAs kompatibel sind.

Martin Rosenau
quelle
Offensichtlich funktioniert eine SD-Karte nicht, da kein FPGA (meines Wissens) SD / MMC als Konfigurationsprotokoll unterstützt. Die meisten FPGAs halten sich an AT24 / AT26 / AT45.
Dmitry Grigoryev
1

Wenn Sie einen FPGA-Bitstream ohne die offiziellen FPGA-Programmiertools in den Flash schreiben möchten, möchten Sie diese Bitstream-Datei höchstwahrscheinlich in ein offenes Binärformat konvertieren, das Sie leicht lesen können, z. B. Raw Binary, Intel HEX oder Motorola SREC ( Beispiel ). Dadurch werden alle proprietären Header entfernt, die ein FPGA-Bitstream enthalten kann.

Auf diese Weise können Sie den Flash mit den Tools des Flash-Herstellers (oder Ihren eigenen Tools) programmieren oder sogar die mit Ihrem FPGA-Bitstream vorprogrammierten Flash-Chips bestellen.

Dmitry Grigoryev
quelle