mikrocontroller.net

Forum: FPGA, VHDL & Co. FPGA für Regelung


Autor: Tec Nologic (tecnologic) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin Zusammen,

Konkret habe ich ein Projekt in dem ich einen STM32F767 einsetze, der 4 
Sigma-Delta-Modulatoren einließt und verarbeitet. Nach etwas rechnerrei 
fällt ein Duty für die 100kHz PWM raus. Bei 100KHz habe ich bei der CPU 
ca. 10Bit Auflösung, das ist mir schon öfter negativ aufgefallen 
(pendeln im LSB).
Außerdem hätte ich gern noch mehr ADCs der STM hat aber nur 4 Filter.

Deshalb würde ich mich gern in FPGAs einarbeiten und suche ein Dev-Board 
mit FPGA um die schnelle Logic im FPGA zu realisieren.

Der verwendete FPGA sollte aber noch in QFP erhältlich sein, sprich 
handlötbar. (LQFP208 mit 0,5mm Pinch ist kein Problem).

Das angepeilte Design würde enthalten:
- mehr als 4 Decimationsfilter für Sigma-Delta ADCs (21MHz Sample Takt)
- High Resolution PWM (100kHz 12Bit Auflösung wäre schön), mit Deadtime 
usw.
- Datenvorverarbeitung/schnelle Regelung gesteuert von einem STM32.
  ( Mittelwert, Differenziale von bis zu 64 samples der ADCs, nix wildes 
)

Ich habe leider keine Ahnung welchen Hersteller ich da nehmen kann.

Reicht für sowas ein Lattice MachXO2 oder ähnlich oder brauche ich was 
größeres?
Würde gern gleich ein Board anschaffen wollen auf dem ich entwickeln 
kann das aber auch für den Prototyp reicht. Ich hab zwar mal in der Uni 
VHDL auf einem Xilinx gemacht aber das ist Jahre her. Deshalb brauche 
ich auch etwas mit Einsteigerfreundlicher Doku.

Gruß

Tec

