Forum: FPGA, VHDL & Co. Lattice ICE40


von Martin (Gast)


Lesenswert?

Hi,

gibt es bei der ICE40hx1k Serie auch irgendwo eine vorgefertigte dual 
clock fifo wie bei Quartus II? Oder irgendetwas das sich relativ schnell 
damit verwenden lässt?

Verwende derzeit halt Altera und würde den Code gerne mal mit Lattice 
umsetzen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Martin schrieb:
> gibt es bei der ICE40hx1k Serie auch irgendwo eine vorgefertigte dual
> clock fifo wie bei Quartus II?
Du vergleichst hier Kraut und Rüben: einen Baustein von Hersteller L 
mit der Toolchain vom Hersteller I. Das ist unsinnig.

Du musst dir einfach mal die im Baustein verfügbare Hardware darauf hin 
ansehen, ob dort ein RAM mit unabhängigem Schreib und Lese-Port 
vorhanden ist. Wenn ja, dann kannst du so einen Fifo implementieren. 
Kurze Drübersicht übers Datenblatt: mit dem sysMEM Block kannst du einen 
Fifo aufbauen. Und jetzt musst du nur noch schauen, wie du so einen 
Block instantiieren kannst/musst.

Da nimmst du dann den "FPGA Libraries Reference Guide" von Lattice her, 
und findest dort ohne langes Suchen einen FIFO_DC, der das tut, was du 
willst. Und mit ein wenig Recherche findest du auch eine TN1250, in dem 
so ein Memory-Block mal genauer beschrieben wird.

In anderen Worten: du machst Hardware. Dazu musst du deren Verhalten 
kennen. Und dazu musst du die Datenblätter, Appnotes und Technical Notes 
ansehen und verstehen. Sonst hast du irgendwann mal "seltsames" 
Verhalten und wirst den Fehler nicht finden.

: Bearbeitet durch Moderator
von P. K. (pek)


Lesenswert?

Wenn immer Du IPs eines bestimmten Providers benutzt, kommst Du nicht 
darum herum, diese neu zu generieren sobald Du den Anbieter wechselst.

Es sei denn Du verwendest synthetisierbare Beschreibungen, welche die 
IPs nicht instanzieren sondern inferieren. Zumindest für Altera unD 
Xilinx geht das, auch für Dual-Clock-RAM (Beispiele für Code dazu bieten 
beide Anbieter, diese mit einem Codestück zu erschlagen ist manchmal 
tricky).

Vorteil: Du migrierst Problemlos von Anbieter zu Anbieter, wenn Du die 
Vorarbeit mal gemacht hast.
Nachteil: In der Regel kannst Du mit der Inferierungs-Methode nicht den 
ganzen Funktionsumfang eines einzelnen IPs jedes Anbieters ausnutzen.

: Bearbeitet durch User
von Martin (Gast)


Lesenswert?

Danke für die Antworten soweit.


Bezüglich FPGA Libraries Reference Guide das hatte ich gesehen, aber 
dort wird nichts von den ICE40ern erwähnt, es steht dort wohl dabei 
welche Bauteile unterstützt werden.
Was dort steht ist wohl in der Lattice Diamond IDE komfortabel 
integriert, bei IceCube2 muss man wohl mehr Hand anlegen.
Die IceCube2 Umgebung ist derzeit noch etwas ungewohnt für mich, da ich 
mich bis jetzt nur etwas in Quartus II eingelernt habe.
Das die ICE40er Dual Port unterstützen habe ich ja schon vorher gelesen 
und deshalb versuch ich mich dort auch einzulernen.

Ich schau mal wie weit ich dort komme.

von Holger (Gast)


Lesenswert?

Martin schrieb:
> Das die ICE40er Dual Port unterstützen habe ich ja schon vorher gelesen

http://www.latticesemi.com/~/media/LatticeSemi/Documents/ApplicationNotes/MO/MemoryUsageGuideforiCE40Devices.pdf?document_id=47775

Figure 2. sysMEM Embedded Block RAM

Gruss Holger.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.