Forum: FPGA, VHDL & Co. Habt Ihr aktuelle FPGA Projekte ?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Oliver D. (unixconf)


Lesenswert?

Hi,
habt Ihr aktuelle FPGA-Projekte, am besten abseits von blinkenden LED's 
oder weiteren Softcores ?!

Real life Projekte die ohne FPGA kaum möglich sind.

Gruß,
 Olli

von Oliver D. (unixconf)


Lesenswert?

Also mein aktuelles Projekt ist ein Realtime-IO Board für LinuxCNC:

https://github.com/multigcs/LinuxCNC-RIO

Soetwas ähnliches gibt es auch auf MCU basis, aber dort kommt man 
schnell an die grenzen bei hohen frequenzen (jitter) und vielen IO's

von Jens W. (jensw)


Lesenswert?

Ich habe drei Projekte an denen ich immer abwechselnd was mache.
1. Feldorientierte Regelung mit FPGA. Das geht auch mit einem µC, aber 
ich wollte es eben mit dem FPGA machen. Das ist fertig und läuft.
2. LCR-Meter mit Audio ADC. Da bin ich gerade drüber. Geht aber 
prinzipiell auch mit einem µC. Da bin ich gerade drüber.
3. Portierung von GRBL aufs FPGA. Da wird es schon spannender. Da kommt 
ein µC an die Grenzen, wenn die Anzahl der Achsen steigt. Ich habe 6 
Achsen implementiert im Moment. Da fehlt noch der letzte Schliff und 
ausreichende Tests. Da ist noch einiges zu tun.

Grüße, Jens

von Oliver D. (unixconf)


Lesenswert?

Hi Jens,
Cool, gibt es links dazu ?
über 1. und 2. hatte ich auch schonmal nachgedacht, klinkt beides sehr 
spannend.

Gruß,
 Olli

von Jens W. (jensw)


Lesenswert?

Hi Olli,

da gibt es noch keine Links dazu. Ich hab das bisher nirgends 
veröffentlicht.
Hast du mit Motor Control schon was gemacht?
Oder mit einem LCR Meter?

Grüße, Jens

von Oliver D. (unixconf)


Lesenswert?

Jens W. schrieb:
> Hast du mit Motor Control schon was gemacht?

nicht wirklich, also stepper treiber für Halb/Voll schritt in meinem RIO 
projekt, aber leider noch nichts in sachen BLDC oder FOC.
Ich schau mitr das immer mal wieder an, da es cool wäre wenn ich FOC 
direkt mit im FPGA hätte, allerdings ist mir das im moment noch zu 
kompliziert :(

Jens W. schrieb:
> Oder mit einem LCR Meter?

mit LCR Meter hatte ich bisher noch garnichts zu tun, daher auch keine 
ambitionen in diese richtung.

von Vancouver (vancouver)


Lesenswert?

Ein digitaler HF-Receiver (speziell für Kurzwelle). IQ-Demodulation und 
Tiefpassfilterung analog, alles weitere im FPGA. Das ginge zwar auch auf 
einem Microcontroller, wäre aber nicht unbedingt einfacher. Und je 
länger ich mich damit beschäftige, umso unsinniger erscheint es mir, 
Signalverarbeitung in Software zu machen - FPGA sind dafür wie 
geschaffen.

Das Ganze ist ein eher langfristiges Projekt, hauptsächlich um zu 
lernen, wie die Signalverarbeitung für HF funktioniert. Deswegen will 
ich auch alle Module selbst implementieren. Bisher gibt es nur ein paar 
Fragmente: CORDIC für Betrags/Phasenbildung der IQ-Kanäle, 
Hilbert-Transformation (für SSB), DC-Cancellation. Audio soll über I2S 
rausgehen, aber das existiert noch nicht. Der erste Milestone wird es 
sein, ein einfaches AM Signal von einem DDS-Generator zu demodulieren.

von J. S. (engineer) Benutzerseite


Lesenswert?

Oliver D. schrieb:
> habt Ihr aktuelle FPGA-Projekte,
Ja. Eins mit SoC, FPGA und mehreren Karten

>abseits von blinkenden LED'
Das System tut in der Tat mehr, als nur zu blinken, aber lustigerweise 
spezifiziere gerade die Fehlermeldungen, die die LED anzeigen soll :-)

von Antti L. (trioflex)


Lesenswert?

