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!
quelle
Antworten:
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.
quelle
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.
quelle
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.
quelle
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.
quelle