Forum: FPGA, VHDL & Co. Anfängerfragen


von Peter Reither (Gast)


Lesenswert?

Hi,

ich möchte anfangen mich mit FPGAs zu beschäftigen. Im Speziellen 
interessiere ich mich dabei für CPU Architektur, und mein 
(mittelfristiges) Ziel ist es auf Basis von einigen im Netz gefundenen 
Tutorials und Beispielimplementierungen selber eine kleine CPU zu 
entwerfen, und diese dann in meine Projekte einzubauen. Außerdem möchte 
ich ein wenig mit (Audio-) DSP herumspielen.

Für mich wichtig ist, dass es eine umfangreiche und (relativ) einfach zu 
erlernende Software / IDE gibt, und man die FPGAs auch halbwegs 
vernünftig später (ohne DEV-Board) in eigene Schaltungen übernehmen 
kann. Dazu sollte der Preis der einzelnen Bausteine natürlich auch 
überschaubar sein.

Hier im Forum wird viel von der SPARTAN Familie von Xilinx geschwärmt, 
die wohl auch eine gute kostenlose (wenn gleich auch eingeschränkte) 
Software bereitstellen. Das Dev-Kit 
http://www.xilinx.com/products/boards-and-kits/HW-SPAR3E-SK-US-G.htm ist 
auch bezahlbar, und scheint einen guten Einstieg zu bieten, oder was 
meint ihr?

Nun zu meinen Fragen:

1) Meint ihr, dass die Xilinx Familie eine gute Wahl für einen 
Einsteiger ist, der die FPGAs auch unabhängig vom DEV-Board in eigenen 
Schaltungen verwenden möchte? Gibt es bessere (geeignetere) 
Alternativen?

2) Bisher habe ich nirgendwo einen "Basisschaltplan" gefunden, wie die 
FPGAs (in diesem Fall Xilinx) in eine eigene Schaltung integriert werden 
können, nur ungefähre Informationen. Habt ihr eine Idee wo ich Infos 
dazu finden kann? Benötigt so ein Baustein wirklich drei verschiedene 
Spannungen (1.2V, 2.5V, 3.3V)?
Mir ist klar, dass - wie auch im entsprechenden Artikel verlinkt - viele 
Dinge bei der Anbindungen von Peripherie zu beachten sind, die in den 
Datenblättern stehen. Mir geht es dabei wirklich nur um ein "FPGA läuft 
und ist prinzpiell einsatzbereit", also Spannungsversorgung und Takt.

3) Auf den Seiten und dem Datasheet der SPARTAN 3E Familie findet sich 
der Hinweis "Please note that this is a Spartan-3E platform and is not 
recommended for new designs.". Wisst ihr, was es damit auf sich hat? 
Kann es ignoriert werden, oder sollte ich auf eine andere Plattform 
setzen?

4) Im Artikel CPLD steht im ersten Absatz "CPLDs verlieren beim 
Wegfall der Versorgungsspannung im Gegensatz zu FPGAs ihre 
Programmierinformation nicht". Trifft das auch auf diese FPGAs zu? Ich 
bin davon ausgegangen, dass ich (in einer eigenständigen Schaltung) den 
FPGA einmal per JTAG Interface programmiere, möglicherweise noch per SPI 
den EEPROM oder Flash fülle und der Baustein dann dauerhaft arbeitet, 
wie ich es von den AVRs gewohnt bin.

Vielen Dank im Voraus!

von Dudu (Gast)


Lesenswert?

Peter Reither schrieb:
> Nun zu meinen Fragen:
>
> 1) Meint ihr, dass die Xilinx Familie eine gute Wahl für einen
> Einsteiger ist, der die FPGAs auch unabhängig vom DEV-Board in eigenen
> Schaltungen verwenden möchte? Gibt es bessere (geeignetere)
> Alternativen?

