Hallo zusammen, die Frage vorab: Ist es wirklich wahr, dass es bei den MAX10-FPGAs im Compact Mode (also z. B. ein 10M08SC - das "C" ist wichtig) nicht möglich ist, ein initialisiertes RAM bzw. ein ROM zu realisieren? Hintergrund: Ich mache nur gelegentlich FPGAs, habe bisher Cyclone II und III kennen gelernt, und dort war es ganz selbstverständlich, dass sowohl ROMs als auch als vorinitialisierte RAMs möglich waren. Nun gibt es die MAX10, die ich für vergleichsweise genial halte: Nur eine Betriebsspannung (Option), kein externes Config-Device, alternativ mit ADC und reichlich FLASH... dazu preiswert... neue Besen kehren gut! So habe ich ein 10M08SC vorgesehen und brauche auch hier selbstverständlich ROMs, auch hier mehrere. Das scheint aber gar nicht möglich zu sein: Der Compiler meint: ID:16031 Current Internal Configuration mode does not support memory initialization or ROM. Select Internal Configuration mode with ERAM. Das kann ich aber nicht auswählen, und nach längerer Forschung finde ich heraus, dass die Compact-Varianten das prinzipiell gar nicht können. Ja, das unerwartete Kleingedruckte... Ich stehe ziemlich fassungslos davor. Was ergibt ein FPGA mit viel Speicher für einen Sinn, wenn man den nicht initialisieren kann (höchstens durch einen externen Prozessor)? Wie viele Designs gibt es, für die kein ROM gebraucht wird? In denen Prozessoren, Signaltabellen und all so'n Zeug nicht möglich sind? Ich finde das so unglaublich, dass ich einen noch Rest Hoffnung habe, mich gewaltig zu irren. Ansonsten muss ich wohl ein paar Euro mehr ausgeben und EQFP144 gegen ein anderes tauschen - zum Glück sind sie aber Pin kompatibel. Schon mal Schlimmeres erlebt.
Der Zahn der Zeit schrieb: > Was ergibt ein FPGA mit viel > Speicher für einen Sinn, wenn man den nicht initialisieren kann > (höchstens durch einen externen Prozessor)? Mal ein Oszilloskop aufgemacht? Aufbau ist normalerweise so: ADC(s)->FPGA->dicker ARM Prozessor. Da kann der Hauptprozessor dem FPGA auch recht simpel seine Config einblasen, wenn noch genug GPIOs dafür übrig sind. Dennoch braucht der FPGA viel schnellen Speicher.
Hi Jim, das war jetzt zwar keine Antwort auf die mir wichtige Frage, aber: Es mag ja sein, dass in solchen Geräten alle FPGA-RAMs vom zentralen µC initialisiert werden, aaaaber: Dann kann man auch gleich das ganze FPGA per µC konfigurieren (habe ich auch schon gemacht), so dass ein FPGA mit eingebautem Config-ROM, aber ohne Möglichkeit zur RAM/ROM-Initialisierung (also das MAX10 "Compact Mode"), dann ja wohl auch wenig sinnvoll ist. Internes Config-ROM ist doch nur dann sinnvoll, wenn kein externer Prozessor die Konfiguration übernehmen kann. Grüße DZDZ
Also im Datenblatt steht das hier: All memory blocks support initialization with a .mif. You can create .mif files in the Quartus II software and specify their use with the RAM IP when you instantiate a memory in your design. hast du probiert das Memory mit einer .mif Datei zu initialisieren?
user schrieb: > Also im Datenblatt steht das hier: > > All memory blocks support initialization with a .mif. You can create > .mif files in the Quartus II software and specify their use with the RAM > IP when you instantiate a memory in your design. Darauf bin ich offensichtlich auch herein gefallen, denn das gilt (offensichtlich) nicht für alle Varianten (= Feature Options) des MAX10. Anbei zwei Screenshots aus dem m10_overview.pdf: Man sieht, es gibt die Feature Options "Compact", "Analog" und "Flash". 10M08SC hatte ich ausgewählt. In der Tabelle steht nicht, dass "Memory initialzation" für die Feature Option Compact mögich ist. Das geht nur - lt. Tabelle und nach bitterer praktischer Erfahrung - für "Flash" und "Analog". Ich werde jetzt ein 10M08SA einsetzen müssen. Der ist zumindest Pin-kompatibel. Das wird eine blöde Löterei. Es sei denn, es gibt noch einen anderen Weg, ROM zu erzeugen. (Ein kleines ROM hatte ich durch einen Haufen VHDL-Code ersetzen können - vielleicht klappt das auch für andere, aber bei der großen Sinus-Tabelle ist Schluss.) > hast du probiert das Memory mit einer .mif Datei zu initialisieren? Na klar. Soweit ich mich erinnern kann, hatte bisher jedes meiner FPGAs ROMs, damit kenne ich mich gut aus. Der IP MegaWizzard weiß nicht, dass das nicht geht, denn er weiß nicht, welches das Ziel-Device ist. Er weist allerdings im Kleingedruckten darauf hin, dass man das richtige Configuration Scheme wählen muss. Aber dass das bei einigen Varianten gar nicht möglich ist, verrät er nicht. Erst beim Kompilieren kommt dann das böse Erwachen "ID:16031" (s. o.).
Falls Du einen µC (oder anderen externen nichtflüchtigen Speicher) in Deinem Design hast, könntest Du als Workaround die ROM-Inhalte beim Start nachladen. Duke
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.