Forum: FPGA, VHDL & Co. FPGA für Impulsgenerator mit 1 MHz Schaltfrequenz


von jupp (Gast)


Lesenswert?

Hallo zusammen,
ich bin momentan auf der Suche nach einem geeigneten FPGA Board zur 
Programmierung eines Impulsgenerators zur Inbetriebnahme von 
Stromrichter-Endstufen (für 12 Kanäle -> 6 Halbbrücken).

Anforderungen sind:
+ programmierbar mit LabVIEW oder Matlab
(für Visualisierung & Bedienung am PC)
+ min. 12 digitale CMOS-/TTL Ausgangskanäle
+ Oszillator mit 40 oder 50 MHz (mit PLL auf > 240MHz einstellbar? 
Benötige den Takt, um ein hochfrequentes Dreiecksignal zu erzeugen, 
womit ich dann die Pulsweite einstellen möchte)

Der Einsatz dieses Impulsgenerators ist für Laborzwecke an der 
Hochschule. Eine LabVIEW Lizenz gibt es an der Universität. Aus diesem 
Grund würde ich persönlich auch am liebsten die Umsetzung mit LabVIEW 
durchführen. Da LabVIEW von der Firma National Instruments ist, hatte 
ich zunächst an Karten von NI gedacht. Diese sind aber absolut nicht im 
Budget, weshalb ich mich nach einer günstigeren Alternative (unter 500€) 
umgesehen habe. Auf der Xilinx Seite habe ich unter LabVIEW folgende 
FPGA Board aufgelistet gesehen:
+ Virtex UltraScale
+ Kintex UltraScale
+ Zynq-7000
+ Virtex-7
+ Kintex-7
+ Spartan-6
+ Virtex-5
+ Virtex-II Pro
+ Virtex-II

Die Liste habe ich von der Xilinx Herstellerseite unter dem Punkt 
„LabVIEW“ gefunden: 
https://www.xilinx.com/products/intellectual-property/1-8dyf-1094.html

Meine Fragen:
1. Sind diese FPGAs mit LabVIEW zu programmieren und welches Board 
könntet ihr mir dafür empfehlen?
2. Ich möchte mein PWM Signal in einer 8 Bit Auflösung einstellbar 
machen.
D.h. für 1 MHz Taktfrequenz bräuchte ich min. 256MHz interner Frequenz 
(bei 1MHz fs => 3,91ns Auflösung)
3. Wie generiere ich die Frequenz über die PLL in LabVIEW? Eine Periode 
meines Dreiecksignals entspricht ja immer der Schaltfrequenz. Ich frage 
mich nur, wie ich das am besten umsetzen kann.

Für Tipps & Meinungen bin ich dankbar!

LG

von 1N 4. (1n4148)


Lesenswert?

Wozu brauchst du das Dreiecksignal?

von David .. (volatile)


Angehängte Dateien:

Lesenswert?


: Bearbeitet durch User
von ui (Gast)


Lesenswert?

Die Zeit, die du investierst um
- mit Labview ein geeignetes Modell zu erstellen (mit Matlab tendenziell 
einfacher)
- die Kommunikation aufzubauen (da darfst dann so 100 AppNotes lesen)
- das zu visualisieren

hast du besser genutzt indem du:
- dir ein einfaches System zur Dreieckserzeugung in VHDL programmierst
- die Kommunikation über usb mit dem PC umzusetzen
- ein Konsolenprogramm zur Kommunikation schreibst