Das hängt davon ab, was Du sonst noch machen willst.
Ich denke zum Thema Einstieg und Spartan gibt es hier einige Threads ...
Wenn's einfach sein soll, dann auch mal nach nichtflüchtigen FPGAs 
suchen (z.B. MachXO2), dort ist die Konfiguration im Baustein enthalten.
Die haben aber oft keine dedizierten Multiplizierer (dass muss man dann 
mit LUTs machen und kostet recht viel).
Nen kline CPU kannst Du auch in einem XO2 entwerfen. Als Vergleich: Ein 
8-Bit Controller kostet so um die 500 (-1000) LUTs.

>
> 2) Bisher habe ich nirgendwo einen "Basisschaltplan" gefunden, wie die
> FPGAs (in diesem Fall Xilinx) in eine eigene Schaltung integriert werden
> können, nur ungefähre Informationen. Habt ihr eine Idee wo ich Infos
> dazu finden kann? Benötigt so ein Baustein wirklich drei verschiedene
> Spannungen (1.2V, 2.5V, 3.3V)?
> Mir ist klar, dass - wie auch im entsprechenden Artikel verlinkt - viele
> Dinge bei der Anbindungen von Peripherie zu beachten sind, die in den
> Datenblättern stehen. Mir geht es dabei wirklich nur um ein "FPGA läuft
> und ist prinzpiell einsatzbereit", also Spannungsversorgung und Takt.
>
> 3) Auf den Seiten und dem Datasheet der SPARTAN 3E Familie findet sich
> der Hinweis "Please note that this is a Spartan-3E platform and is not
> recommended for new designs.". Wisst ihr, was es damit auf sich hat?
> Kann es ignoriert werden, oder sollte ich auf eine andere Plattform
> setzen?

Das deutet darauf hin, dass es meist eine Nachfolgefamilie gibt und/oder 
der Baustein demnächst abgekündigt wird. Für jemanden, der sein System 
noch 10 Jahre bauen möchte sicher ein Thema. Wenn Du nur 1 Board machst, 
ist das weniger relevant.

>
> 4) Im Artikel CPLD steht im ersten Absatz "CPLDs verlieren beim
> Wegfall der Versorgungsspannung im Gegensatz zu FPGAs ihre
> Programmierinformation nicht". Trifft das auch auf diese FPGAs zu? Ich
> bin davon ausgegangen, dass ich (in einer eigenständigen Schaltung) den
> FPGA einmal per JTAG Interface programmiere, möglicherweise noch per SPI
> den EEPROM oder Flash fülle und der Baustein dann dauerhaft arbeitet,
> wie ich es von den AVRs gewohnt bin.

CPLD und nichtflüchtige FPGAs (oft auch als CPLDs bezeichnet) haben ihre 
Konfiguration auf dem Baustein, entweder direkt als 
EEPROM-Zelle/Fuse/Flash-Zelle ... oder in einem Konfigurationsflash, aus 
dem dann beim Einschalten die Konfiguration in sehr kurzer Zeit geladen 
wird. Die werden einmal programmiert und behalten ihren Inhalt.
SRAM basierte FPGAs werden meist über ein externes SPI Flash geladen. 
Aber auch das wird im System meist einmal konfiguriert. BTW, du kannst 
das SPI Flash auch per JTAG "durch" das FPGA konfigurieren ...
Allerdings ist der Board-Entwurf etwas einfacher, wenn man nur ein 
Device hat, das das Flash enthält ...)

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


Lesenswert?

Peter Reither schrieb:
> 1) Meint ihr, dass die Xilinx Familie eine gute Wahl für einen
> Einsteiger ist, der die FPGAs auch unabhängig vom DEV-Board in eigenen
> Schaltungen verwenden möchte? Gibt es bessere (geeignetere)
> Alternativen?
Xilinx (und Altera) peilen von der Mitte aus den High-End Markt an. 
Lattice findet seine Zielgruppe gern im Mittelbereich und drunter. Mir 
gefallen deren MachXO und XP2 für IO-Anwendungen ganz gut. Ein Lattice 
XP2 mit 8k LUTs liegt in der selben Liga wie ein Xilinx S3-400.

