mikrocontroller.net

Forum: FPGA, VHDL & Co. Bitte um Check meiner FPGA-Auswahl für ein Interface-Board


Autor: noips (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

Nachdem im Beitrag "Converter: mehrere SPI-Schnittstellen parallel --> 
LVDS" für die Lösung des dort beschriebenen Interface-Board die Wahl 
eher zugunsten eines FPGA/CPLD fällt, möchte ich mit diesem Beitrag die 
Sache weiterführen, weil ich als FPGA-Neuling Hilfe beim Aussuchen des 
geeigneten FPGAs brauche.

Hier noch mal das Problem in Kürze. Dazu das Blockschaltbild im Anhang. 
Das zu entwerfende Interface-Board soll eine Verbindung zwischen einer 
Hauptplatine auf einer Seite und mehreren (bis zu 8) SPI-IC wie AD-, 
DA-Wandler ermöglichen. Dabei werden die SPI-Bausteine gleichzeitig 
abgefragt, die Daten werden serialisiert und (viel schneller als eine 
einzelne solche SPI-Verbindung) an die Hauptplatine geschickt. Im 
Endeffekt soll es dann so sein, als würden die SPI-IC gleichzeitig und 
direkt mit der Hauptplatine kommunizieren.

Ich habe mir einige Beiträge über die FPGA-Auswahl durchgelesen und 
folgendes zusammenfassend festgestellt:

Ganz allgemein kann man die FPGA-Wahl nicht vorher endgültig treffen. 
Man legt sich fest auf einen Hersteller und eine sinnvolle 
Produktfamilie und beginnt zu programmieren. Das Entwicklungstool wird 
es dann einem sagen, in welches Derivat das Design noch reinpasst.

Zur groben Festlegung sind aber folgende Eckdaten wichtig:
-  Taktfrequenz
-  Betriebsspannung, Signalspannungen (Anbindung an andere Komponenten)
-  IO-Bedarf
-  Kosten

Zur Abschätzung der nötigen FPGA-Größe wurde in einem Beitrag folgender 
Tipp gegeben:
Ungefähr die für das Design nötige Anzahl von Flip-Flops bestimmen. Mal 
2 nehmen, zur Sicherheit, und dann einen Derivat nehmen, der die Zahl an 
Flip-Flops bringt.

Nun möchte ich anhand dieser Kriterien eine FPGA-Wahl für das oben 
beschrieben Interface-Board machen.

Hersteller:
Lattice, da bei uns schon eingesetzt


Göße:
Der Baustein soll ja 9 SPI-Module beinhalten.
Abschätzung der Zahl an Flip-Flops pro SPI-Modul (in Anlehnung an den 
Aufbau eines SPI-Moduls in einem MSP430)

Jeweils ein Buffer- und ein Shiftregister (8 Bit breit) im Transmit- und 
Receive-Zweig --> also 4 x 8 FFs
Dazu ca. 8 FFs (Annahme) für Taktlogik
--> ca. 40 FFs pro SPI-Modul
Gesamt: 9 x 40 x 2 (Sicherheitsfaktor) = 720 FFs --> aufgerundet ca. 800 
FFs.
Laut einem Lattice-Datasheet enthält eine Logical Unit (PFU) 8 FFs, dass 
heißt ein Baustein mit 100 Logical Units wäre ausreichend. Die kleinsten 
haben aber schon 192 Logical Units.


Taktfrequenz:
Maßgebend ist die SPI-Rate der schnellsten SPI-Verbindung. Sie soll bis 
ca. 40MBit/s betragen. Bei einem Controller soll der Systemtakt um 
Faktor 2 bis 4 höher als die größte mögliche SPI-Rate liegen. Wenn man 
das hier anwendet, muss die FPGA-Taktfrequenz 4 x 40 MBit/s = ca. 160 
MHz betragen. Das schafft jeder neue FPGA.


Signalspannung (IOs) 3.3V erforderlich, wegen Anbindung an 
RS485-Treiber.


IO-Bedarf:
Pro SPI-Modul 6 IOs nötig (MOSI, MISO, SCK, 3 x SS)
Gesamt:   9 x 6 = 54 IOs nötig

Kosten:
<15€

Nach diesen Kriterien würde der passen.
LFEC1E-3TN100C       1.5K LUTS, 67 I/O, 1.2V, -3 SPEED, PB-FREE


Nun möchte ich euch bitten, eure Meinung zu diesen Auswahlgedanken zu 
sagen. Ist es so in Ordnung oder habe ich irgend wo einen Denkfehler? 
Habe ich etwas vielleicht nicht bedacht?

Ich danke für jeden Tipp/Hinweis!!!!

Autor: Simu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

einfach deinen Entwurf in VHDL packen und synthetisieren. Dann weisst du 
genau welchen kleinsten FPGA oder gar CPLD du brauchst.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Wenn man das hier anwendet, muss die FPGA-Taktfrequenz 4 x 40 MBit/s
> = ca. 160 MHz betragen. Das schafft jeder neue FPGA.
Aber dafür sind u.U. schon Tricks nötig...

> Dabei werden die SPI-Bausteine gleichzeitig abgefragt, die Daten werden
> serialisiert und (viel schneller als eine einzelne solche SPI-Verbindung)
> an die Hauptplatine geschickt.
Wenn schon eine einzelne SPI-Verbindung mit 40 MHz daherkommt, dann 
brauchst du im Worst-Case auf der LVDS-Seite 8*40 MHz = 320 MHz...   :-o

Bist du schon in der richtigen Zehnerpotenz unterwegs?

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wenn schon eine einzelne SPI-Verbindung mit 40 MHz daherkommt, dann
>brauchst du im Worst-Case auf der LVDS-Seite 8*40 MHz = 320 MHz...

Zugegeben, ich habe das ganze nicht deutlich genug beschrieben.

40 MHz bezieht sich nur auf die LVDS-Seite. Die einzelnen 
SPI-Verbindungen zu den AD-, DA- Modulen sind im Bereich von ca. 1-5 
MHz.

>> Wenn man das hier anwendet, muss die FPGA-Taktfrequenz 4 x 40 MBit/s
>> = ca. 160 MHz betragen. Das schafft jeder neue FPGA.
> Aber dafür sind u.U. schon Tricks nötig...

Gut, um die VHDL-Programmierung kümmert sich ein Kollege. Der hat so was 
schon bei uns gemacht. Er sagt, es ist die SPI-Datenrate möglich, die um 
Faktor 2 kleiner ist als die Taktfrequenz.

Was meinst du mit Tricks?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was meinst du mit Tricks?
Das sind die Sachen, die nur dein Kollege, nicht aber ein Anfänger kann 
:-)

