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!!!!
> 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?
>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?
> 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...
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.
@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
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.
> 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...
> 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 :-(
@ 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