> 2) Bisher habe ich nirgendwo einen "Basisschaltplan" gefunden, wie die
> FPGAs (in diesem Fall Xilinx) in eine eigene Schaltung integriert werden
> können, nur ungefähre Informationen. Habt ihr eine Idee wo ich Infos
> dazu finden kann?
Sieh dich mal nach Schaltplänen der diversen EVAL-Boards um.

> Benötigt so ein Baustein wirklich drei verschiedene
> Spannungen (1.2V, 2.5V, 3.3V)?
Meist benötigt er die Core-Spannung und zusätzlich die IO-Spannung. 
Machmal kommen verschiedene IO-Spannungen zusammen...

> Mir ist klar, dass - wie auch im entsprechenden Artikel verlinkt - viele
> Dinge bei der Anbindungen von Peripherie zu beachten sind, die in den
> Datenblättern stehen. Mir geht es dabei wirklich nur um ein "FPGA läuft
> und ist prinzpiell einsatzbereit", also Spannungsversorgung und Takt.
Sieh dir mal die MachXO und XP2 von Lattice und den Spartan3 AN von 
Xilinx an.

> 3) Auf den Seiten und dem Datasheet der SPARTAN 3E Familie findet sich
> der Hinweis "Please note that this is a Spartan-3E platform and is not
> recommended for new designs.". Wisst ihr, was es damit auf sich hat?
> Kann es ignoriert werden, oder sollte ich auf eine andere Plattform
> setzen?
Du kannst bedenkenlos mit dem S3E lernen, aber für ein 
serientaugliches Design würde ich den nicht mehr einsetzen.

> 4) Im Artikel CPLD steht im ersten Absatz "CPLDs verlieren beim
> Wegfall der Versorgungsspannung im Gegensatz zu FPGAs ihre
> Programmierinformation nicht". Trifft das auch auf diese FPGAs zu? Ich
> bin davon ausgegangen, dass ich (in einer eigenständigen Schaltung) den
> FPGA einmal per JTAG Interface programmiere, möglicherweise noch per SPI
> den EEPROM oder Flash fülle und der Baustein dann dauerhaft arbeitet,
> wie ich es von den AVRs gewohnt bin.
Alle FPGA (mal von Actel/Microsemi abgesehen) und die meisten CPLDs sind 
SRAM-basiert und verlieren beim Ausschalten ihre Konfiguration. Einige 
(s.o.) haben allerdings den Config-Flash integriert und laden beim 
Anlegen einer Spannung die Konfiguration von dort.

Als tipp: such einfach mal hier im Forum nach dem Stichwort "Anfänger"
https://www.mikrocontroller.net/search?query=anf%C3%A4nger&forums[]=9&max_age=-&sort_by_date=1

von Falk B. (falk)


Lesenswert?

@ Peter Reither (Gast)

>http://www.xilinx.com/products/boards-and-kits/HW-... ist
>auch bezahlbar, und scheint einen guten Einstieg zu bieten, oder was
>meint ihr?

Ist gut.

>1) Meint ihr, dass die Xilinx Familie eine gute Wahl für einen
>Einsteiger ist,

Ja.

> der die FPGAs auch unabhängig vom DEV-Board in eigenen
>Schaltungen verwenden möchte? Gibt es bessere (geeignetere)
>Alternativen?

Altera und Lattice sind auch gut.

>2) Bisher habe ich nirgendwo einen "Basisschaltplan" gefunden, wie die
>FPGAs (in diesem Fall Xilinx) in eine eigene Schaltung integriert werden
>können, nur ungefähre Informationen. Habt ihr eine Idee wo ich Infos
>dazu finden kann?

Schau dir den Schaltplan der Evaluationboards an.

>Benötigt so ein Baustein wirklich drei verschiedene
>Spannungen (1.2V, 2.5V, 3.3V)?

Jo. Es gibt auch (Steck)Module, die einem etwas Arbeit abnehmen.