Geht schneller, man findet bessere Hilfe bei Problemen (nicht nach dem 
Motto: "ja da musst du jetzt 3 Mal klicken, dann rechtsklick dann 
klicken auf..."), und du hast mehr davon, weil du alles unter Kontrolle 
hast.

von David .. (volatile)


Lesenswert?

ui schrieb:
> Die Zeit, die du investierst um
> - mit Labview ein geeignetes Modell zu erstellen (mit Matlab tendenziell
> einfacher)
> - die Kommunikation aufzubauen (da darfst dann so 100 AppNotes lesen)
> - das zu visualisieren

Ich bin bei weitem kein Labview Fan, aber das ist so nicht wahr.
-Du kannst ja in LV alles machen wie auch in VHDL (Matlab mag allerdings 
schneller sein, d.h. mehr dafuer mitliefern)
-Kommunikation inklusive Visualisierung am PC vom FPGA laeuft ootb und 
ohne weitere Arbeit
-Visualisierung ist genauso wie in 'normalem' Labview: Einfach 
reinklicken und fertig, egal ob Graph, LED usw

von ui (Gast)


Lesenswert?

David .. schrieb:
> Ich bin bei weitem kein Labview Fan, aber das ist so nicht wahr.
> -Du kannst ja in LV alles machen wie auch in VHDL (Matlab mag allerdings
> schneller sein, d.h. mehr dafuer mitliefern)
> -Kommunikation inklusive Visualisierung am PC vom FPGA laeuft ootb und
> ohne weitere Arbeit
> -Visualisierung ist genauso wie in 'normalem' Labview: Einfach
> reinklicken und fertig, egal ob Graph, LED usw

Ok, stimmt u.U.
Aber für solche rudimentären Aufgaben gibt es heute FPGA Boards für 100€ 
mit ARM.
Dann bau ich mir einen minimalen IP-Core mit Avalon/AXI Interface, 
schreib mir einen 100 Zeilen Treiber für das Linux, dass auf dem ARM 
läuft und kann mir einen kleinen einfachen Webserver auf dem ARM 
aufsetzen, mit dem ich das alles schön visualisieren kann.
Dann spar ich mir auch noch so Spässe wie Datenübertragung USB. Alles 
bleibt auf einem SoC, und AppNotes/Tutorials findet man für diesen Weg 
unglaublich viel. Sogar mit Beispielcode, sodass das jeder Bachelorand 
heute in 2 Wochen fertig hat. Auch wenn er davor nicht viel mit 
VHDL/SoCs zu tun hatte.

von Gustl B. (-gb-)


Lesenswert?

Ja das stimmt, aber nur wenn du Hardware von NI verwendet. Ich glaube 
nicht, dass du eine Labview Schaltung ohne Probleme in ein beliebiges 
FPGA bekommst das auf einem nicht-NI Board sitzt.

von David .. (volatile)


Lesenswert?

ui schrieb:

> Ok, stimmt u.U.
> Aber für solche rudimentären Aufgaben gibt es heute FPGA Boards für 100€
> mit ARM.
> Dann bau ich mir einen minimalen IP-Core mit Avalon/AXI Interface,
> schreib mir einen 100 Zeilen Treiber für das Linux, dass auf dem ARM
> läuft und kann mir einen kleinen einfachen Webserver auf dem ARM
> aufsetzen, mit dem ich das alles schön visualisieren kann.
> Dann spar ich mir auch noch so Spässe wie Datenübertragung USB. Alles
> bleibt auf einem SoC, und AppNotes/Tutorials findet man für diesen Weg
> unglaublich viel. Sogar mit Beispielcode, sodass das jeder Bachelorand
> heute in 2 Wochen fertig hat. Auch wenn er davor nicht viel mit
> VHDL/SoCs zu tun hatte.

Ja, das geht sicher. Ich beantworte ja nur die Frage, wie es mit Labview 
geht ;)

Einen Webserver zur Visualisierung kann mann natuerlich auch mit LV 
einsetzen.
Im myRIO steckt ein Zynq, also auch ein ARM, mit angepasstem Linux OS.

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Ein Dreieck im FPGA zu erzeugen ist mit VHDL wohl das Wenigste. Was mich 
mehr beschäftigt ist die Einstellbarkeit der Pulsweite des Dreiecks. Ich 
wüsste jetzt spontan nicht, wo bei einem Dreieck die Pulsweite sein 
soll.

Wenn das die Anstiegszeit gegenüber der Abfallzeit sein sollte, ist es 
ein bischen Rechnung. Dann frage ich mich, wie hoch die resultierende 
Frequenz sein soll? Sicher nicht 50MHz, oder?

Ich nehme an, dass das die Abtastfrequenz sein soll. Bei 50kHz wären es 
1000 Stufen. Also 100 hoch und 900 runter. Dann muss man noch ein wenig 
rechnen.