Oliver D. schrieb:
> Hi,
> habt Ihr aktuelle FPGA-Projekte, am besten abseits von blinkenden LED's
> oder weiteren Softcores ?!
>
> Real life Projekte die ohne FPGA kaum möglich sind.

ein Projekt was wirklich spannend war, war SDR mit diesen hardware:
https://www.arrow.com/en/products/analogmax-daq1/trenz-electronic-gmbh?q=ANALOGMAX-DAQ1

Da ist ein 20 bit ADC mit 1MSPS drauf, und kleines 10M08 MAX 10 FPGA.

Da habe in FPGA den ADC interface und SDR frontend gebaut:
DDS-LO, IQ Mischer, Filters und downsampling, danach hat ein NIOS II 
design die IQ werte über UART rausgegeben.
Die filters wurden mit den kostenlosen
http://t-filter.engineerjs.com/
gemacht. Interessant war zu sehen das die relative wenig FPGA resourcen 
gebraucht haben.

Dann habe ich einen winrad ExtIO kompatibles DLL geschrieben, was die 
daten von UART gelesen hat, und als IQ samples bereitegestellt hat.

Für Anzeige habe ich dann sodira SDR genommen mit meinen ExtIO DLL
https://www.sodirasdr.de/index.html

Das hat soweit funktioniert das DCF77 time code wurde erfolgreich 
decodiert!

War schon spannend zu sehen wie aus Daten die wie Müll aussehen mit dem 
SDR plötzlich saubere Signale und Daten kommen.

Ich habe da viel spass gehabt. Es ist erstaunlich wie viele radiosender 
auf dem LW noch gibt. Jede menge sender zu sehen in unter 300KHz band.

: Bearbeitet durch User
von Martin S. (strubi)


Lesenswert?

Oliver D. schrieb:
> Hi,
> habt Ihr aktuelle FPGA-Projekte, am besten abseits von blinkenden LED's
> oder weiteren Softcores ?!
>
> Real life Projekte die ohne FPGA kaum möglich sind.

Jetzt gibt's Futter fuer die Trolle. Leider sind es bei mir genau die 
blinkenden LEDs, allerdings in der Neopixel-Form und das ganze mit 
Ethernet/PoE-Anbindung. FPGA darum, weil sich damit synchron eine ganze 
Latte dieser Leuchtschlangen ansteuern lassen. Wurde fuer fernsteuerbare 
Beleuchtung fuer Kunstprojekte (Schneeskulpturen) eingesetzt.

Laeuft also fuer Aussenstehenede eher unter FPGA-Wahnsinn, oder, wie 
schiesst man elegant auf viele Spatzen gleichzeitig mit einer Kanone.

von Morty S. (Gast)


Lesenswert?

Martin S. schrieb:

>> Real life Projekte die ohne FPGA kaum möglich sind.

> blinkenden LEDs, allerdings in der Neopixel-Form und das ganze mit
> Ethernet/PoE-Anbindung. FPGA darum, weil sich damit synchron eine ganze
> Latte dieser Leuchtschlangen ansteuern lassen. Wurde fuer fernsteuerbare
> Beleuchtung fuer Kunstprojekte (Schneeskulpturen) eingesetzt.
>
> Laeuft also fuer Aussenstehenede eher unter FPGA-Wahnsinn,

Zähle ich NICHT unter FPGA-Wahnsinn. Es ist nicht unüblich, sich nur 
wegen der  "mickrigen" Anzahl an User-IO's an einem Mikrocontroller sich 
für einen FPGA zu entscheiden, den es auch in Packages mit mehreren 
hundert IO's gibt.

Warum mit Portexpander, Muxer, etc. rumschlagen, wenn man das "in einem 
Guß" mittels CPLD oder kleinem FPGA realisieren kann?! Wurde schon 
während der Ausbildung zum HW-Entwickler empfohlen: falls es die nötige 
Peripherie wie 7+ UARTS, 11 LED-Bargraphs etc. nicht in einem 
handelsüblichen µC/DSP gibt, dann muss man sich eben einen 
kundenspezifischen fertigen (FPGA, SoC, CPLD) oder fertigen lassen 
(ASIC).

Es ist nicht allein die Processing-Power, die einen FPGA auszeichnet, 
manchmal ist es die schnöde Pin-Anzahl. Bei Miniserien oder 
Einzelstücken fällt auch der IC Stückpreis nicht  Gesamtpaketpreis auf, 
wenn er nicht sogar den Entwicklungs-/Debugaufwand für eine 
Portexpander-Steckplatinenlösung komplett aufwiegt.

