Hallo,
ich bin noch recht neu bei den FPGA / CPLD.
Angefangen habe ich mit einem Arty A7-35T Developerboard.
Beim Anschauen einiger anderer FPGA-Boards ist mir aufgefallen, dass die
FPGAs ihren Code eigentlich immer von einem zweiten Speicherbaustein
holen und sich sozusagen beim Start jedes Mal neu konfigurieren.
Trotz Recherche im Internet finde ich leider keine konkrete Antwort auf
meine Frage. Ist es nicht möglich, bei einem FPGA das Programm auf dem
FPGA selbst zu speichern, wie es meines Wissens nach bei den CPLDs ist?
Ich entwerfe mir gerade eine kleine Steuerung und der Platz ist sehr
begrenzt, daher würde ich sehr gerne auf jeden unnötigen Baustein
verzichten.
Viele Grüße
Manuel
Hallo,
ich bin jetzt nicht der große FPGA Spezialist. Meine Designs mit Altera
und Xilinx sind jetzt schon ca 6 Jahre her. Soweit ich weiß gibt es
keine nennenswerte FPGA mit internem Flash, wie man es von Controllern
her kennt. Dia haben alle einen externen Konfigurationsspeicher.
Das ist aber in der Regel nur ein serieller Flash im SO8 Gehäuse.
Xilinx wollte dazumal immer ihren "Spezial" Flash. Aber ein
stinknormaler ging auch, der war dann im SO8 statt SO16 und kostetet nur
1€xx statt 5€.
Das FPGA funktioniert mit LUT aus Ram Zellen. Dazu noch RAM Blöcke. (ok
aber das weißt du wahrscheinlich ja selber) Wenn man dann den
nicht-flüchtigen Speicher noch mit auf den Chip packt, kostet das Platz.
Es gibt schon FPGA mit embedded Flash woraus die LUT geladen werden.
Actel Igloo oder Intel MAX10 z.B.
Manuel schrieb:> Ist es nicht möglich, bei einem FPGA das Programm auf dem> FPGA selbst zu speichern, wie es meines Wissens nach bei den CPLDs ist?
Jein. Es gibt FPGAs, die das machen. Intels MAX10 Serie bspw. Da gibt es
welche mit internem ROM. Diese haben quasi das ROM intern und booten
dann daraus.
Lattice hat auch nicht-flüchtige FPGAs. Allerdings direkt auf
Flash-Basis (XP2 Serie bspw.). Bei diesen ist die LUT direkt als
Flash-Zelle ausgeführt. Dadurch müssne die gar nicht booten und sind
quasi "instant on"
Der Grund, warum die High-End FPGAs das nicht haben wird in der
Halbleiter-Technologie vergraben sein. Flash / andere nichtflüchtige
Speicher erfordern spezielle Halbleiterprozesse. Das Problem daran ist,
dass diese Prozesse häufig nicht besonders gut für High-Speed Logik sind
etc. Deshalb setzen die FPGA Hersteller auf Performance optimierte CMOS
Prozesse und lagern das Speicherproblem auf einen separaten Chip aus.
Desweiteren braucht ein ROM relativ viel Chipfläche -> Hohe Kosten,
Yield-Verlust etc.
Eine Möglichkeit wäre es, den FPGA und ROM auf 2 Chips zu fertigen und
im Package zusammenzubonden.
Manuel schrieb:> Trotz Recherche im Internet finde ich leider keine konkrete Antwort auf> meine Frage.
Der Trick am Suchen ist das Finden.
> Ist es nicht möglich, bei einem FPGA das Programm auf dem> FPGA selbst zu speichern, wie es meines Wissens nach bei den CPLDs ist?
Doch. Jeder Hersteller hat solche Bauteile im Portfolio. Und wenn dann
noch ein OnChip-RC-Oszillator wie z.B. bei den MachXO drauf ist, dann
lassen sich echte Single-Chip Designs draus machen.
> dass die FPGAs ihren Code eigentlich immer von einem zweiten> Speicherbaustein holen
Vergleiche mal die Fertigungsprozesse bei SRAM und Flash. Du wirst
sehen, dass man entweder das eine gut kann oder das andere. Aber es wird
immer ein Kompromiss sein, wenn beides auf dem selben Die ist.
Aus diesem Grund sagen die FPGA-Hersteller: wir können das mit den FPGAs
gut. Lass diejenigen das mit dem Speicher machen, die das mit dem
Speicher gut können.
M. H. schrieb:> Lattice hat auch nicht-flüchtige FPGAs. Allerdings direkt auf> Flash-Basis (XP2 Serie bspw.). Bei diesen ist die LUT direkt als> Flash-Zelle ausgeführt.
Nein. Schon seit der Jahrtausendwende gibt es keine solchen FPGAs mehr.
Bei den Lattice-FPGAs sizt aber jeweils eine Flash-Zelle direkt bei
einer SRAM-Zelle.
Siehe z.B. dort die Punkte 5 und 6:
http://www.latticesemi.com/en/Support/AnswerDatabase/2/4/242
Und dort ab Seite 33:
http://www.petrex-bg.com/up/down/doc/Lattice_Non-volatile_Solutions_XO_XP.ppt
Und deshalb kann man auch "nur" das FPGA mit einer neuen Konfiguration
laden, die ist dann nach dem nächsten Powerup vergessen. Oder man kann
die neue Konfiguration ins Flash laden, dann ist sie auf dem FPGA
gespeichert.
Letzten Endes sind die FPGA-Hersteller wohl nur verwöhnt.
Man schaue sich mal an, was die Microcontroller Hersteller alles können.
Logik, Flash, ADC/DAC.
Selbst bei neuen Mikroprozessoren mit ARM Kernen ist Flash On-Chip.
Wird Zeit, dass die FPGA Hersteller hier mal vorwärts kommen.
Anarchist schrieb:> Selbst bei neuen Mikroprozessoren mit ARM Kernen ist Flash On-Chip.> Wird Zeit, dass die FPGA Hersteller hier mal vorwärts kommen.
Naja. Die FPGA-Hersteller sind würde ich sagen in dem Punkt einfach
weiter. In den Technologien, in denen Xilinx seine Artix7 etc. herstellt
willst keinen Flash machen...
Anarchist schrieb:> Man schaue sich mal an, was die Microcontroller Hersteller alles können.> Logik, Flash, ADC/DAC.
"Logik"... Ein Mikrocontroller ist eine mehr oder weniger komplett
autogeroutete Struktur, die relativ einfach ist. Ein FPGA mit seiner
katastrophalen Routing-Matrix, verteilten RAM-Blöcken, Clock
distribution, die was taugen soll, etc... ist da schon eine GANZ andere
Hausnummer. da steckt auch noch deutlich mehr manuelle Arbeit dahinter.
Mit 'ner halbwegs aktuellen Technologie routet sich ein Cortex M4 quasi
von selbst. Gib Cadence 'ne Nacht auf 'nem Server und schwupp ist das
Ding platziert.
ADCs und DACs sind nicht die große Hürde. In einem CMOS Prozess, der
noch nicht vollkommen zum 5 nm Fin-Fet verkommen ist, lässt sich ein ADC
schon noch machen. Die Chipfläche für die Kondensatorbänke, die für
einen SAR gebraucht werden, benötigen allerdings einiges an Platz. Aber
Xilinx hat ja auch nen ADC mit auf seinen FPGAs.
Anarchist schrieb:> Selbst bei neuen Mikroprozessoren mit ARM Kernen ist Flash On-Chip.
Das, was da On-Chip ist, reicht bei FPGAs nicht mal sooo arg weit:
https://www.xilinx.com/support/documentation/user_guides/ug470_7Series_Config.pdf
Ein 7VX1140T braucht da immerhin 385,127,680 Bits bzw. knapp 48 MByte an
Configdaten.
> Wird Zeit, dass die FPGA Hersteller hier mal vorwärts kommen.
Die Zielgruppe ist einfach komplett anders.
Und wenn in einer Telekommunikationseinheit ein paar Monster-FPGAs
draufsitzen, die sowieso nur dann gebootet werden, wenn es eine neue
Firmware gibt, dann lohnt es sich nicht, auf jedes FPGA noch sicheres
NOR-Flash zu basteln, wenn eine Speicherkarte mit billigem NAND-Flash
die Arbeit auch erledigen kann oder die Konfiguration für alle Nodes
sowieso zentral gespeichert und verteilt wird.
Grundsätzlich wurde eigentlich schon alles gesagt und stimmt so weit
auch.
Von meiner Seite nur kleine Korrekturen oder Ergänzungen:
Lothar M. schrieb:> M. H. schrieb:>> Lattice hat auch nicht-flüchtige FPGAs. Allerdings direkt auf>> Flash-Basis (XP2 Serie bspw.). Bei diesen ist die LUT direkt als>> Flash-Zelle ausgeführt.> Nein. Schon seit der Jahrtausendwende gibt es keine solchen FPGAs mehr.> Bei den Lattice-FPGAs sizt aber jeweils eine Flash-Zelle direkt bei> einer SRAM-Zelle.> Siehe z.B. dort die Punkte 5 und 6:> http://www.latticesemi.com/en/Support/AnswerDatabase/2/4/242
Sehr richtig, dass ist der non-volatile Ansatz von Lattice, SRAM FPGA
mit embedded Flash Zellen.
Bei Microchip (aka Microsemi/Actel) ist es immer noch so, dass die FPGAs
direkt mit non-volatile Speicherzellen anstatt SRAM gebaut werden.
Früher Flash (z. B. ProAsic3) und heute in 28 nm mit sogenannten SONOS
Zellen (RTG4, PolarFire).
Wie man auch sieht, bei Microchip ist bei 28 nm Schluss und Xilinx ist
bei 7 nm...
Anarchist schrieb:> Letzten Endes sind die FPGA-Hersteller wohl nur verwöhnt.> Man schaue sich mal an, was die Microcontroller Hersteller alles können.> Logik, Flash, ADC/DAC.
Man muss schon vergleichbare Eisen vergleichen. Ein Beispiel von 2011
herum, da war bei TI etwa bei 200 MHz schluss mit embedded Flash, alle
schnelleren brauchten externen Programmspeicher.
Lothar M. schrieb:>> Wird Zeit, dass die FPGA Hersteller hier mal vorwärts kommen.> Die Zielgruppe ist einfach komplett anders.> Und wenn in einer Telekommunikationseinheit ein paar Monster-FPGAs> draufsitzen, die sowieso nur dann gebootet werden, wenn es eine neue> Firmware gibt, dann lohnt es sich nicht, auf jedes FPGA noch sicheres> NOR-Flash zu basteln, wenn eine Speicherkarte mit billigem NAND-Flash> die Arbeit auch erledigen kann oder die Konfiguration für alle Nodes> sowieso zentral gespeichert und verteilt wird.
Genau, die Zielgruppe macht es hier aus. Die grossen Monster-FPGA werden
ja kaum eingesetzt ohne weitere Prozessoren oder gleich x86 Server. Da
brauchts keinen externen Baustein weil sie eh vom Hostsystem immer mit
dem aktuellsten Bitstream versorgt werden.
Andere Hersteller bauen ganz bewusst kleinere FPGAs für andere
Zielmärkte und wissen, dass es da von Vorteil ist, wenn die
Konfiguration intern ist. Das macht gerade Lattice interessant für
Industrieanwendungen.
Microchip (aka Microsemi/Actel) könnte das auch, ist aber teurer als
Lattice. Microchip kommt zum Zug, wenn Strahlungsfestigkeit, Resistenz
gegen Sidechannelattacken oder andere Securityaspekte Relevant werden.
Entsprechend sind sie Marktdominierend in Flugzeugen, Satelliten,
Geldspielautomaten etc.
Es gibt Spartan3 mit internem Flash. Das ist ganz praktisch, wenn man
den Aufwand niedrig halten will für eine kleine Anwendung. Ansonsten
sind Anwendungen mit FPGA oft so aufwändig, dass ein externer Flash den
Kuchen nicht fett macht.
Manuel schrieb:> Trotz Recherche im Internet finde ich leider keine konkrete Antwort auf> meine Frage. Ist es nicht möglich, bei einem FPGA das Programm auf dem> FPGA selbst zu speichern, wie es meines Wissens nach bei den CPLDs ist?
Dann haste scheiße recherchiert:
* Spartan3-an
* Max10
* pOLARFIRE
So einen kleinen 8-Beiner neben dem FPGA wird die Welt ja wohl
verschmerzen koennen. Bet 48 MByte wird der wohl ein bisscher groesser
ausfallen. Aber der FPGA ja wohl auch.
Und wenn die integrierten ADs dann auch mal eine Wurst vom Teller ziehen
koennten und nicht mit 200 ksps troedeln wuerden.
Das waer dann schoen.
> Wird Zeit, dass die FPGA Hersteller hier mal vorwärts kommen.
es gibt (im Low-Mid-Bereich) PLDs (mache sind intern FPGAs) u. FPGAs die
das drauf haben
> Reichen 6 GSPS?> 64 GSPS
Jaja, zu teuer. Ich waer ja schon mit 100 Msps zufrieden wenn
die nicht gerade eine grottige Linearitaet, missing Codes und
aehnliches Unbill haetten.
Bei AD kostet sowas ein paar Euro. Das waere im Rahmen.
Ferkel schrieb:> Jaja, zu teuer. Ich waer ja schon mit 100 Msps zufrieden wenn> die nicht gerade eine grottige Linearitaet, missing Codes und> aehnliches Unbill haetten.> Bei AD kostet sowas ein paar Euro. Das waere im Rahmen.
Hier sind wir halt beim genau gleichen Thema wie mit dem Flash:
Es gibt Chip-Herstellprozesse die optimiert sind auf schnelle
Digitallogik, Analogschaltungen, Flash inklusive oder Stromsparen. Es
gibt nicht alles gleichzeitig gleich gut.
Christoph Z. schrieb:>> Hier sind wir halt beim genau gleichen Thema wie mit dem Flash:> Es gibt Chip-Herstellprozesse die optimiert sind auf schnelle> Digitallogik, Analogschaltungen, Flash inklusive oder Stromsparen. Es> gibt nicht alles gleichzeitig gleich gut.
Naja, desalb hat Xilinx ja auch den Spartan 3AN als 'stacked Die
gefertigt, sprich unter einem Chipgehaüse einen FPGA und einen
Flash-Die.
Hat aber wohlnicht die kalkulierte Nachfrage ergeben, so dass man es
wieder einstellte.