> Im myRIO steckt ein Zynq, also auch ein ARM, mit angepasstem Linux OS.
Ich würde einen Ultrascale nehmen, das ist man auf der sicheren Seite. 
:-)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Weltbester FPGA-Pongo schrieb im Beitrag #4868132:
> Was mich mehr beschäftigt ist die Einstellbarkeit der Pulsweite des
> Dreiecks. Ich wüsste jetzt spontan nicht, wo bei einem Dreieck die
> Pulsweite sein soll.
Du änderst die Flankensteilheit des Dreiecks bis hin zum Sägezahn.

von J. S. (engineer) Benutzerseite


Angehängte Dateien:

Lesenswert?

Das geht allgemein mit einer DDS als Dreieck mit Phasendeformation:

von jupp (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
ersteinmal vielen lieben Dank für die ganzen Informationen. Um einige 
Fragen zu beantworten:

1N 4. schrieb:
> Wozu brauchst du das Dreiecksignal?

Ich möchte mit dem Dreiecksignal die Pulsbreite und die Totzeit 
einstellen.
Anforderung sind:
+ Schaltfrequenz: 100 Hz : 100ns : 1MHz
+ Totzeiteinstellung: -1µs : 100ns : 1µs

David .. schrieb:
> Ganz allgemein: Billigste FPGA-HW von NI ist wohl das myRIO (im
> Budget),
>
> Ob dein Code entsprechend schnell ausgefuehrt werden kann ist dann eine
> andere Frage
>
> https://www.conrad.de/de/national-instruments-ni-m...
>
> https://shop.jacob.de/Home-and-Living/Messger%C3%A...

Genau so ein Board suche ich! Passt auch zu meinem max. Budget von 500€. 
Was meinst du damit, ob mein Code entsprechend schnell ausgeführt werden 
kann? Wo kann es da haken?

ui schrieb:
> Die Zeit, die du investierst um
> - mit Labview ein geeignetes Modell zu erstellen (mit Matlab tendenziell
> einfacher)
> - die Kommunikation aufzubauen (da darfst dann so 100 AppNotes lesen)
> - das zu visualisieren
>
> hast du besser genutzt indem du:
> - dir ein einfaches System zur Dreieckserzeugung in VHDL programmierst
> - die Kommunikation über usb mit dem PC umzusetzen
> - ein Konsolenprogramm zur Kommunikation schreibst
>
> Geht schneller, man findet bessere Hilfe bei Problemen (nicht nach dem
> Motto: "ja da musst du jetzt 3 Mal klicken, dann rechtsklick dann
> klicken auf..."), und du hast mehr davon, weil du alles unter Kontrolle
> hast.

Die Alternative zu LabVIEW wäre Matlab. Ich hätte da beispielsweise das 
Altera DE1 Board im Visier, dass ca. 180€ kostet. Warum ich mich eher 
gegen Matlab entschieden habe ist, dass ich mit LabVIEW sowohl 
Programmierung & Visualisierung in "einem Rutsch" löse. Auch von 
Erfahrungen von Freunden habe ich gehört, dass ich sowohl Simulink, als 
auch Labview irgendwann hassen werde. ;-)

Mein konkretes Ziel ist es jetzt, 12 PWM Signale mit einer max. 
Schaltfrequenz von 1MHz und einer Totzeitverschiebung von -1µs : 100ns : 
+1µs zu realisieren. Da sehe ich mit LabVIEW erstmal keine großen 
Probleme, abgesehen davon das ich keine HW bisher gefunden habe. Mit dem 
FPGA RIO von NI ist das, soweit ich das sehe (siehe Bild im Anhang).
Die 256MHz des Dreiecksignals benötige ich nicht. Da hatte ich einen 
Denkfehler! Soweit ich das jetzt sehe, ist das RIO für meine Anwendung 
geeignet. Danke euch erstmal! :)

von David .. (volatile)


Lesenswert?

jupp schrieb:

> Genau so ein Board suche ich! Passt auch zu meinem max. Budget von 500€.
> Was meinst du damit, ob mein Code entsprechend schnell ausgeführt werden
> kann? Wo kann es da haken?

Ganz grob: Manche Funktionen kannst du in einem Takt ausfuehren und ohne 
Latenz (sofort im naechsten Takt liegt das Ergebnis an), andere brauchen 
viele Takte fuer eine Iteration und haben ggf einige Takte Latenz.

