Forum: FPGA, VHDL & Co. Board mit iCE40 und SDRAM


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Martin G. (moring)


Lesenswert?

Moin allesamt,

ich bin auf der Suche nach einem Dev-Board mit iCE40 und SDRAM. Genauer 
gesagt:
* der FPGA soll komplett mit Open-Source-Tools synthetisierbar und 
programmierbar sein. Soweit ich weiß, trifft das aktuell nur auf iCE40 
zu.
* es soll viel RAM auf dem Board sein, in einer Größenordnung, wie man 
ihn nur bei SDRAM und nicht bei SRAM findet. Wenn möglich, DDR-SDRAM.

Randbedingungen:
* die Open-Source-Toolchain ist ein "muss" im Sinne dieser Frage, da ich 
ansonsten zig Boards zur Auswahl hätte und nicht fragen müsste.
* Boards mit 8 MBit SRAM habe ich gefunden, aber das ist mir zuwenig. 8 
MByte sollten es minimum sein.
* das Interface zum SDRAM direkt in Verilog (ohne MIG o.ä.) zu bauen ist 
kein Problem, das habe ich schonmal gemacht.

Vielen Dank vorab.

von abc (Gast)


Lesenswert?

Mit Xilinx Artix soll das inzwischen auch gehen. Bitte halte uns auf dem 
Laufenden.

von Christian T. (christian_t)


Lesenswert?

Du kannst auch nach Boards mit dem Lattice ECP5 FPGA gucken, zB 
https://radiona.org/ulx3s/

Auf https://symbiflow.github.io/ gibt es eine Übersicht von Open Source 
Tools und den unterstützen FPGAs.

von Martin G. (moring)


Lesenswert?

Vielen Dank schon mal für die Antworten.

Die Unterstützung für Xilinx 7 ist laut deren Website sehr rudimentär. 
Außerdem gibt es glaube ich noch keine Abschätzung, ob man da rechtlich 
eine Chance gegen Xilinx hat bzw. wie deren Haltung zu dem Projekt ist. 
Bei Lattice ist zumindest von IceStorm bekannt, dass es geduldet wird.

Die ECP5-Unterstützung sieht aber interessant aus. Da gibt es zwar auch 
noch Lücken in der Unterstützung von FPGA-Features, aber z.B. DDR-I/O 
wird angeblich schon unterstützt. Das könnte also klappen.

Wenn doch noch jemand ein entsprechendes ICE40-Board findet, immer her 
damit :)

von Stephan N. (someone_like_you)


Lesenswert?

Also wenns auch ein ECP5 sein darf, dann vielleicht das OrangeCrab?
https://github.com/gregdavill/OrangeCrab

Ist aber wohl nicht so ganz billig...

von la6m (Gast)


Lesenswert?

Den OrangeCrab gibt es hier:
https://1bitsquared.de/products/orangecrab

von Gerd E. (robberknight)


Lesenswert?

Nicht ganz die gewünschten 8 MByte SDRAM, sondern nur 2, dafür aber 
hübsch billig:

Colorlight 5A-75B
https://github.com/q3k/chubby75/tree/master/5a-75b

Gibt es für etwa 20 EUR inkl. Versand bei Aliexpress.

Man braucht noch ein JTAG-Interface, z.B. einen mit FTDI, und wenn man 
Inputs möchte, muss man die installierten Levelshifter runterlöten. Ist 
aber nen nettes Board zu spielen. Der ECP5 ist deutlich mächtiger als 
die ice40 und genauso problemlos mit yosys+nextpnr zu verwenden.

von Martin G. (moring)


Lesenswert?

Hier mal ein Zwischenstand:

Das OrangeCrab liegt vor mir. Das mitgelieferte LED-Hello-World sowie 
ein eigenes, welches auch Block-RAM benutzt, laufen sauber. Das heißt, 
die Toolchain (Yosys, Nextpnr/Trellis usw.) funktioniert.

Dieses Board ist, verglichen mit dem was ich sonst kenne (XESS und 
Spartan 3E Starter Kit), sehr benutzerfreundlich:
- man muss nicht erst einen langwierigen Lizenzprozess für die Toolchain 
durchlaufen und diese funktioniert um Welten besser
- Verbindung mit dem PC geht über ein Micro-USB-Kabel
- Man braucht keine weitere Stromversorgung, USB reicht
- Keine weiteren Kabel (z.B. JTAG) nötig. Man versetzt das Board beim 
Anschließen per Knopf-halten in den Programmiermodus und lädt den 
Bitstream dann per USB runter
- Das Programm für die Bitstream-Übertragung ist bei der Toolchain mit 
dabei, man muss es nicht erst selbst compilen und man muss auch nicht an 
irgendwelchen "cable drivers" rumfrickeln, die dann nur ab und zu 
funktionieren
- Der Programmiermodus und der Upload werden durch verschiedene 
Blinkmuster der LED signalisiert
- der Bitstream wird grundsätzlich in den Flash geschrieben und ist dann 
später beim Power-on da (z.B. später nur USB an der Steckdose). Dafür 
muss man keine Extraschritte durchführen. Flashen dauert natürlich etwas 
länger als nur den FPGA zu programmieren, aber das geht in der 
Gesamtzeit des Buildprozesses (Synthese + PNR) unter.

