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
Eine eigene Frage?
Dieser Thread ist über 9 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.