Ausserdem hat dein FPGA-Code eine maximale Taktrate, mit der er laeuft, 
und die muss natuerlich ueber deinem echten Takt liegen. Es kann dir gut 
passieren, dass deine Clock 256MHz ist, aber dein Design nur 40MHz 
schafft (wird die beim kompilieren mitgeteilt). Dann musst du dein 
Design entsprechend anpassen...

von jupp (Gast)


Lesenswert?

Ok, das habe ich auf dem Schirm. Danke dir und euch für die Hilfe!
LG

von David .. (volatile)


Lesenswert?

jupp schrieb:
> Ok, das habe ich auf dem Schirm. Danke dir und euch für die Hilfe!

Alles klar, melde dich falls du den Labviewweg einschlaegst und Hilfe 
brauchst!

von jupp (Gast)


Lesenswert?

Hallo nochmal,
die Karte von NI kommt ca. Mitte Februar. Nun habe ich mir ein paar 
Gedanken zur Umsetzung gemacht. Zum Testen des Impulsgenerators habe ich 
daran gedacht, das Modell zunächst in Simulink einzubinden und das 
Modell damit - zumindest teilweise - zu verifizieren.
Der Blockaufbau in LabVIEW, mit der Generierung für das Dreiecksignal, 
ist ja ähnlich wie bei Simulink. Was meint ihr?

Ich würde gerne zunächst eine abgespeckte Form des Modells anfertigen 
(z.B. nur 4 Kanäle, für den Betrieb eines 4QS). Wenn ich mit den 
Funktionsblöcken fertig wäre, würde ich mich dann daran setzen das zu 
vervielfältigen und mir eine Struktur (Bedieneroberfläche d. 
Frontpanels) für LabVIEW zur überlegen. Wer von euch hat sich schon 
einmal mit einer ähnlichen Aufgabe befasst und wie habt ihr das 
entsprechend gelöst?
Soweit ich weiß, dauert die Programmierung des FPGAs schon eine ganze 
Weile und ich habe bisher noch nicht herausgefunden, ob man in LabVIEW - 
ähnlich wie in Simulink - das Programm auch einfach nur simulieren kann, 
ohne gleich den Controller zu programmieren.

Danke im Voraus für eure Hilfe! :)

von David .. (volatile)


Lesenswert?

jupp schrieb:
> Hallo nochmal,
> die Karte von NI kommt ca. Mitte Februar. Nun habe ich mir ein paar
> Gedanken zur Umsetzung gemacht. Zum Testen des Impulsgenerators habe ich
> daran gedacht, das Modell zunächst in Simulink einzubinden und das
> Modell damit - zumindest teilweise - zu verifizieren.
> Der Blockaufbau in LabVIEW, mit der Generierung für das Dreiecksignal,
> ist ja ähnlich wie bei Simulink. Was meint ihr?
>
> Ich würde gerne zunächst eine abgespeckte Form des Modells anfertigen
> (z.B. nur 4 Kanäle, für den Betrieb eines 4QS). Wenn ich mit den
> Funktionsblöcken fertig wäre, würde ich mich dann daran setzen das zu
> vervielfältigen und mir eine Struktur (Bedieneroberfläche d.
> Frontpanels) für LabVIEW zur überlegen. Wer von euch hat sich schon
> einmal mit einer ähnlichen Aufgabe befasst und wie habt ihr das
> entsprechend gelöst?
> Soweit ich weiß, dauert die Programmierung des FPGAs schon eine ganze
> Weile und ich habe bisher noch nicht herausgefunden, ob man in LabVIEW -
> ähnlich wie in Simulink - das Programm auch einfach nur simulieren kann,
> ohne gleich den Controller zu programmieren.

Simulink habe ich auf FPGA oder mit LV nie benutzt, da also keine 
Ahnung.
Du kannst das Projekt in Labview schon anlegen und programmieren und 
auch simulieren. Musst du mal googlen, das waere zuviel zum hier 
schreiben. Bei konkreten Fragen helfe ich gern.

von jupp (Gast)


Lesenswert?

Hallo zusammen,
ich habe mich mittlerweile um die Bestellung des FPGAs gekümmert. Nun 
bin ich an der Generierung des Dreiecksignals.

Mit der Clock-Frequenz von 40MHz möchte ich das Dreiecksignal erzeugen. 
Das hat auch wunderbar funktioniert. Nun soll ich eine Schaltfrequenz 
von bis zu 1MHz erzeugen und diese mit einem Aussteuerungsgrad von 0,001 
Schritten (1/1000 Schritten) einstellen können.