Nachteile:
- der Preis ist sicher für einige zu hoch. Er ist aber vermutlich für 
die Materialkosten, Fertigungskosten und den Aufwand des Erbauers 
gerechtfertigt. Persönlich hoffe ich, dass das Board Erfolg hat und der 
Preis noch runtergeht.
- man hat wenig Peripherie (1 LED, 1 Button, USB, RAM, Flash, SD, kann 
sein dass ich noch was vergessen habe). Alles weitere muss man selbst 
dranlöten, was für den löt-Unerfahrenen natürlich die Gefahr birgt, bei 
einem Fehler >100€ zu schrotten.
- den FPGA Programmieren geht out of the box nur, indem man das Kabel 
abzieht und wieder einsteckt, um den Programmiermodus zu aktivieren. 
Grund ist, dass man bei einem eigenen Design den Pushbutton ja 
anderweitig verwenden will. Da ich den Button nicht brauche (ich will da 
PS/2 Keyboard und VGA dranbringen), werde ich langfristig eine Brücke 
bauen, so dass der Pushbutton auch ohne Einstecken den Programmiermodus 
aktiviert.
- für den Preis kommt das Board ohne Gehäuse oder auch nur "Füße" / 
Abstandhalter und ist dementsprechend etwas empfindlich in der 
Handhabung. Für den Versand war es aber gut gepolstert und 
ESD-geschützt.

Und zwei kleine Stolpersteine mit der Toolchain, die ich vor allem hier 
hinschreibe, falls noch jemand drüber stolpert:
- es gibt eine unverständliche Fehlermeldung, wenn das Design zu groß 
für den FPGA ist ("could not expand" oder sowas)
- es werden keine Initialwerte für die Ausgaberegister von Block-RAMs 
unterstützt. Die habe ich nie gebraucht und werde ich auch vermutlich 
nie, aber mein Verilog-Generator hat sie routinemäßig rausgehauen, was 
dann dazu führt, dass das Design nicht auf Block-RAMs gemappt werden 
kann, stattdessen Distributed RAM benutzt und in den Fehler für ein zu 
großes Design rennt.

Fazit: Das OrangeCrab ist super und kann ich nur weiterempfehlen!

Erfahrungsberichte mit dem DDR3-SDRAM und der entsprechenden 
Unterstützung in den I/O-Blocks des FPGA kommt dann, wenn ich soweit 
bin.

von Moscon (Gast)


Lesenswert?

Gerd E. schrieb:
> hübsch billig:
>
> Colorlight 5A-75B
> https://github.com/q3k/chubby75/tree/master/5a-75b

Was spräche denn dagegen diese boards zu kaskadieren? Die müssen nur nur 
an denselben Bus und einen ADR-Code haben, so wie wir das früher mit 
RAMs gemacht haben.

@TE:  Ich wäre in diesem Fall eher für SRAM wegen des Zugriffs und des 
Wegfalls der Notwendigkeit eines Controllers.

Für eigene Zwecke habe ich mir vor Jahren einst einen RAM-Stapel gebaut, 
der 32 SRAMs für PLDs verschaltet hatte. Die ADR wurde parallel oder 
über ALE vorgegeben. Lief dann als nichtflüchtiger Speicher an einemCPU 
System. Zugriff: 100 MHz 2 wait states als pipeline. Der RAM-Stapel war 
per Batterie gepuffert und funktionierte wie eine Festplatte.

von Martin G. (moring)


Lesenswert?

> @TE:  Ich wäre in diesem Fall eher für SRAM wegen des Zugriffs und des
> Wegfalls der Notwendigkeit eines Controllers.
>
> Für eigene Zwecke habe ich mir vor Jahren einst einen RAM-Stapel gebaut,
> der 32 SRAMs für PLDs verschaltet hatte. Die ADR wurde parallel oder
> über ALE vorgegeben. Lief dann als nichtflüchtiger Speicher an einemCPU
> System. Zugriff: 100 MHz 2 wait states als pipeline. Der RAM-Stapel war
> per Batterie gepuffert und funktionierte wie eine Festplatte.

Es übersteigt definitiv meine Fähigkeiten, SRAM (oder sonst irgendwas) 
so zu kaskadieren, dass ich da noch 100 MHz rausholen kann. Beim 
OrangeCrab ist die Verkabelung schon auf dem Board. Der Controller ist 
ja nur noch Software (oder wie man scheinbar jetzt sagt, "Gateware"), 
das kann ich besser. Die Anbindung vom DDR(1)-SDRAM auf dem S3E-Starter 
war wie gesagt kein Problem und die paar Logikblöcke für den Controller 
investiere ich gern dafür.

Außerdem hat der RAM beim OC eine Größe von 1 GBit. Wenn man das mit 
SRAM nachbaut, geht das ja auch ganz schön ins Geld ;)

Nebenbei: Der Controller für DDR3 ist, wie ich gerade lernen muss, nicht 
mehr ganz so einfach zu bauen, deshalb gebe ich, sobald er läuft, auch 
gerne ein paar Tipps an Nachahmer.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.