> Er sagt, es ist die SPI-Datenrate möglich, die um
> Faktor 2 kleiner ist als die Taktfrequenz.
Klar, weil bei jeder Taktflanke des FPGA-Taktes der SPI-Takt 
umgeschaltet werden kann...

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es meldet sich keiner! Vielleicht nur eine kurze Bestätigung, dass es 
eurer Meinung OK ist, oder ein kurzer Hinweis, falls was bedenklich ist!

Oder ist vielleicht der Post zu lang, als dass sich jemand damit 
befassen würde.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@noips (Gast)

>Es meldet sich keiner! Vielleicht nur eine kurze Bestätigung, dass es
>eurer Meinung OK ist, oder ein kurzer Hinweis, falls was bedenklich ist!

Das ist hier keine Onlinekonferenz.

>Gesamt: 9 x 40 x 2 (Sicherheitsfaktor) = 720 FFs --> aufgerundet ca. 800
>FFs.

OK.

>Maßgebend ist die SPI-Rate der schnellsten SPI-Verbindung. Sie soll bis
>ca. 40MBit/s betragen. Bei einem Controller soll der Systemtakt um
>Faktor 2 bis 4 höher als die größte mögliche SPI-Rate liegen.

Das ist aber kein controller, sondern ein FPGA.

> Wenn man
>das hier anwendet, muss die FPGA-Taktfrequenz 4 x 40 MBit/s = ca. 160
>MHz betragen.

Viel zu viel! 40 MHz reichen locker!

> Das schafft jeder neue FPGA.

Aber auch nicht so ohne weiteres.

>Signalspannung (IOs) 3.3V erforderlich, wegen Anbindung an
>RS485-Treiber.

Wozu denn nun schon wieder RS485?

>IO-Bedarf:
>Pro SPI-Modul 6 IOs nötig (MOSI, MISO, SCK, 3 x SS)