http://shop.trenz-electronic.de/catalog/product_info.php?products_id=635

>3) Auf den Seiten und dem Datasheet der SPARTAN 3E Familie findet sich
>der Hinweis "Please note that this is a Spartan-3E platform and is not
>recommended for new designs.". Wisst ihr, was es damit auf sich hat?

Die Serie ist über 10 Jahre alt und sollte in professionellen Designs, 
welche jetzt neu entwickelt werden, nicht mehr eingesetzt werden. Die 
ICs wird es schon noch 5-10 Jahre geben, es gibt aber deutlich bessere, 
modernere ICs.

>Kann es ignoriert werden, oder sollte ich auf eine andere Plattform
>setzen?

Naja, 3E ist wirklich alt. Nimm wenigsten 3A oder AN.

>4) Im Artikel CPLD steht im ersten Absatz "CPLDs verlieren beim
>Wegfall der Versorgungsspannung im Gegensatz zu FPGAs ihre
>Programmierinformation nicht".

Jain.

> Trifft das auch auf diese FPGAs zu? Ich
>bin davon ausgegangen, dass ich (in einer eigenständigen Schaltung) den
>FPGA einmal per JTAG Interface programmiere, möglicherweise noch per SPI
>den EEPROM oder Flash fülle und der Baustein dann dauerhaft arbeitet,
>wie ich es von den AVRs gewohnt bin.

Das ist auch so. Aber der FPGA wird nach dem Einschalten automatisch mit 
seiner Konfiguration geladen, das dauert je nach Schaltung ein paar 
Dutzend bis hunderte Millisekunden, quasi wie eine Booten des PCs ;-)

von Lattice User (Gast)


Lesenswert?

Hier noch ein paar Ergänzungen

Peter Reither schrieb:
> 1) Meint ihr, dass die Xilinx Familie eine gute Wahl für einen
> Einsteiger ist, der die FPGAs auch unabhängig vom DEV-Board in eigenen
> Schaltungen verwenden möchte? Gibt es bessere (geeignetere)
> Alternativen?

Für eigene Schaltungen gibt es eine Falle: Die meisten und vor allem 
grössere FPGAs gibt es nur im BGA Gehäuse.
Unter TQFP100/144 wird es aber nicht mehr gehen, auch das stellt schon 
für viele eine Herausforderung dar.

>
> 2) Bisher habe ich nirgendwo einen "Basisschaltplan" gefunden, wie die
> FPGAs (in diesem Fall Xilinx) in eine eigene Schaltung integriert werden
> können, nur ungefähre Informationen. Habt ihr eine Idee wo ich Infos
> dazu finden kann? Benötigt so ein Baustein wirklich drei verschiedene
> Spannungen (1.2V, 2.5V, 3.3V)?

In der Regel nur 2 (Core + IO).
Weiter ist zu beachten dass 5V Toleranz nicht mehr gegeben ist.

Die MachXO2 von Lattice in der HC Variante haben einen internen 
Spannungsregler für den Core, und brauchen deshalb nur eine Spannung 
(2.5V oder 3.3V)

Meiner Ansicht (die natürlich nicht von allen geteilt wird) nach stellt 
das
MachXO2 Breakout Board einen sehr günstigen Einstieg dar.

von Dudu (Gast)


Lesenswert?

Peter Reither schrieb:
> Außerdem möchte ich ein wenig mit (Audio-) DSP herumspielen.

Lothar Miller schrieb:
> Ein Lattice
> XP2 mit 8k LUTs liegt in der selben Liga wie ein Xilinx S3-400.


Stimmt, das hab ich glatt vergessen - und das XP2 enthält auch 
Multiplizierer/DSP Blöcke ...



Lattice User schrieb:
> Für eigene Schaltungen gibt es eine Falle: Die meisten und vor allem
> grössere FPGAs gibt es nur im BGA Gehäuse.
> Unter TQFP100/144 wird es aber nicht mehr gehen, auch das stellt schon
> für viele eine Herausforderung dar.
> ...
> Meiner Ansicht (die natürlich nicht von allen geteilt wird) nach stellt
> das MachXO2 Breakout Board einen sehr günstigen Einstieg dar.