Autor: Martin S. (strubi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

die MachXO2 haben m.W. keine Multiplier, deine Filter könnten die 
schnell vollmachen. Sonst sind die XO2/3 schön schnell, aber noch 
bisschen teuer...
Ansonsten nehme ich für sowas gerne den Spartan6 im TQ144, da passt noch 
locker ein ZPUng-Core für die Konfiguration mit rein.
Allenfalls hätte ich was in der Richtung, aber das muss noch durch ein 
paar Tests. Wenn du sonst nix findest, melde dich gerne per PM.

Autor: Tec Nologic (tecnologic) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

mmhh. Sehe ich das richtig das der Spartan 6 der letzte ist den es noch 
in TQFP gibt von Xilinx? Ansonsten hört sich das gut an. Ich befürchte 
das ist in ein 2 jahren nix mehr von Xilinx in QFP bekomme. Nur noch 
Reste auf Ebay... Oder über sehe ich was. Und Warum benutzen die keine 
geläufigen Gehäusebezeichungen?

Außerdem bekomme ich die anscheinend nur bei Digikey, ich bestelle aber 
lieber bei Mouser.
http://eu.mouser.com/ProductDetail/Lattice/LFXP2-5...
Wie ist sowas?

Das Board würde mir auch gefallen, aber gibts die Atix7 in TQFP.
http://eu.mouser.com/ProductDetail/Digilent/410-31...


TQFP schränkt die Auswahl echt ein.

Autor: Andi (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Altera/Intel MAX10 ist für sowas gut geeignet, da hast du nicht nur TQFP 
144 Gehäuse, sondern auch das Config-Flash und die Spannungsregler auf 
dem Chip.
Die haben viele Multiplizierer und sind auch bei Mouser erhältlich.

Inzwischen gibt es viele MAX10 Entwicklungs-Boards, teilweise auch als 
Production-Boards verwendbar (siehe Beitrag FPGA IoT MakerBoard).

Andi

Autor: Martin S. (strubi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tec N. schrieb:
> mmhh. Sehe ich das richtig das der Spartan 6 der letzte ist den es noch
> in TQFP gibt von Xilinx? Ansonsten hört sich das gut an. Ich befürchte
> das ist in ein 2 jahren nix mehr von Xilinx in QFP bekomme

Keine Bange, den wird's noch lange geben, notfalls vom chinesischen 
Broker.

Autor: Edi. M. (Firma: Industrie 1.0) (elektromeister)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PWM in 12 Bit mit 100kHz, also 4 Ghz? Viel Spass.
Wir hatten die Sache mit den PWM 100kHz schon mal, meine Ich. Schein 
zweimal, sogar.

Beitrag "PWM 100 kHz, minimum 16 Bit Auflösung"

Autor: Andi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meister E. schrieb:
> PWM in 12 Bit mit 100kHz, also 4 Ghz? Viel Spass.

Ganz so schlimm ist es auch wieder nicht, 12Bit * 100kHz ergibt 409.6 
MHz clock , und das ist auf highend FPGAs schon erreichbar. Auf den oben 
erwähnten Chips ist wohl etwa die Hälfte realistisch, also 11Bit/100kHz 
oder halt 12Bit/50kHz

Andi

Autor: Lothar (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tec N. schrieb:
> Konkret habe ich ein Projekt in dem ich einen STM32F767

Ein Pi 1 unter RiscOS pico mit externem parallel ADC z.B. sollte das 
billiger schaffen.

http://www.linear.com/product/LTC2145-14

Oder ein Cortex-R5 statt einem Cortex-M7 z.B.

http://www.ti.com/lsds/ti/microcontrollers-16-bit-...

Autor: Tec Nologic (tecnologic) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andi schrieb:
> Altera/Intel MAX10 ist für sowas gut geeignet, da hast du nicht nur TQFP
> 144 Gehäuse, sondern auch das Config-Flash und die Spannungsregler auf
> dem Chip.
> Die haben viele Multiplizierer und sind auch bei Mouser erhältlich.
>
> Inzwischen gibt es viele MAX10 Entwicklungs-Boards, teilweise auch als
> Production-Boards verwendbar (siehe Beitrag FPGA IoT MakerBoard).
>
> Andi

Ich hab mal bei mouser direkt nach dem MAX 10 geguckt. Das ja n 
Schnapper der kleinste für 7€ das Stück, das doch schon mal ein Wort.

Meister E. schrieb:
> PWM in 12 Bit mit 100kHz, also 4 Ghz? Viel Spass.
> Wir hatten die Sache mit den PWM 100kHz schon mal, meine Ich. Schein
> zweimal, sogar.
>
> Beitrag "PWM 100 kHz, minimum 16 Bit Auflösung"

Ich dachte auch nicht an eine PWM die direkt die 12Bit zählt. Sondern 
sowas wie eine High Resolution PWM die einen PWM LSB noch in sagen wir 
5Bit aufteilt. Meine Hoffnung ist das ich diese Peripherie mit einem 
FPGA nachgebaut bekomme.

Lothar schrieb:
> Ein Pi 1 unter RiscOS pico mit externem parallel ADC z.B. sollte das
> billiger schaffen.
>
> http://www.linear.com/product/LTC2145-14
>
> Oder ein Cortex-R5 statt einem Cortex-M7 z.B.
>
> 
http://www.ti.com/lsds/ti/microcontrollers-16-bit-...

Ah für den 60€ ADC mit nur 2 Kanälen kann ich mir ja dutzende Boards 
aufbauen. Wenn ich allein 3 von den Dingern brauche. Zumal ich meine 
Sigma Deltas mit +-50mV Eingang schon sehr charmant finde.

Außerdem ist der R5 nur in BGA erhältlich und TI will ich mir bei 
Prozessoren eigentlich nicht antun. Meine Zeit kann ich schöner 
verbrennen.

Ich werde mir das MAX10 Board mal bestellen. Das Ding ist aktuell und 
Altera ist ja kein schlechter Name.

Danke für die Antworten.

Gruß

Tec

: Bearbeitet durch User
Autor: Edi. M. (Firma: Industrie 1.0) (elektromeister)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tec N. schrieb:
> Ich dachte auch nicht an eine PWM die direkt die 12Bit zählt. Sondern
> sowas wie eine High Resolution PWM die einen PWM LSB noch in sagen wir
> 5Bit aufteilt.

Wie möchtest Du das denn konkret realisieren? Bin gespannt. Schaltung?

Andi schrieb:
> Ganz so schlimm ist es auch wieder nicht, 12Bit * 100kHz ergibt 409.6
> MHz clock

Rechnen nach 23.00 Uhr :-) :-)

Autor: Tec Nologic (tecnologic) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Edi M. schrieb:
> Wie möchtest Du das denn konkret realisieren? Bin gespannt. Schaltung?

Keine Ahnung. Dafür habe ich zu wenig Erfahrung mit FPGAs.

Ich stelle mir das so vor, dass ich einen normalen sagen wir 100MHz 
Zähler habe der ein PWM Signal generiert. Dieses Signal wird von einem 
Gatter übernommen das von einem Phasenverschobenen 100MHz Takt getrieben 
wird. Und diese Phasenverschiebung muss variabel sein. Die Frage ist ob 
das eine PLL in 10µs ausregeln kann und ob das überhaupt so geht. Aber 
sowas hat bestimmt schon mal jemand gemacht. Die Peripherie in einigen 
DSPs muss ja auch in reiner Digital-Technik laufen.

Gruß

Tec

Autor: Strubi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

ich würde mir das PWM-Konzept nochmal durchdenken, ob es nicht auch 
anders geht, denn solche Delay-Tricksereien für hohe Auflösung brauchen 
gehörig Erfahrung, abgesehen davon wird dir aber deine Taktquelle 
Probleme machen. Die hohe Auflösung bringt dir nix, wenn deine Referenz 
jittert, je nach FPGA-Technologie hast du da ganz unterschiedliches 
Verhalten der PLLs.
Was willst du denn mit den PWMs erreichen? Analogwerte ausgeben ginge 
anders eleganter...

Autor: Tec Nologic (tecnologic) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich steuere mit dem PWM Vollbrücken Stepdown/Up Wandler. Bei 48V 
Eingangsspannung und 5V Ausgang habe ich echt viel Ripple allein auf dem 
Strom nur weil der Duty im LSB kippt. Mit einem STm32F373 der so eine 
HRPWM hat geht das viel schöner. Da habe ich aber wieder das Problem das 
der nur SAR ADCs hat und ich damit einen lückenden Strom in der Spule 
nicht sauber erkennen kann. Deshalb die Sigma Deltas die einen sauberen 
Messwert liefern mit der Sample Gewichtung wie ich sie haben will. Das 
ist schon echt geil.

Autor: Weltbester FPGA-Pongo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tec N. schrieb:
> Ich stelle mir das so vor, dass ich einen normalen sagen wir 100MHz
> Zähler habe der ein PWM Signal generiert. Dieses Signal wird von einem
> Gatter übernommen das von einem Phasenverschobenen 100MHz Takt getrieben
> wird. Und diese Phasenverschiebung muss variabel sein.

Sicher können FPGAs mit 10us genau arbeiten, aber Deine Idee hat mit 
FPGA nichts zu tun, sondern einfach mit einem wirren Konzept. Du musst 
Dir erst einaml überlegen, was Du haben willst.

Schaltung hinmalen!

Autor: M. M. (blackcow)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Nur mal ne Idee. So würd ich's probieren.

PS: Funktioniert so nicht, aber wenn man die 8-Bit-PWM benutzt um beim 
R2R-Netzwerk zwischen den Werten des Dutycyles (bzw. der letzten 4 Bits) 
hin- und herschaltet müsste es gehen.

: Bearbeitet durch User
Autor: M. M. (blackcow)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
So in der Art.

Autor: Tec Nologic (tecnologic) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin M.M.

so wie ich deinen Vorschlag verstehe habe ich dann aber ein Analog 
Signal. Ich will aber eine PWM für eine Halbbrücke haben. Mein Problem 
ist eigentlich nur, dass ich keinen Controller finde mit einer HRPWM 
(<<10ns Auflösung der Pulsbreite) und integriertem Dezimationsfilter für 
die Signale von Sigma-Delta-Modulatoren.

Diese HRPWM Peripherie muss doch auch in Digital Technik realisiert 
worden sein von den Herstellern. Wenn meine Vermutung passt muss das 
doch in einem FPGA realisierbar sein.

@edit: 
https://www.researchgate.net/profile/Sivanandam_Ka...

an sowas dachte ich. Nur ist ein Virtex-6 unnötig groß für meine Zwecke 
glaube ich.

Gruß

Tec

: Bearbeitet durch User
Autor: Edi. M. (Firma: Industrie 1.0) (elektromeister)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tec N. schrieb:
> Keine Ahnung. Dafür habe ich zu wenig Erfahrung mit FPGAs.
Das sind die besten Voraussetzungen. Ich hoffe, Du baust an einem 
Hobbyprojekt und nicht an einem sicherheitskritischen System.

Tec N. schrieb:
> Diese HRPWM Peripherie muss doch auch in Digital Technik realisiert
> worden sein von den Herstellern. Wenn meine Vermutung passt muss das
> doch in einem FPGA realisierbar sein.
Sicher geht das und ein Dezimationsfilter braucht nicht unbedingt einen 
Virtex. Es kommt nur auf die Eingänge an, mit denen Du abtastest und 
wie.

Den Virtex dürfte der im link genannte Herr benutzt haben, weil er ihn 
rumliegen hatte :-)

Das Dezimieren kann man beliebig kompliziert machen. Einfach das Signal 
auf den Pin geben, wird aber nicht unbedingt zielführend sein, wegen 
Schaltschwellen, Rauschen etc. Das Abtastproblem kommt hinzu.

Wichtigster Tipp: Ich würde mal erst den Filter weitgehend bauen und 
simulieren und mir dann den passenden FPGA aussuchen. Vielleicht auch 
mit etwas Reserve für weitere Kanäle und wer weiß was sonst noch ...

Ich nehme an, der FPGA soll auch die Halbbrücke treiben?
Da kommt dann nochmal das Thema Schaltschwellen, Pegel und 
Phasenrauschen rein. Je nach Analogbeschaltung kriegst Du das mit 
gefühlt

Autor: Steini (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Edi. M. A. schrieb:
> Je nach Analogbeschaltung kriegst Du das mit
> gefühlt

... da fehlt noch was, oder?

"Lattice MachXO2"

Sollte für die Anwendung bequem reichen, denke Ich, wenn der FPGA sonst 
nichts macht. Komplizierte Regelungen würde Ich aber nicht im FPGA 
machen oder in einem ausreichend ausgebauten, wo ein richtiger 
Signalprozessor implementiert werden kann.

Autor: Thomas U. (thomasu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kommt drauf an, es gibt Anwendungen, die im FPGA deutlich besser 
aufgehoben sind. Gerade bei schnellen Regelungen. Flugzeugtriebwerke 
brauchen z.B. eine schnelle Signalverabeitung mit hochgenauer Regelung 
bei hoher Abtastrate.

: Bearbeitet durch User
Autor: Tec Nologic (tecnologic) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich will nur die Signalvorverarbeitung bzw. Nachbearbeitung im FPGA 
machen.
Also quasi Berechnen der PWM Dutys und Berechnung verschiedenerer 
Messwerte aus den ADC Kanälen.

ich habe mich da jetzt auf den MAX10 eingeschossen, weil ich mit Altera 
auf einem Cyclone V gute Erfahrungen gemacht habe, zwar nur mit der SW 
auf dem ARM aber Quartus gefiel mir eigentlich ganz gut.

: Bearbeitet durch User
Autor: Weltbester FPGA-Pongo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Worin besteht denn nun das konkrete Problem oder die Frage?

Was soll denn z.B. der FPGA leisten, was der Prozessor nicht leisten 
konnte?

Autor: Fjuri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ziemlich genau sowas habe ich mal gemacht. Mehrere Sigma-Delta-Signale 
einlesen, filtern, regeln und als PWM-Signal ausgeben. Die PWM-Frequenz 
lag bei 250 kHz, die Auflösung weiß ich aber nicht mehr.
Dafür habe ich einen SmartFusion2 von Microsemi benutzt. Das ist ein SoC 
und hatte den Vorteil, dass die USB-Kommunikation zur Einstellung der 
Reglerparameter über der Prozessor lief und normal in C++ programmiert 
werden konnte.

Dabei war wichtig, dass Fehler schnell erkannt werden. Deshalb wurden 
die Eingangsdaten einmal mit hoher Auflösung und einmal mit geringer 
Auflösung, aber dafür sehr schnell, gefiltert. Das konnte parallel 
laufen und während ein Filter das Signal mit hoher Auflösung errechnet 
hat, konnte gleichzeitig über ein anderes Filter mit wenigen Takten 
Verzögerung auf Fehlerfälle reagiert werden.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Je nachdem kann man das Problem auch mit Dithering lösen. Die PWM 
wechselt je nach eingestellten Sollwert zwischen zwei Weiten hin und 
her.

Autor: Fjuri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> Je nachdem kann man das Problem auch mit Dithering lösen. Die PWM
> wechselt je nach eingestellten Sollwert zwischen zwei Weiten hin und
> her.
Oder, je nachdem was man regeln möchte, über eine Sigma-Delta-Modulation 
wieder ein 'Sigmal-Delta-Signal' erzeugen. Die Modulation funktioniert 
nicht nur in analog-zu-digital-Richtung.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Tec Nologic (tecnologic) Benutzerseite

>Signal. Ich will aber eine PWM für eine Halbbrücke haben. Mein Problem
>ist eigentlich nur, dass ich keinen Controller finde mit einer HRPWM
>(<<10ns Auflösung der Pulsbreite) und integriertem Dezimationsfilter für
>die Signale von Sigma-Delta-Modulatoren.

Dies Kombination wird eher schwierig. Aber es gibt diese PWM-Generatoren 
als IC.

http://www.ti.com/power-management/digital-power/o...

Dort sind auch schon komplette Controller mit allem PiPaPo vorhanden. Ob 
das in dein Konzept paßt weiß ich nicht.

>Diese HRPWM Peripherie muss doch auch in Digital Technik realisiert
>worden sein von den Herstellern.

Ist sie auch.

> Wenn meine Vermutung passt muss das
>doch in einem FPGA realisierbar sein.

Jain. Sowas wurde von mehreren Leuten gebaut, ist aber als Soft-Core 
aufwändig und eher nicht sooo doll. Wenn man "nur" 100kHz/12 Bit == 
410MHz braucht schafft man das einfacher mit normaler FPGA-Logik. Ein 
"langsamer" Block mit 50-100 MHz berechnet die Daten, welche dann von 
einem schnellen Datenblock serialisiert ausgegeben werden. Mit DDR-IOs 
sind das nur 205 MHz, das kann auch ein Spartan6.

Und vergiss die Fokusierung auf QFP. Im Zweifelsfall musst du halt ein 
Mini-board auflöten. Oder vom Profi löten lassen.

>an sowas dachte ich. Nur ist ein Virtex-6 unnötig groß für meine Zwecke
>glaube ich.

In der Tat.

Der Trick mit den angezapftzen Gattern zur Generierung von 
phasenverschobenen Takten gibt es seit Ewigkeiten auch in FPGAs, so z.B. 
in den DLLs bei Xilinx, den IO-Delay Elementen etc. Das sind aber als 
Hard-Cores, die von vielen Leuten mit noch viel mehr Know How gebaut 
wurden.

Autor: Thomas U. (thomasu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Soviel Knowhow, um einen Takt zu schieben, braucht es auch nicht, meine 
Ich.

Am meinsten Knowhow braucht man wohl, um zu erkennen, dies hier ein FPGA 
gar nicht von Nöten sein dürfte, weil Filterung auf mehreren Kanälen 
auch mit einem uc zu bewerkstelligen ist. Man darf eben bei PWM nicht in 
Zeitscheiben denken, wie das die Meisten wohl tun, siehe hier:

Beitrag "Re: Differenzieren in VHDL"

Der FPGA kann solche Sachen nämlich auch asynchron berechnen und zuvor 
sampeln. Dann ist man nicht an dessen Taktfrequenz und Auflösung 
gebunden.

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.

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