von Gerhard H. (hauptmann)


Lesenswert?

Morty S. schrieb:
> manchmal ist es die schnöde Pin-Anzahl

Wobei es schon schlau wäre den Verdrahtungsaufwand durch mehr serielle 
Bus-Intelligenz zu minimieren.

von Sophie T. (sophie_t)


Lesenswert?

Jens W. schrieb:
> Ich habe drei Projekte an denen ich immer abwechselnd was mache.
> 1. Feldorientierte Regelung mit FPGA. Das geht auch mit einem µC, aber
> ich wollte es eben mit dem FPGA machen. Das ist fertig und läuft.
>
> Grüße, Jens

Cool und was für ein Motor ist es? Und der Regler ist PID? Beobachter 
für den Fluss auch mit drin?

von Martin S. (strubi)


Lesenswert?

Morty S. schrieb:
> dann muss man sich eben einen
> kundenspezifischen fertigen (FPGA, SoC, CPLD) oder fertigen lassen
> (ASIC).

Wer kann, der kann. Ich haette die Investition aber nicht fuer 
LED-Spielerei stemmen wollen. War eher Beifang einer etwas speziellen 
PWM fuer zeitgenaues Glitchen. Das passt auch zum Thema Motoren.

Gerhard H. schrieb:
> Wobei es schon schlau wäre den Verdrahtungsaufwand durch mehr serielle
> Bus-Intelligenz zu minimieren.

Tja, das elegante an den Neopixel-Schlangen: Ein grosses Schieberegister 
als write-only-Farbspeicher :-)

Ein Schmankerl noch zum Thema FPGA-Wahnsinn: Da auch Animationen mit 
vernuenftigen Farbinterpolationen und Frameraten im Autonombetrieb 
gewollt waren, durfte noch eine Trace-Beschleunigerlogik nach Bresenham 
mit rein.
Das macht man allerdings nicht mehr in klassischer V*HDL.

von Morty S. (Gast)


Lesenswert?

Antti L. schrieb:

> ein Projekt was wirklich spannend war, war SDR mit diesen hardware:
> 
https://www.arrow.com/en/products/analogmax-daq1/trenz-electronic-gmbh?q=ANALOGMAX-DAQ1
>
> Da ist ein 20 bit ADC mit 1 MSPS drauf, und kleines 10M08 MAX 10 FPGA.
                            ^^^^^^
Das kommt mir sehr bekannt vor, SDR für Signale kleiner 1 MHz, das 
könnte man auch für eine radio wave propagation station ausbauen um das 
Funkwetter anhand des Empfangs des signals von Baken (engl beacons) 
(auch DCF77 ist im gewissen sine eine Funk-bake) das aktuelle Funkwetter 
abzuschätzen.

Allerdings hat das DAQ1 Board meines Wissens einen 2 MSps ADC, einen 
kleinen 1MSbs Wandler bringt der Max10 on-chip mit:
https://www.intel.com/content/www/us/en/docs/programmable/683596/22-1/adc-architecture-and-features.html

> Das hat soweit funktioniert das DCF77 time code wurde erfolgreich
> decodiert!

Nach welchen Verfahren? das AM-Signal zu decodieren ist ziemlich 
einfach, das kann auch ein µC, den Phasensprung auszuwerten ist etwas 
anspruchsvoller.
https://www.ptb.de/cms/ptb/fachabteilungen/abt4/fb-44/ag-442/verbreitung-der-gesetzlichen-zeit/dcf77/phasenmodulation.html

Hier hat vor über 10 Jahren ein Ingenieur namens Daniel Engeler aus der 
Schweiz seine Ergebnisse hierzu präsentiert:

https://www.mikrocontroller.net/attachment/147245/Engeler_DCF77.pdf
Beitrag "Paper zu DCF77"

von Jonny O. (-geo-)


Lesenswert?

Vancouver schrieb:
> Ein digitaler HF-Receiver (speziell für Kurzwelle).
> IQ-Demodulation und
> Tiefpassfilterung analog, alles weitere im FPGA. Das ginge zwar auch auf
> einem Microcontroller, wäre aber nicht unbedingt einfacher. Und je
> länger ich mich damit beschäftige, umso unsinniger erscheint es mir,
> Signalverarbeitung in Software zu machen - FPGA sind dafür wie
> geschaffen.
>
> Das Ganze ist ein eher langfristiges Projekt, hauptsächlich um zu
> lernen, wie die Signalverarbeitung für HF funktioniert. Deswegen will
> ich auch alle Module selbst implementieren. Bisher gibt es nur ein paar
> Fragmente: CORDIC für Betrags/Phasenbildung der IQ-Kanäle,
> Hilbert-Transformation (für SSB), DC-Cancellation. Audio soll über I2S
> rausgehen, aber das existiert noch nicht. Der erste Milestone wird es
> sein, ein einfaches AM Signal von einem DDS-Generator zu demodulieren.

