Hallo, ich bin dabei mich in die FPGA Welt einzuarbeiten. Dazu würde ich gerne einige kleinere Projekt, die ich eigentlich eher mit einem AVR bestückt hätte, stattdessen mit einem kleinen FPGA realisieren (zu Übungszwecken, nicht weil es sinnvoller ist). Für die komplexeren Aktionen würde ich dabei gerne zusätzlich zu reiner Logik auf einen Softcore zurückgreifen. Wenn ich mir den Mico8 Core ansehe, der auf einem MachXO2 in minimaler Ausführung keine 200 LUTs benötigt, dann spricht doch eigentlich nichts dagegen, diesen auch auf einem iCE40, bspw. dem ICE40LP1K mit 1280 LUTs zu verwenden. Für den Programmspeicher des Softcores müsste ich halt noch bspw. ein externes EEPROM verwenden, aber für den reinen Core müsste der kleine FPGA doch auch reichen, oder? Gibt es vielleicht etwas, dass ich nicht bedacht habe? Danke im Voraus!
:
Bearbeitet durch User
Nein es spricht nichts dagegen. Allerdings ist der iCE40 mit seinem außen angeflanschten Konfigurationsspeicher nicht ganz so problemlos handhabbar wie der MachXO2. Die Dinger sind zwar preiswerter, mir gefielen sie aber schon deswegen nicht, weil sie immer zwei Spannungen brauchen. Für den Programmspeicher könntest du allerdings einen Flash-Bereich benutzen. Für Massenproduktion ist das Teil schön, für Kleinserien und Versuche eher nicht. Ist aber Ansichtssache.
Vielen Dank für deine Antwort! Bürovorsteher schrieb: > mir gefielen sie aber schon deswegen > nicht, > weil sie immer zwei Spannungen brauchen stimmt, danke für den Hinweis! Bürovorsteher schrieb: > Für den Programmspeicher könntest du allerdings einen Flash-Bereich > benutzen. gute Idee, danke!
Geht nicht direkt. Der Mico8 implementiert seine 16 Register im Distributed RAM. Der ICE40 unterstützt das nicht. Der Programmspeicher lässt sich auch nicht optimal abbilden da die Befehle 18bit breit sind. Die EBR des ICE40 lassen sich im Gegensatz zu XO2 nicht ohne Verschnitt 18bit breit konfigurieren.
Lattice User schrieb: > Der Mico8 implementiert seine 16 Register im Distributed RAM. Der ICE40 > unterstützt das nicht. Gut, aber 16 * 8 Bit dürfte sich ja auf den ICE40 trotzdem gut über EBR abbilden lassen, zur Not in der Größenordnung sogar direkt über Logic Cells, falls Ersteres knapp wird, oder? Lattice User schrieb: > Der Programmspeicher lässt sich auch nicht optimal abbilden da die > Befehle 18bit breit sind. Die EBR des ICE40 lassen sich im Gegensatz zu > XO2 nicht ohne Verschnitt 18bit breit konfigurieren. Das ist ein interessanter Hinweis, danke! Was ich mir (wahrscheinlich wieder zu naiv) initial überlegt habe ist aber Folgendes: Ich benötige für den ICE40 ja sowieso einen Konfigurationsspeicher, da er - anders als bspw. der MACHXO2 - über keinen integrierten Flash für die Konfiguration verfügt. Wenn ich den Speicher entsprechend dimensioniere, müsste ich doch diesen Baustein auch direkt für den Programmspeicher nutzen können. Was meinst Du dazu?
Janis E. schrieb: > Wenn ich den Speicher entsprechend dimensioniere, > müsste ich doch diesen Baustein auch direkt für den Programmspeicher > nutzen können. Was meinst Du dazu? Prinzipiell ja, allerdings muß Dir das FPGA nach erfolgter Konfiguration Zugriff auf die Pins geben. Ob und wie das beim gewählten Baustein funktioniert, siehst Du im Datenblatt. Duke
Janis E. schrieb: > Lattice User schrieb: >> Der Mico8 implementiert seine 16 Register im Distributed RAM. Der ICE40 >> unterstützt das nicht. > > Gut, aber 16 * 8 Bit dürfte sich ja auf den ICE40 trotzdem gut über EBR > abbilden lassen, zur Not in der Größenordnung sogar direkt über Logic > Cells, falls Ersteres knapp wird, oder? Als Register ist es teuer, 16 * 8 sind 128 LE, dazu kommt noch Addressierung und Multiplexer zu lesen. EBR geht natürlich, wober aber zu beachten ist, dass 2 benötigt werden. Die Register im Mico8 sind als triple Port RAM ausgeführt, ein Port zum Schreiben, 2 Ports zum Lesen verbunden mit den beiden Eingängen der ALU. Implementiert ist das einfach als 2 parallele DualPort RAMs. Braucht auf dem MachXO2 das equivalent von 24 LUTs (12 Slices als distrubutet RAM konfiguriert. > > Lattice User schrieb: >> Der Programmspeicher lässt sich auch nicht optimal abbilden da die >> Befehle 18bit breit sind. Die EBR des ICE40 lassen sich im Gegensatz zu >> XO2 nicht ohne Verschnitt 18bit breit konfigurieren. > > Das ist ein interessanter Hinweis, danke! Was ich mir (wahrscheinlich > wieder zu naiv) initial überlegt habe ist aber Folgendes: Ich benötige > für den ICE40 ja sowieso einen Konfigurationsspeicher, da er - anders > als bspw. der MACHXO2 - über keinen integrierten Flash für die > Konfiguration verfügt. Wenn ich den Speicher entsprechend dimensioniere, > müsste ich doch diesen Baustein auch direkt für den Programmspeicher > nutzen können. Was meinst Du dazu? Der externe Flash ist ein SPI Flash, d.h. direkt geht da gar nichts, und indirekt ist es sehr langsam, mindestens 56 Takte wenn bei jedem Zugriff die Addresse übertragen wird (das lässt sich auf 24+ reduzieren wenn man ausnutzt dass meistens sequentiell gelesen wird. Alternativ kann man den ROM auch einfach in LUTs implementieren, (1 LUT pro 16 bit programmspeicher, also etwas mehr als eine LUT pro Instruction)
Da ich mich in den letzen Wochen intensiv mit den ICE40 FPGAs beschäftigt habe, hier ein paar Anmerkungen: - Die ICE40 FPGAs haben durchaus einen internen Konfigurationsspeicher, dieser lässt sich aber nur einmal beschreiben (OTP), so dass zum Entwickeln ein externes SPI Flash benötigt wird. Normalerweise entwickelt man sowieso mit einem gekauften fertigen Board (z.B. Lattice's Breakout-Board), da ist Programmer und externes Flash schon drauf. - 18bit breites RAM lässt sich mit 9 parallelen Block-RAMs à 2048 x 2 Bits erzeugen. Ergibt dann ein 2k x 18 RAM. Da 16 Blocks vorhanden sind kann man gut noch 2 für die Register spendieren. - Dass 2 Spannungen benötigt werden ist dank dualen Spannungsreglern kein grosses Problem, man braucht dann wirklich nur einen Kondensator mehr, und davon hat man sowieso eine ganze Menge auf einem FPGA Print. Der Strombedarf dieser FPGAs is so klein dass schon kleine SOT Spannungsregler reichen. Falls du es also schaffst den Mico8 auf dem ICE40 zu portieren würde mich das auch sehr interessieren. Ich arbeite derzeit an meinem eigenen kleinen Softcore... Per Gooogle findest du auch eine ZPU Implementation für den ICE40, die benötigt allerdings relativ viele LUTs. Andi
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.