Meine Auflösung bei fs=1MHz fällt allerdings auf:
N = fclock/fs = 40MHz/1MHz = 40
Dadurch lässt sich das Referenzsignal a(Gleichsignal von 0..1 
einstellbar) nur noch in 1/40, statt 1/1000 Schritten einstellen. Die 
Auflösung von 1/1000 könnte ich erst bei unter 40kHz erreichen. Ist das 
soweit korrekt?

Meine Frage:
Ich würde bei fs=1MHz eine Clock-Frequenz von 1GHz benötigen. Kann ich 
meine PLL auf 25 stellen (40MHz x 25 = 1GHz), um bei maximaler Frequenz 
meine Aussteuerung in 1/1000 Schritten zu ermöglichen?

Wie schaffe ich es, dass ich auch bei Frequenzen wie z.B. 900Hz oder 
9,9kHz eine Aussteuerung in 1/1000 Schritten hinbekomme?


Vielen Dank im Voraus, lg.

von 1N 4. (1n4148)


Lesenswert?

> Mit der Clock-Frequenz von 40MHz möchte ich das Dreiecksignal erzeugen.

Wozu das Dreiecksignal?

> Ich würde bei fs=1MHz eine Clock-Frequenz von 1GHz benötigen. Kann ich
> meine PLL auf 25 stellen (40MHz x 25 = 1GHz), um bei maximaler Frequenz
> meine Aussteuerung in 1/1000 Schritten zu ermöglichen?

Wenn der FPGA das mitmacht. Was sagt das Datenblatt?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

jupp schrieb:
> Wie schaffe ich es, dass ich auch bei Frequenzen wie z.B. 900Hz oder
> 9,9kHz eine Aussteuerung in 1/1000 Schritten hinbekomme?
Du hast den falschen Ansatz. Sieh.dir mal an, wie eine DDFS 
funktioniert.

> Ich würde bei fs=1MHz eine Clock-Frequenz von 1GHz benötigen. Kann ich
> meine PLL auf 25 stellen (40MHz x 25 = 1GHz)
Was sagt denn das Datenblatt?
Ich vermute sehr, die Antwort lautet "Nein!"

> Nun soll ich eine Schaltfrequenz von bis zu 1MHz erzeugen und diese mit
> einem Aussteuerungsgrad von 0,001 Schritten (1/1000 Schritten)
> einstellen können.
Welcher Jitter ist erlaubt?

von J. S. (engineer) Benutzerseite


Lesenswert?

Lothar M. schrieb:
> Du hast den falschen Ansatz.

Ich glaube sogar, das hier schon das gesamte Konzept falsch ist. Wenn 
man solche Stufen ansteuern und synchronisieren will, braucht man 
entweder hochgenau einstellbare Zeitglieder im Bereich von 100ps und 
besser, was man durchaus mit FPGAs machen kann (BTDT) oder man hat was 
Fertiges, das nur funktionell gesteuert wird, worauf die SPEC "1MHz" 
hindeutet.

Dazu braucht man weder einen FPGA noch Labview und schon gar nicht 
Simulink.
Auch für die Entwicklung eines Dreieckgenerators ist die 
MATLAB/Simulink-Umgebung minimal überdosiert.

Wenn diese Umgebung allerdings benutzt werden soll, wäre es in der Tat 
angezeigt, zeitnah damit zu beginnen und sich mit den 
Simulink-spezifischen Themen, den Macken der Toolchain und der Probleme 
des Zusammenwirkens von MATLAB, Simulink und Labview und allem drum 
herum bekannt zu machen. Da gibt es immer mal wieder "issues". Ich kann 
mich noch gut an ein design erinnern, wo Simulink mit System-Generator 
nicht in der Lage war, eine lumpige PWM zur Pseudoanalogausgabe 
hinzukriegen. Ich muss es dann mit embedded VHDL eintippen (eben doch 
konventionell ohne Malblöckchen) damit er es gefressen hat. Weder 
Mathworks noch Xilix konnte es damals erklären, warum das nicht ging. 
Parserfehler nehme ich an.