Das klingt spannend. Sowas würde ich auch gerne mal machen. Was benutzt 
du da für einen ADC & FPGA und mit welcher Samplerate läuft der ADC?

viele Grüße,
Jo

von Vancouver (vancouver)


Lesenswert?

Ich verwende die beiden XADC-Kanäle in einem Artix-7 (auf einem 
Cmod-A735-Board von Digilent). Der XADC hat zwar 12 Bits, allerdings nur 
etwa 9 ENOB, ich weiß nicht ob das wirklich reicht. Wird sich zeigen.

Da ich die Demodulation vorher in der Analogdomain mache, reicht für den 
ADC im Prinzip Audio-Samplerate. Der XADC kann max. 1 MSPS, das ist 
schon viel zu hoch. Wenn du so willst, verwende ich den FPGA als 
"Soundkarte".
Ohne Demodulation müsste ich Direkt-Sampling verwenden, und wäre dann 
mit dem XADC auf die Bänder unterhalb 500kHz beschränkt, das ist weit 
unterhalb von Kurzwelle. Mein Ziel ist maximal 30MHz Bandbreite.

Für die Demodulation verwende ich ein ähnliches Design wie das 
Arduino-SDR-Shield, allerdings mit einem DC-Level, sodass die Signale 
immer positiv bleiben, weil der ADC keine negativen Eingangspannungen 
verträgt (zumindest so wie er auf dem CMOD verschaltet ist).

Das Ganze ist wie gesagt noch in einem frühen Stadium, aufgebaut auf 
einem Breadboard und noch weit davon entfernt, wirklich RF zu empfangen.

von Jens W. (jensw)


Lesenswert?

Sophie T. schrieb:
> Jens W. schrieb:
>> Ich habe drei Projekte an denen ich immer abwechselnd was mache.
>> 1. Feldorientierte Regelung mit FPGA. Das geht auch mit einem µC, aber
>> ich wollte es eben mit dem FPGA machen. Das ist fertig und läuft.
>>
>> Grüße, Jens
>
> Cool und was für ein Motor ist es? Und der Regler ist PID? Beobachter
> für den Fluss auch mit drin?

Hallo Sophie,

Ich verwende so einen Motor: 
https://www.buehlermotor.de/fileadmin/user_upload/stock_service/datasheets/EC-Motor_62x142__1.25.058.4XX.pdf
Das ist klassisch eine permanenterregte Synchronmaschine. Dazu habe ich 
mir einen Inkrementalgeber hinten drauf gemacht (AS5047). Darüber kann 
ich kommutieren und die Drehzahl berechnen.
Als Regler für die Stromregelung verwende ich klassisch einen PI-Regler.
Für die überlagerte Drehzahlregler reicht auch ein PI-Regler. Ich denke 
nicht, dass es da einen PID braucht. Wäre aber egal, der Unterschied ist 
nicht viel Aufwand.
Der Beobachter für den Fluss ist vorbereitet, aber aktuell noch nicht 
implementiert.

Grüße, Jens

von J. S. (engineer) Benutzerseite


Lesenswert?

Vancouver schrieb:
> allerdings nur etwa 9 ENOB,

Hast du den XADC symmetrisch verdrahtet oder einseitig gegen GND?
Der XADC hat ja eine interne Filterung drin, wenn man die hohe Rate 
nicht braucht. Da kann man ohne Weiteres an die 12 Bit rankommen. Hängt 
aber auch vom Signal selber ab.

von Vancouver (vancouver)


Lesenswert?

Der ist asymmetrisch angeschlossen, das ist vom FPGA-Modul so 
vorgegeben. Am Eingang dürfen nur Sapnnungen im Bereich 0-3.3V liegen, 
die über einen Spannungsteiler auf 0..1V für den XADC runtergeteilt 
werden.
Stimmt, die Filterung gibts auch noch, muss ich mir mal anschauen, danke 
für den Tip!

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.