Guten Abend,
Ich hoffe sehr mit diesem Anliegen hier richtig zu sein. Ich bin auf der
Suche nach einem FPGA - vermutlich eher einer FPGA-Wollmilchsau, das ist
mir bewusst, jedoch probiere ich es trotzdem mal hier im Forum. Ich habe
mich bereits bei einigen FPGA Herstellern umgesehen,jedoch ist die
auswahl fast noch ein wenig schlimmer als bei OpAmp's, wenn man nicht
genau weiss was man möchte. Zusätzlich habe ich keine Kentnisse von
FPGA's und vorallem nicht von der Menge an (benötigten Logikzellen).
Meine Anforderung ist es, schnelle Pulse zu erkennen und mit einem
relativ schnellen ADC (bereich 200MSPS) zu digitalisieren. Per
Comparator wird eine Schwelle detektiert, dann soll losgesamplet werden
bis der Comparator wieder abfällt.
Optimalerweise soll im FPGA gleich die Spitze ermittelt werden. Da ich
herausgelesen habe (korrigiert mich sollte ich falsch liegen) das FPGA
eher ungeeignet für "Anspruchslose Task sowie Kommunikation" sind,
möchte ich das Ergebniss an einen MCU weitergeben. Der MCU bedient
einige Nebenaufgaben wie Temperaturmessung (I2C), Schnittstellen
(USB,RS232), DAC sowie GPIO. Hier möchte ich auf STM32 setzen, da ich
diese bereits kenne.
Der FPGA hat also folgende Anforderungen zu erfüllen:
- Genügende Taktrate für Auswertung eines 200MSPS ADC inkl. genügend
Reserve
- Möglichst kleine, angemessene Bauform (kein 144-pin IC für ~20pins)
- Optimalerweise QFP/QFN
- Gutes Preis-Leistungs-Verhältniss
- Einfach Programmierung bzw. verständliche Software welche
"Anfängerertauglich ist)
- Einfache Versorgung
Das mag natürlich nach einer Wollmilchsau klingen, jedoch sind das in
etwa meine Anforderungen.
Ich habe bereits mal ins blaue heraus bei Digikey nach den mir bekannten
möglichen Anforderungen gesucht (Günstig & kleine Bauform) und bin auf
folgende Typen gestossen:
Lattice ICE5LP1L-SG48TR 2.75$ 1.1k Logikzellen, 64k RAM QFN32
Efinix T8Q144C3 4.45$ 7.3k Logikzellen, 128k RAM QFP-144
XILINX XC3S50AQG100c 8.3$, 1.5k Logikzellen, 184k RAM, LQFP100
Jedoch sagt mir das leider alles nicht wirklich viel.
Aus diesem Grunde wollte ich hier bei euch mal nachfragen, ob mir jemand
entsprechende Teile empfelen kann oder zumindest eine Schnellauskunft
geben kann, wieviele Logikzellen etc überhaupt benötigt werden.
Viele Grüsse
Julian
Julian schrieb:> Ich hoffe sehr mit diesem Anliegen hier richtig zu sein.
Eher nicht. Fragen zu FPGAs wirst du besser im Unterforum
https://www.mikrocontroller.net/forum/fpga-vhdl-cpld los
Dort sind Fragen zur Anwendung von CPLD & FPGA, VHDL, Verilog usw.
deutlich besser aufgehoben. Für Mikrocontrollern oder digitaler
Elektronik ist das Thema nicht so wirklich passend.
Julian schrieb:> Ich habe bereits mal ins blaue heraus bei Digikey nach den mir bekannten> möglichen Anforderungen gesucht (Günstig & kleine Bauform) und bin auf> folgende Typen gestossen:
Suchst du einen einzelnen FPGA oder ein Eval-Board?
Privat oder kommerziell? Da ist für die Auswahl der Tools wichtig.
Die Anzahl der Logikzellen wird vermutlich gar nicht der wichtige Punkte
sein sondern die Menge an integriertem RAM (oder gleich externen
einsetzen)
Grundsätzlich suche ich einen FPGA, wenn aber ein EVAL-Board für den
selben bzw. ähnlichen FPGA verfügbar ist, wäre das ein toller Bonus.
Der Einsatz ist nur privat/open source gedacht.
Bezüglich Ram mache ich mir die folgenden Gedanken:
200MSPS / 14bit ADC ergibt 14bit per 5ns.
Da die Pulse max. 12us lang sind, bedeutet das maximum 2,4k Samples,
also rund 34k an Daten pro Event, welche nach dem "versenden" direkt
wieder gelöscht werden dürfen.
Julian schrieb:> Meine Anforderung ist es, schnelle Pulse zu erkennen und mit einem> relativ schnellen ADC (bereich 200MSPS) zu digitalisieren. Per> Comparator wird eine Schwelle detektiert, dann soll losgesamplet werden> bis der Comparator wieder abfällt.
Was sind das denn für Impulse?
Und je nach ADC geht das vielleicht nicht. Schnelle ADCs haben oft eine
Pipeline, sprich wenn du jetzt anfängst zu sampeln, dann bekommst du
erst mehrere Takte später dein erstes valides Ergebnis. Ich würde also
dauerhaft sampeln.
Aber es gibt auch mehrere andere Möglichkeiten wie eine
Peakhalteschaltung. Die gehaltene Spannung kannst du dann gemütlich
abtasten. Das geht aber nur wenn die Impulse nicht zu schnell
ancheinander reinkommen.
Dein FPGA haengt massgeblich vom ADC Typ ab und welche IO du dann genau
brauchst. Die 200 MSPS sind mit modernen und gaengigen Typen kein
Problem. Bei einem 14 bit ADC brauchst du aber schonmal eine
Schnittstelle die 2.8 Gbps schafft. Das ist dann schonmal ne Hausnummer
und da grenzt sich dann langsam auch die Auswahl ein. ;-)
Hast du schon einen ADC in Aussicht oder kennst zumindest die
Schnittstelle zum ADC?
Julian schrieb:> Das mag natürlich nach einer Wollmilchsau klingen, jedoch sind das in> etwa meine Anforderungen.
Das ist weit weg von der Wollmilchsau :-) Du suchst nach einem sehr
minimalistischen FPGA (was OK ist für deine Anforderungen) und deine
Auswahl bestätigt das ja auch z. B. im Preis.
Julian schrieb:> Lattice ICE5LP1L-SG48TR 2.75$ 1.1k Logikzellen, 64k RAM QFN32> Efinix T8Q144C3 4.45$ 7.3k Logikzellen, 128k RAM QFP-144> XILINX XC3S50AQG100c 8.3$, 1.5k Logikzellen, 184k RAM, LQFP100
Bestätigt was ich so aus dem Kopf heraus gewusst hätte. Ausser Lattice
macht keiner der bekannteren Hersteller FPGAs in solch kleinen Gehäusen.
Efinix ist ziemlich neu, würde mich mal interessieren ob hier im Forum
schon jemand Erfahrung damit hat. Lattice liefert ordentliche Arbeit ab,
gibt hier im Forum auch diverse Anwender.
Den Xilinx XC3s50 kannst du wieder streichen, der ist schon soo alt, das
ich den sicher nicht in ein neues Design einplanen würde.
Julian schrieb:> einige Nebenaufgaben wie Temperaturmessung (I2C), Schnittstellen> (USB,RS232), DAC sowie GPIO. Hier möchte ich auf STM32 setzen, da ich> diese bereits kenne.
Macht Sinn. Jeder Baustein für das, was er gut kann und bestehendes
Wissen nutzen.
Zusätzlich: Gerade bei Open Hardware Projekten besteht so wenigstens
Chance, dass andere Personen bei der Mikrocontroller Software mithelfen.
Open Source FPGA Projekte bestehen sehr oft nur aus dem Maintainer.
Tobias B. schrieb:> Dein FPGA haengt massgeblich vom ADC Typ ab und welche IO du dann genau> brauchst.
Aber wie Tobias schreibt, das ADC Interface ist entscheidend. Je nach
dem wirst du so auch ADC und FPGA zusammen auswählen, damit das
Gesamtkonzept am Günstigsten ist.
Julian schrieb:> Schnellauskunft> geben kann, wieviele Logikzellen etc überhaupt benötigt werden.
Da sich der übliche Entwicklungsablauf von Embedded Software und FPGAs
doch recht stark unterscheidet, tendieren FPGA Entwickler dazu, ihre
kritischen Funktionen zuerst zu Entwickeln und in der Simulation zu
debuggen. Danach wird mit den entsprechenden FPGA Herstellertools
geschaut, wie viele Ressourcen gebraucht werden und ob die geforderte
Taktfrequenz erreicht werden kann und so die passende FPGA Familie
ausgewählt (oder nochmals die Architektur überarbeitet).
Julian schrieb:> Optimalerweise soll im FPGA gleich die Spitze ermittelt werden. Da ich> herausgelesen habe (korrigiert mich sollte ich falsch liegen) das FPGA> eher ungeeignet für "Anspruchslose Task sowie Kommunikation" sind,> möchte ich das Ergebniss an einen MCU weitergeben.
Wieso ungeeignet? Du kannst dem Design noch einen uC-Softcore spendieren
und den auf deine Zwecke (Peripherie) so anpassen, dass er alle 'doofen'
Aufgaben macht, wie Daten aufs Ethernet rausschaufeln, etc.
Etwas, wo man mit reiner HDL eine Menge Zeit verbrät und Fehler sucht.
Dazu kommt immer der Knackpunkt: Wie kriege ich die Daten weg. Ethernet
und DMA ist schneller entwickelt als eine puffernde Lösung mit
Memorycontroller.
Wenn du schnelle ADC-Sachen machen willst, fällt der ICE40 aber eher
raus. Würde eher MachXO2 oder Spartan6-LX9 nehmen (den kriegt man auch
schon ab 2 USD beim Chinesen). Oder gleich ein Community-Brettle mit
ECP5 und yosys, wo du nicht dauernd nerviges Gehampel mit Lizenzcodes
hast, die auslaufen.
Bei den Signalen handelt es sich sich um Pulsen von einem
Sikion-Fotovervielfacher (SiPM), ähnlich einer Standart
Fotovervielfacherröhre nur sind diese etwas kürzer.
Es gibt ein fertiges Modul der Firma Amptek (DP5) Dort wird auch per
FPGA gesampelt und dann an einen 8051 MCU weitergegeben. Auf dem Board
ist ein grosser IC zu sehen, was stark nach eine FPGA aussieht,
natürlich ist der undokumentiert. Der Analogteil ist jedoch sehr gut
Dokumentiert (Schema verfügbar) und kann daher nachgebaut werden.
Ich hätte jetz nach einem Paralellen ADC gesucht, da dieser ja am
wenigsten "Datenstrom" produziert. Bei einem Seriellen muss die
Taktfrequenz ja aum ein weites höhers ein als der ADC.
Beispielsweise der AD9262 wäre für mich jetz interessant (16bit,
160MSPS)
Bei dem ADC ist es aber nix mit einmal Abtasten nach einem Trigger. Das
dauert viele Takte bis aus dem ein brauchbares Ergebnis rauskommt. Da
würde ich die ganze Zeit abtasten.
Das parallele Interface ist gut, da kann man auch alte langsamere FPGAs
anschließen und braucht keine SerDes.
Der sollte klar sein, dass der ADC nur eine geringe Analogbandbreite
hat. Jedenfalls nicht die halbe Abtastrate. Sonst würde ich den Ad9650
empfehlen. Aber der kostet viel und fällt unter die Exportkontrolle bei
den schnelleren Modellen.
Julian schrieb:> Ich hätte jetz nach einem Paralellen ADC gesucht, da dieser ja am> wenigsten "Datenstrom" produziert. Bei einem Seriellen muss die> Taktfrequenz ja aum ein weites höhers ein als der ADC.>> Beispielsweise der AD9262 wäre für mich jetz interessant (16bit,> 160MSPS)
Damit bleibt deine riesige Auswahl, riesig. Das bekommt so ziemlich
jeder FPGA ohne grosse Muehe hin. Und das Konzpt mit dem separaten STM32
ist wie Christoph schon schrieb, voellig in Ordnung.
Jetzt haengt es noch davon ab was mit den ADC Daten passieren soll.
Werden die RAW irgendwo ausgegeben (z.B. zum STM32 gesendet) oder musst
du die sogar vorher irgendwie bearbeiten weil der STM32 nicht genug
Rechenpower hat? Was waere hier die Schnittstelle zwischen FPGA und
STM32?