Nochmal zurück zum Thema: Solche Stufen steuert man normalerweise mit 
einem Sinus und einer gesteuerten Schmitttriggerstufe an, um 
Leitungslängen zu überwinden, oder aber man schickt in der Tat den 
Impuls, dann aber oberwellenkompensiert als sauberes reflektionsfreies 
Rechteck.

Ein Dreieck sehe Ich da nicht, weil es anfällig wird gegen Störungen.

von J. S. (engineer) Benutzerseite


Lesenswert?

Lothar M. schrieb:
> Sieh dir mal an, wie eine DDFS funktioniert.

Für den Fall wäre Jitter gfs ein Problem und die DDS müsste zweistufig 
sein:
Beitrag "Re: Universell programmierbarer DDS-Funktionsgenerator"

von jupp (Gast)


Lesenswert?

Hallo zusammen,
erstmal vielen Dank für die ganzen Informationen. Momentan bin ich von 
den ganzen Informationen etwas erschlagen, also versuche ich da gerade 
einen roten Faden zu finden.

Der Grundgedanke war die Programmierung eines Impulsgenerators, der am 
Labor PC angesteckt/eingebaut werden und dann davon bedient werden kann. 
Ich sehe da aktuell das Problem, dass die hohe Schaltfrequenz und die 
individuelle Bedienbarkeit hier das Problem darstellen wird?! Ist die 
Wahl, den Impulsgenerator mit LabVIEW zu programmieren vielleicht schon 
die falsche Wahl gewesen?

Welche grundlegenden Probleme seht ihr denn noch bei der Umsetzung? Wie 
würdet ihr weitermachen und was würdet ihr ggf. am aktuellen Konzept 
unbedingt ändern wollen?


LG Axel

von Weltbester FPGA-Pongo (Gast)


Lesenswert?

Mit LABVIEW musst Du da gar nichts machen. Du brauchst nur eine kleine 
Schaltung, die pulst und ein mickriges RS232-PC Interfaces, um es 
einzustellen.

Da Du im FPGA-Forum postest, ist Deine Wahl ja wohl gefallen. Also nimm 
einen FPGA, einen kleinen Core und hänge ihn ans Hyperterminal.

1MHZ Schaltfrequenz sind für auch für kleine FPGAs "Gleichstrom", wie 
man Ex-Chef immer sagte.

von jupp (Gast)


Lesenswert?

Weltbester FPGA-Pongo schrieb im Beitrag #4919360:
> Mit LABVIEW musst Du da gar nichts machen. Du brauchst nur eine
> kleine
> Schaltung, die pulst und ein mickriges RS232-PC Interfaces, um es
> einzustellen.

Erstmal vielen Dank für deinen Post. Die Anforderung ist eine 
visualisierte Oberfläche am Labor-PC, bei der man folgende Einstellungen 
treffen kann:
+ Schaltfrequenz: 100Hz...1MHz (100 Hz Schrittweite)
+ Aussteuerung: 0...1 (0,001 Schrittweite)
+ Totzeiten: -10µs...+10µs (100ns Schrittweite)

Das nur, um es grob nochmal zusammenzufassen. Mit deiner Idee werde ich 
daher denke nicht nicht weiterkommen?!
Mein Problem ist, dass ich mit der Änderung der Schaltfrequenz (des 
Dreiecksignals) auch die Auflösung der Aussteuerung ändere.

Bei f.clock = 40MHz und f.s.max = 1MHz entspricht das einer Auflösung 
der Aussteuerung von 40/2=20 (0...19 und 19...0)

Bei halbierter Schaltfrequenz fs = 500kHz hätte ich dann eine Auflösung 
der Aussteuerung von 80/2=40

Meine Aussteuerung möchte ich mit einem Gleichsignal über dem Dreieck 
vergleichen. Bei meiner jetzigen Überlegung wird also mit der Änderung 
der Schaltfrequenz auch die Auflösung der Aussteuerung verändert.

Welchen Denkfehler mache ich da gerade?

> Da Du im FPGA-Forum postest, ist Deine Wahl ja wohl gefallen. Also nimm
> einen FPGA, einen kleinen Core und hänge ihn ans Hyperterminal.
>
> 1MHZ Schaltfrequenz sind für auch für kleine FPGAs "Gleichstrom", wie
> man Ex-Chef immer sagte.