Wozu dreimal SS? Hängen PRO MODUL drei ICs dran?

MFG
Falk

Autor: Matthias G. (mgottke)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SPI ist eine synchroner Verbindung. Da muss man, die entsprechenden 
Kenntnisse vorausgesetzt, kein großes Übertakten machen. Allerdings gibt 
es dann irgendwo ein Taktübergang zwischen zwei Taktdomains.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Da muss man, die entsprechenden
> Kenntnisse vorausgesetzt, kein großes Übertakten machen.
Insbesondere, wenn man selber der Master ist...

Der Übergang in die andere Taktdomäne ist dann die LVDS-Seite.

>>>> Vielleicht nur eine kurze Bestätigung, dass es eurer Meinung OK ist
Beschreibe das Verhalten in VHDL und lass den Synthesizer von Lattice 
drauf los. Alternativ auch den von Altera oder Xilinx. Dann bekommst du 
ein Gefühl dafür, wieviele Ressourcen du brauchst. IMHO reicht schon 
eines der kleineren heute verfügbaren FPGAs dafür aus. Sieh dir doch mal 
den Lattice MachXO an...

Autor: noips (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Das ist hier keine Onlinekonferenz.

Entschuldigung, das muss wohl aufdringlich geklungen haben! Das wollte 
ich nicht! Sorry!!! :-(


> Viel zu viel! 40 MHz reichen locker!

Danke für die Berichtigung!!


> Aber auch nicht so ohne weiteres.

Könntest du es bitte etwas näher erklären?


> Wozu denn nun schon wieder RS485?

Die Verbindung mit den SPI-ICs soll über RS485 laufen (so wie im 
angehängten Blockschaltbild gezeigt) weil die Entfernungen hier einige 
Meter erreichen können in einer nicht ganz störungsfreier Umgebung! 
Deinen Hinweis aus dem anderen Beitrag, dass LVDS gar nicht nötig ist, 
habe ich schon zur Kenntnis genommen. Das liegt ja auch noch nicht 
endgültig fest. Es wird wohl erst ohne LVDS aufgebaut und getestet, dann 
weiß man es sicher.


> Wozu dreimal SS? Hängen PRO MODUL drei ICs dran?

Es ist für die Zukunft gedacht, falls da doch mehr Komponenten nötig 
sind, kann man pro Modul dann mehrere Slaves angängen. Auch wenn die 
drei SS nie verwendet werden, stört es ja nicht, außer dass mehr 
IOs/Treiber/Adern im Kabel nötig sind. Wird dann auch langsamer, klar, 
aber man kann dann später entscheiden, welche öfter und welche weniger 
oft abgefragt werden.



> SPI ist eine synchroner Verbindung. Da muss man, die entsprechenden
> Kenntnisse vorausgesetzt, kein großes Übertakten machen. Allerdings gibt
> es dann irgendwo ein Taktübergang zwischen zwei Taktdomains.

>Insbesondere, wenn man selber der Master ist...

Na gut, dann reichen ja auch 40 MHz Takt, wie Falk schon geschrieben 
hat, um so besser! Ich hoffe, der Kollege, der die Programmierung macht, 
hat die entsprechenden Kenntnisse oder eignet sie sich noch an.


Vielen Dank euch allen für eure Antworten und nochmals Entschuldingung, 
dass ich mich so aufdringlich ausgedrückt habe :-(

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@  noips (Gast)

>>>das hier anwendet, muss die FPGA-Taktfrequenz 4 x 40 MBit/s = ca. 160
>>>MHz betragen.
>>>Das schafft jeder neue FPGA.

>> Aber auch nicht so ohne weiteres.

>Könntest du es bitte etwas näher erklären?

Wenn man in die Datenblätter der FPGAs schaut, findet man immer ganz 
dolle Frequenzen, ala 300MHz etc. Das heißt aber NICHT, dass man einfach 
beliebig komplexe Logik mit der Frequenz betreiben kann. Diese 
Frequenzen beziehen sich meist auf einfache, schnelle Schaltungen, z.b. 
ein Schieberegister oder einen kleinen Zähler. Hat man mun komlexe 
Logik, welche viel Kombinatorik benötigt, sinkt die maximale 
Taktfrequenz mal ganz fix auf 30..100 MHz.

MFg
Falk

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.