... und kann per Steckerleiste auch mit deiner Aussenwelt reden, dann 
kämst Du sogar um das Löten des TQPFs rum.

von Peter Reither (Gast)


Lesenswert?

Lattice User schrieb:
> Meiner Ansicht (die natürlich nicht von allen geteilt wird) nach stellt
> das
> MachXO2 Breakout Board einen sehr günstigen Einstieg dar.

Das sieht wirklich sehr interessant aus, danke für den Hinweis! Kannst 
du mir auch etwas zu der Software sagen: Wie ist der (für mich als 
Anfänger relevante) Funktionsumfang? Kann ich Simulationen durchführen, 
um das Design einer simplen CPU und bspw. Signalfilter zu verifizieren?

Lattice User schrieb:
> Für eigene Schaltungen gibt es eine Falle: Die meisten und vor allem
> grössere FPGAs gibt es nur im BGA Gehäuse.
> Unter TQFP100/144 wird es aber nicht mehr gehen, auch das stellt schon
> für viele eine Herausforderung dar.

Sehr wichtiger Aspekt, danke!

Lothar Miller schrieb:
> Alle FPGA (mal von Actel/Microsemi abgesehen) und die meisten CPLDs sind
> SRAM-basiert und verlieren beim Ausschalten ihre Konfiguration. Einige
> (s.o.) haben allerdings den Config-Flash integriert und laden beim
> Anlegen einer Spannung die Konfiguration von dort.

So ist das also - danke, sehr aufschlussreich!

Lothar Miller schrieb:
> Xilinx (und Altera) peilen von der Mitte aus den High-End Markt an.
> Lattice findet seine Zielgruppe gern im Mittelbereich und drunter. Mir
> gefallen deren MachXO und XP2 für IO-Anwendungen ganz gut. Ein Lattice
> XP2 mit 8k LUTs liegt in der selben Liga wie ein Xilinx S3-400.

Diese Information würde sich bestimmt auch gut in der Artikelsammlung 
machen ;) Danke!

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


Lesenswert?

> Ein Lattice XP2 mit 8k LUTs liegt ... wie ein Xilinx S3-400.
Für dieses XP2 gibt es dann ein ein EVAL-Board namens Brevia2 XP2:
http://www.latticesemi.com/products/developmenthardware/developmentkits/xp2brevia2developmentkit.cfm

Das hat sogar Taster und Schalter, die per MAX6818 entprellt wurden 
(siehe http://www.latticesemi.com/documents/doc43735x37.pdf auf Seite 
19), was an sich ein rechter Blödsinn ist, weil diese Taster und 
Schalter dann zwar nicht mehr prellen, aber trotzdem noch asynchron 
sind...   :-/
http://www.lothar-miller.de/s9y/categories/35-Einsynchronisieren

Und zudem liesse sich der Max locker und luftig in das FPGA 
implementieren und gäbe danch ein astreines synchrones Signal aus:
http://www.lothar-miller.de/s9y/archives/4-Tasterentprellung-wie-MAX6816.html

von Lattice User (Gast)


Lesenswert?

Lothar Miller schrieb:
>> Ein Lattice XP2 mit 8k LUTs liegt ... wie ein Xilinx S3-400.
> Für dieses XP2 gibt es dann ein ein EVAL-Board namens Brevia2 XP2:
> 
http://www.latticesemi.com/products/developmenthardware/developmentkits/xp2brevia2developmentkit.cfm
>

Kleine Korrektur, da ist ein XP2-5 drauf, d.h. 5k LUTs.
Ausserdem ist zu beachten, dass das beiligende Programmierkabel für den 
Parallelboard gedacht ist.

Der XP2 ist allerdings für Signalverarbeitung besser geeignet als der 
MachXO2. Der XP2-5 hat 12 18x18 Multiplier.

von Lattice User (Gast)