Ich nutze einen FPGA von NI, Typ: myRio. Die Wahl habe ich getroffen, da 
ich eine visualierte Oberfläche schaffen muss. Ansonsten hätte ich mir 
direkt überlegt das alles in VHDL zu programmieren.


Mein größtes Problem ist gerade, das ich die Auflösung meiner 
Aussteuerung mit Änderung der Schaltfrequenz, verändere. Das muss ich 
fixen, da ich eine feste Aussteuerung von 0...1 in 0,001er Schritten 
realisieren will/soll.

von jupp (Gast)


Lesenswert?

Hallo zusammen,

mittlerweile habe ich einen Anfang gefunden und langsam geht es voran. 
Gerade arbeite ich an der Ausgabe eines 1. PWM Signals. Mit dem 
vorgefertigten PWM Ausgang hat die Konfiguration bereits geklappt. Auch 
die Beschaltung eines DIOs mit 0 bzw. 1 hat geklappt.

Um meiner While-Schleife eine feste Zykluszeit vorzugeben, möchte ich 
die interne Clock (40MHz) nutzen. Im Internet unter www.ni.de habe ich 
dafür mehrere Videos angesehen.
Leider habe ich die Vermutung, dass ich ein Toolkit bei der Installation 
vergessen habe, womit ich mir die interne Clock einfügen kann. Das 
Programm läuft derzeit mit maximaler Frequenz.

Unter der Funktion "Timing" finde ich lediglich folgende Bausteine:
Tick Count (ms), Wait (ms), Wait Until Next ms Multiple, To Time Stamp, 
..., Time Delay, Elapsed Time

Könnt ihr mir da weiterhelfen? Ich würde gerne mit der 40MHz Clock die 
Zykluszeit der While Schleife vorgeben und den Wert ebenfalls zur 
Berechnung meiner Amplitude des Dreiecksignals verwenden.

fclock/fswitching * 1/2 = Amplitude des Dreiecksignals

Danke im Voraus,
LG

von Falk B. (falk)


Lesenswert?

@ jupp (Gast)

>Stromrichter-Endstufen (für 12 Kanäle -> 6 Halbbrücken).

Kann jeder bessere uC.

>+ programmierbar mit LabVIEW oder Matlab
>(für Visualisierung & Bedienung am PC)

Muss man schauen, im zweifelsfall muss eine Mini-App her. Kein großes 
Ding.

>+ min. 12 digitale CMOS-/TTL Ausgangskanäle
>+ Oszillator mit 40 oder 50 MHz (mit PLL auf > 240MHz einstellbar?
>Benötige den Takt, um ein hochfrequentes Dreiecksignal zu erzeugen,
>womit ich dann die Pulsweite einstellen möchte)

Quark. Moderne uC können von haus aus gute PWMs erzeugen. Ich kann den 
PICCOLO empfehlen, der kann PWMs mit 150ps Zeitauflösung generieren! 
(Darum heißt der wohl Piccolo ;-)

>Der Einsatz dieses Impulsgenerators ist für Laborzwecke an der
>Hochschule.

Umso besser, da kann ein Student die App schreiben.

>FPGA Board aufgelistet gesehen:

Alles totaler Overkill für ein paar PWMs.

>2. Ich möchte mein PWM Signal in einer 8 Bit Auflösung einstellbar
>machen.

Gähn

>D.h. für 1 MHz Taktfrequenz bräuchte ich min. 256MHz interner Frequenz
>(bei 1MHz fs => 3,91ns Auflösung)

welche Leistungselektronik arbeitet mit 1 MHz PWM? Quark^3.

>3. Wie generiere ich die Frequenz über die PLL in LabVIEW? Eine Periode
>meines Dreiecksignals entspricht ja immer der Schaltfrequenz. Ich frage
>mich nur, wie ich das am besten umsetzen kann.

Du solltest mal in der Neuzeit ankommen und dein Dreieckssignal 
vergessen. Das gitb es bestenfalls noch rein digital als Zähler.

von J. S. (engineer) Benutzerseite


Lesenswert?

Nun ja, wichtig bei den PWM-Stufen ist nicht nur die Schaltfrequenz, 
sondern schon auch die Granularität, mit der die Pulslängen einstellbar 
sind. Bei Audio hat man da ein Problem. Was immer noch offen ist, ist 
die Genauigkeit der Pulslänge.

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.