Lesenswert?

Peter Reither schrieb:
> Das sieht wirklich sehr interessant aus, danke für den Hinweis! Kannst
> du mir auch etwas zu der Software sagen: Wie ist der (für mich als
> Anfänger relevante) Funktionsumfang? Kann ich Simulationen durchführen,
> um das Design einer simplen CPU und bspw. Signalfilter zu verifizieren?
>

Lattice Diamond unterstützt in der kostenlosen Version die kleineren 
Familien ohne weitere Softwareeinschränkungen.
(zu beachten: die Linuxvariante enthält keinen Simulatur, auch nicht die 
Vollversion).

Der Hauptkritikpunkt von vielen ist, dass man die Lizenz jährlich 
erneuern muss. Ausserdem funktioniert wohl das Lizenzsystem (flexlm) auf 
VMs nicht so ohne weiteres.

von Karl (Gast)


Lesenswert?

Lattice User schrieb:
> Ausserdem ist zu beachten, dass das beiligende Programmierkabel für den
> Parallelboard gedacht ist.

Ich glaub das hat sich geändert, hat jetzt auch USB:
The Brevia2 Development Kit comes with a USB mini cable to supply power 
as well as JTAG programming. It is also a replacement for the 
first-generation LatticeXP2 Brevia Development Kit which is no longer 
available.

Das PPort Kabel war wohl das alte Brevia Board ...

von Lattice User (Gast)


Lesenswert?

Lattice User schrieb:

> Parallelboard gedacht ist.
>

Bah, Parallelport, Grummel

von Lattice User (Gast)


Lesenswert?

Karl schrieb:
> Lattice User schrieb:
>> Ausserdem ist zu beachten, dass das beiligende Programmierkabel für den
>> Parallelboard gedacht ist.
>
> Ich glaub das hat sich geändert, hat jetzt auch USB:
> The Brevia2 Development Kit comes with a USB mini cable to supply power
> as well as JTAG programming. It is also a replacement for the
> first-generation LatticeXP2 Brevia Development Kit which is no longer
> available.
>
> Das PPort Kabel war wohl das alte Brevia Board ...

Du hast recht, damit ist das sogar eine gute Wahl,

http://www.latticesemi.com/products/developmenthardware/developmentkits/xp2brevia2developmentkit.cfm

Danke für den Hinweis.

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


Lesenswert?

1
LatticeXP2 Brevia Development Kit
2
Note: This product is no longer available for purchase - 
3
it has been replaced by the new LatticeXP2 Brevia2 Development Kit.

Hier noch der Link aufs alte Brevia Board (ohne die 2) mit dem 
kleineren FPGA und dem Parallelport-Programmer:
http://www.latticesemi.com/products/developmenthardware/developmentkits/xp2breviadevelopmentkit.cfm

von Peter Reither (Gast)


Lesenswert?

Gut, dann werde ich mir das "LatticeXP2 Brevia Development Kit" mal 
bestellen. Danke für die vielen wertvollen Tips!

von Lattice User (Gast)


Lesenswert?

Lothar Miller schrieb:

> Hier noch der Link aufs alte Brevia Board (ohne die 2) mit dem
> kleineren FPGA und dem Parallelport-Programmer:
> 
http://www.latticesemi.com/products/developmenthardware/developmentkits/xp2breviadevelopmentkit.cfm

Der FPGA ist in beiden Fällen der LFXP2-5E-6TN144C

von Lattice User (Gast)


Lesenswert?

Peter Reither schrieb:
> Gut, dann werde ich mir das "LatticeXP2 Brevia Development Kit" mal
> bestellen. Danke für die vielen wertvollen Tips!

Wenn du nicht direkt bei Lattice bestellst, sicherstellen dass du die 
neue Variante bekommst. PartNbr: LFXP2-5E-B2-EVN

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


Lesenswert?

Lattice User schrieb:
> Der FPGA ist in beiden Fällen der LFXP2-5E-6TN144C
Ja, da schau her...   :-/

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.