Forum: FPGA, VHDL & Co. Delta Sigma Demodulator (3 Kanäle) besser auf CPLD oder FPGA


von Spice (Gast)


Lesenswert?

Hallo und frohe Weihnachten an alle...

(FPGAs und CPLDs sind relativ neu für mich, bitte nicht steinigen...)
Ich möchte gerne einen Delta Sigma PWM Demodulator/Filter (16bit 
Auflösung) auf Parallelumsetzer bauen, wo der Modulator selbst mit rund 
20MHz läuft und Netzspannung abtastet (also 50Hz). Der Modulatorchip 
existiert bereits (AMC1303x). Vermutlich könnte das auch ein ESP32 mit 
80Mhz Clock bewerkstelligen, aber da fehlt der Lerneffekt.

Nun bin ich mir nicht sicher, ob ich das mit einem CPLD oder FGPA 
angehen sollte, da ich nicht wirklich weiss, wieviel Speicher/Flash 
nötig sein werden. Bevorzugt würde ich einen alten XC9572 nehmen, wenn 
man das in den CPLD gegossen bekommt, da ich dafür kein externes Flash 
brauche.
Hat jemand Erfahrungswerte für einen derartigen Demodulator, worauf der 
am besten aufgehoben ist?

Ich könnte einen AMC1210 verwenden, aber ich würde das gerne selber mal 
auf einem CPLD/FPGA realisieren. Ich möchte die Schaltung ungern 
aufblähen (FPGA muss nicht zwangsweise sein), aber bin offen für neues.

Besten Dank

von vancouver (Gast)


Lesenswert?

Schwer zu sagen. Gefühlsmäßig würde ich sagen, das sollte in einen CPLD 
passen, das ist aber Kaffeesatzleserei. Der beste Weg wird es sein, das 
mal zu implementieren und dann probeweise für CPLD zu synthetisieren. 
Dann hast du belastbare Ergebnisse, must aber eben eine Toolchain 
installieren. Aber das musst du sowieso machen. Allerdings ist CPLD 
nicht gerade die Zukunftstechologie.

von Gustl B. (-gb-)


Lesenswert?

Code ist in einem aus dem Datenblatt verlinkten PDF. 
https://www.ti.com/lit/an/sbaa094/sbaa094.pdf Sieht überschaubar aus ...

von vancouver (Gast)


Lesenswert?

Wie groß ist denn die PWM-Frequenz?

von Gregor (Gast)


Lesenswert?

vancouver schrieb:
> Wie groß ist denn die PWM-Frequenz?
20 MHz, nehme ich an - steht so oben. Das ist in einem CPLD gar kein 
Thema. Ist ein klassisches Dezimationsfilter.

Allerdings frage ich mich, wozu man eine 20MHz PWM benötigt, um 
Netzfrequenzen abzutasten. Das geht auch mit einem Bruchteil. Jedenfalls 
wirst du eine gute Dämpfung haben, bei DEM Übersetzungsverhältnis.

Bei einem ESP32 würde ich aber mit der PWM-Frequenz auf 2MHz herunter 
gehen, das reicht bequem, um 50Hz zu erfassen und der Prozessor hat 
weniger zu tun, zumal du 3 Kanäle berechnen willst.

(2 MHz entsprechen ungefähr dem, was die Audio-CD abliefert)

von -gb- (Gast)


Lesenswert?

Gregor schrieb:
> Allerdings frage ich mich, wozu man eine 20MHz PWM benötigt, um
> Netzfrequenzen abzutasten.

Wenn man das filtert und eine ordentliche ENOB haben will, dann bleiben 
von den 20 MHz noch ein paar kHz übrig.

von He. (Gast)


Lesenswert?

Spice schrieb:
> Ich möchte gerne einen Delta Sigma PWM Demodulator/Filter (16bit
> Auflösung) auf Parallelumsetzer bauen, wo der Modulator selbst mit rund
> 20MHz läuft und Netzspannung abtastet (also 50Hz). Der Modulatorchip
> existiert bereits (AMC1303x).
Was willst du denn bitte messen?
Für 50Hz braucht man doch so einen Wandler nicht.(???)
3-Phasen-Überwachung für daheim wird es wohl kaum sein.

von -gb- (Gast)


Lesenswert?

Sieht aber so aus als wäre das genau ein Anwendungsgebiet für den 
Baustein.

von He. (Gast)


Lesenswert?

Wir machen das mit einem Übertrager zur Netztrennung von 400V (bei 
Dreiecks) auf 4V und nehmen ganz normale Wandler mit 3V und 
2:1-Eingangsabschwächer. Der misst dann typisch 1,9V bzw. 1,15V Vss im 
Stern. Geht wunderbar mit einem Micocontroller, der noch 
Temperaturmessung und I2C mit bedient.

von Spice (Gast)


Lesenswert?

Besten Dank für die vielen Beiträge...

Gustl B. schrieb:
> Code ist in einem aus dem Datenblatt verlinkten PDF.
> https://www.ti.com/lit/an/sbaa094/sbaa094.pdf Sieht überschaubar aus ...

Das sieht ziemlich interessant aus

Gregor schrieb:
> vancouver schrieb:
>> Wie groß ist denn die PWM-Frequenz?
> 20 MHz, nehme ich an - steht so oben. Das ist in einem CPLD gar kein
> Thema. Ist ein klassisches Dezimationsfilter.
>
> Allerdings frage ich mich, wozu man eine 20MHz PWM benötigt, um
> Netzfrequenzen abzutasten. Das geht auch mit einem Bruchteil. Jedenfalls
> wirst du eine gute Dämpfung haben, bei DEM Übersetzungsverhältnis.
>
> Bei einem ESP32 würde ich aber mit der PWM-Frequenz auf 2MHz herunter
> gehen, das reicht bequem, um 50Hz zu erfassen und der Prozessor hat
> weniger zu tun, zumal du 3 Kanäle berechnen willst.
>
> (2 MHz entsprechen ungefähr dem, was die Audio-CD abliefert)

Bin relativ neu in dem Thema und habe mir das einfach mal zur Aufgabe 
gemacht, um in die Thematik mal reinzukommen. Ich brauche keine PWM am 
Ende, da gibt es anscheinend verschiedene Versionen von dem Chip, der 
verschiedene Ausgangssignale generieren kann.
Wenn ich das richtig verstehe, bekomme ich am Ausgang des Chips ein 
Bitstream mit 20MHz/2, wo ich für eine x beliebige Dauer beliebig tief 
(bis 20MHz) abtasten/dezimieren kann? Wenn wenn man mag, könnte man sich 
aus dem Bitstream dann eine PWM bauen (auch wieder mit beliebiger 
Frequenz), richtig?

-gb- schrieb:
> Gregor schrieb:
>> Allerdings frage ich mich, wozu man eine 20MHz PWM benötigt, um
>> Netzfrequenzen abzutasten.
>
> Wenn man das filtert und eine ordentliche ENOB haben will, dann bleiben
> von den 20 MHz noch ein paar kHz übrig.

So in etwa habe ich mir das vorgestellt, da der Chip ja anscheinend 
genau für Netzspannungsmessungen gedacht ist. Quasi doch eine 3 
Phasenüberwachung...

von Spice (Gast)


Lesenswert?

Harald E. schrieb:
> Wir machen das mit einem Übertrager zur Netztrennung von 400V (bei
> Dreiecks) auf 4V und nehmen ganz normale Wandler mit 3V und
> 2:1-Eingangsabschwächer. Der misst dann typisch 1,9V bzw. 1,15V Vss im
> Stern. Geht wunderbar mit einem Micocontroller, der noch
> Temperaturmessung und I2C mit bedient.

Du meinst: Übertrager 100:1 -> Spannungsteiler -> AD Wandler -> 
Mikrocontroller?
Hört sich klassisch an, aber mir fehlt da die Logik in Hardware ;-)

Hab für sowas auch mal einen Stromwandler vergewaltigt, Primärseitig 2mA 
RMS Strom fließen lassen, auf der Sekundärseite die 2mA durch einen 
Bürdenwiderstand fließen lassen, die Spannung auf ein OP geführt und 
anschließend mit einem Mikrocontroller gemessen. Geht auch...

von He. (Gast)


Lesenswert?

Es kommt halt darauf an, was man messen will und welche Informationen 
man aus dem Signal ziehen möchte. Für einfach mal eben 50Hz messen, um 
Phase und Amplitude zu ermitteln, geht es deutlich einfacher und 
billiger, als mit extra Chips und PLDs.

Für solche Überwachungseinheiten verwenden wir den ADC mit MUX in einem 
UC. Die Rate liegt bei unter 1MHz für 4 Kanäle mit 3 Phasen. Der 
Übertrager steckt als Luftspule + Koppelkapazitäten in der Platine. Da 
kann man sich den Weg über die Dezimation sparen.

Ich frage außerdem aus einem ganz bestimmten Grund: Die Aufgabe kommt 
mir irgendwie bekannt vor und wurde so ähnlich vor Kurzem schon 
anderweit angefragt (mit praktisch demselben Chip).

Entweder möchte dort / hier jemand seine Master-Thesis-Aufgaben vom 
Forum lösen lassen und hat vom Prof eine besonders umständliche 
Realisierung vorgeschlagen bekommen, oder er hat den Kern der Aufgabe 
nicht verstanden und es steckt mehr dahinter.

ISt der Anspruch an die Messgenaugkeit komplizierter, sollte man sich 
die Aufgabe nochmals durchlesen oder vergegenwärtigen, was die 
Randbedingungen genau sind. Die 50Hz aus der Steckdose hinter 
meterlangen Kabeln sehen weidlich anders aus, als die an einem 
Synchrongenerator in einem Kraftwerk oder gar in der Nähe eines 
Großverbrauchers mit seinen Störungen. Für letzteres haben wir auch 
Lösungen abzubieten, die aber in Richtung 5-stellig gehen, für eine 
Einzelanlage.

Am Ende möchte sich hier wieder jemand auf die Netzphase 
aufsynchronisieren, um seine DIY-PV-Anlage zu steuern. Dafür muss man 
aber schon einiges an Filter- und Regelaufwand treiben, dass es funzt 
und nicht Silvesterfeuerwerk gibt. Der Knackpunkt ist nämlich, dass man 
nichts mehr Gescheites misst, sobald man dort eingreift und sich 
aufschaltet.

von Spice (Gast)


Lesenswert?

Harald E. schrieb:
> Für solche Überwachungseinheiten verwenden wir den ADC mit MUX in einem
> UC. Die Rate liegt bei unter 1MHz für 4 Kanäle mit 3 Phasen. Der
> Übertrager steckt als Luftspule + Koppelkapazitäten in der Platine. Da
> kann man sich den Weg über die Dezimation sparen.

Klingt sehr interessant. Luftspule + Kapazitäten in der Platine? Wie 
kann man sich das vorstellen? 4 Kanäle für 3 Phasen?

Harald E. schrieb:
> Ich frage außerdem aus einem ganz bestimmten Grund: Die Aufgabe kommt
> mir irgendwie bekannt vor und wurde so ähnlich vor Kurzem schon
> anderweit angefragt (mit praktisch demselben Chip).

Lach, ich schreibe keine Masterarbeit mehr und eine PV Anlage betreibe 
ich auch nicht. Will mich nur in die Thematik Delta Sigma und die 
Verarbeitung der Daten einarbeiten (bestenfalls in Kombination mit einem 
CPLD oder FPGA). Netzspannung war an der Stelle naheliegend. Wenn am 
Ende was Zustande kommt, wo ich einen beliebigen Delta Sigma Wandler mit 
einem FPGA verarbeiten kann, bin ich zufrieden.

von Lutz Locus (Gast)


Lesenswert?

Spice schrieb:
> Nun bin ich mir nicht sicher, ob ich das mit einem CPLD oder FGPA
> angehen sollte, da ich nicht wirklich weiss, wieviel Speicher/Flash
> nötig sein werden. Bevorzugt würde ich einen alten XC9572 nehmen, wenn
> man das in den CPLD gegossen bekommt, da ich dafür kein externes Flash
> brauche.

Die XC95 sind grausam klein bezüglich der Speicherelemente, bei dem 
genannten haste gearde mal 72 Flipflops. Könntest also grade mal 3x 24 
bit Zähler damit aufbauen. Um belastbare Zahlen für den Resourcenbedarf 
zu ermiteln, schreibst du einfach den HDL-Code, den Du ohnehin schreiben 
müsstest (egal ob FPGA oder CPLD) und lässt den mal für die beide 
Architekturen durchlaufen.

Um ein konkretes Beispiel zu nennen wie wenig 72 FF sind, für eine 
6-stellig  7-Segmentuhr die mit einem 95XC laufen sollte (36 oder 72) 
plant man besser einen niedrigen Uhrquarz (32768kHz) ein, weil sonst die 
Gefahr besteht, das die FF für den Takteiler ausgehen.

>Ich möchte die Schaltung ungern
>aufblähen (FPGA muss nicht zwangsweise sein), aber bin offen für neues.

Dann schau die FPGA-Module an, Da gibt es kleine (62x25 mm) die man 
einfach auf seine Schaltung draufstecken kann, bspw 
https://shop.trenz-electronic.de/de/TEI0001-03-08-C8-MAX1000-IoT-Maker-Board-8kLE-8-MByte-RAM 
und dann hat man neben ca 20 FGPA-GIOS gleich USB, Externen Speicher, 
Flash etc.

Die für Einsteiger kosten weniger als 40€, es gibt auch einige mit Extra 
Peripherie für Maschinensteuerung, etc.. Einfach mal bei Trenz oder 
arrow umschauen. 
https://www.arrow.de/products/analogmax-daq1/trenz-electronic-gmbh

von Lutz Locus (Gast)


Lesenswert?

Lutz Locus schrieb:
> niedrigen Uhrquarz (32768kHz)

Tippfehler: 32,768 KHz aber das sollte mit der bezeichnung Uhrenquarz 
klar sein.

Gustl B. schrieb:
> Code ist in einem aus dem Datenblatt verlinkten PDF.
> https://www.ti.com/lit/an/sbaa094/sbaa094.pdf Sieht überschaubar aus ...

Ich seh da mindestens 7 register a 25bit breit, das lässt den 95XC72 
sicher 'platzen'.

von W.S. (Gast)


Lesenswert?

Spice schrieb:
> Will mich nur in die Thematik Delta Sigma und die
> Verarbeitung der Daten einarbeiten (bestenfalls in Kombination mit einem
> CPLD oder FPGA)

Also "Delta Sigma" ist nur die (sozusagen) Vorsilbe. Du hast in dem, was 
du hier geschrieben hast, den Modulator mit dem Demodulator lustig 
durcheinander gebracht.

Mein Vorschlag wäre, auf der einen Seite sowohl den 
Delta-Sigma-Modulator als auch den Delta-Sigma-Demodulator (resp. den 
Sigma-Delta-ADC) per Literatur verstehen zu lernen und auf der anderen 
Seite das Verstehen und Verwenden von CPLD's und FPGA's anhand anderer 
Verwendungszwecke zu erlernen.

W.S.

von Gustl B. (-gb-)


Lesenswert?

Mal ne dumme Frage zur Demodulierung:

Ja, man kann da Filter unterschiedlicher Aufwendigkeit bauen. Aber 
reicht es nicht die 1sen zu zählen?
Ich stelle mir das vor wie ein 16 Bit Zähler, wenn eine 1 reinkommt, 
dann wird +1 gerechnet, wenn eine 0 reinkommt, dann -1.
Alle 2**16 Takte hat man dann als Zählerwert die Anzahl der 1sen und 
somit einen 16 Bit Wert.
Nachteil:
Das ist langsam. 20 MHz / 2**16 = 305, man bekommt damit also nur 305 
Werte je Sekunde. Braucht aber eben auch kaum Logik.
Der Zähler macht aber ja sowas wie einen gleitenden Mittelwert. Da muss 
man nicht warten bis der komplett einmal erneuert wurde nach den 2**16 
Takten, man kann auch zwischendrinnen Werte rausholen wenn man eine 
höhere Abtastrate haben will.
So habe ich das bisher mit MEMS Mikrofonen gemacht die ja auch einen PDM 
Datenstrom ausgeben. Funktioniert wunderbar.

von Gregor (Gast)


Lesenswert?

Gustl B. schrieb:
> Ja, man kann da Filter unterschiedlicher Aufwendigkeit bauen. Aber
> reicht es nicht die 1sen zu zählen?
Natürlich reicht das und das tut man indirekt ja auch. Es passiert beim 
Aufwärts-Abwärtszählen eben nur kontinuierlich.

Gustl B. schrieb:
> So habe ich das bisher mit MEMS Mikrofonen gemacht die ja auch einen PDM
Reden wir nun von PDM oder PWM?

Bei MEMS ist der Anspruch nicht so hoch, da reicht eine einfache 
Dezimation.

von Gustl B. (-gb-)


Lesenswert?

Gregor schrieb:
> Reden wir nun von PDM oder PWM?

PDM. Ich weiß nicht wo hier im Thread das PWM herkommt. Ja, das hat der 
TO oben mal geschrieben, einmal, aber ein Delta Sigma Modulator erzeugt 
einen PDM Datenstrom. Also Pulsdichtemodulation.
PWM könnte man als eine Sonderform der PDM betrachten bei der man alle 
1sen und 0en sortiert und nebeneinander anordnet.

von Gregor (Gast)


Lesenswert?

Gustl B. schrieb:
> PWM könnte man als eine Sonderform der PDM betrachten bei der man alle
> 1sen und 0en sortiert und nebeneinander anordnet.

Das ist aber nur begrenzt richtig, weil die Eigenschaft Nr 1  des PDM 
die variable Wiederholrate ist. Ein Mittelwert um die 0 ist also nicht 
etwa:

0000.0000.0000.0000.1111.1111.1111.1111

sondern

0101.0101.0101.0101.0101.0101.0101.0101

Das hat Auswirkungen für die Signalanstiege, die viel feiner abgebildet 
werden, was bedingt, dass der DSM hohen Frequenzen besser folgen kann 
...

... abhängig von der Ordnung des DS-Modulators, welche maßgeblich ist 
für die Art und den Umfang der Filterung. Nur mit Dezimation nach dem 
Datenblatt des ADC hat es immer noch ordentliche Störungen.

Beitrag "CIC-Filter für Halbierung der Abtastrate"
Beitrag "ADC - Dezimierung"
Beitrag "Rate Decimation / Tiefpassfilter"

von Spice (Gast)


Lesenswert?

Lutz Locus schrieb:
> Dann schau die FPGA-Module an, Da gibt es kleine (62x25 mm) die man
> einfach auf seine Schaltung draufstecken kann, bspw
> 
https://shop.trenz-electronic.de/de/TEI0001-03-08-C8-MAX1000-IoT-Maker-Board-8kLE-8-MByte-RAM
> und dann hat man neben ca 20 FGPA-GIOS gleich USB, Externen Speicher,
> Flash etc.

Den MAX1000 habe ich hier zufällig liegen, werde damit mal starten.

Lutz Locus schrieb:
> Ich seh da mindestens 7 register a 25bit breit, das lässt den 95XC72
> sicher 'platzen'.

ich habe mir das auch weniger Komplex als globalen 16bit Zähler 
vorgestellt, wo ich dann am Ende die Pulsdichte in einem Register 
vorliegen habe, schlimmstenfalls also 16 bit register...

W.S. schrieb:
> Mein Vorschlag wäre, auf der einen Seite sowohl den
> Delta-Sigma-Modulator als auch den Delta-Sigma-Demodulator (resp. den
> Sigma-Delta-ADC) per Literatur verstehen zu lernen und auf der anderen
> Seite das Verstehen und Verwenden von CPLD's und FPGA's anhand anderer
> Verwendungszwecke zu erlernen.

Echt wilde Idee von dir, aber ich sagte doch bitte nicht direkt 
steinigen

Gustl B. schrieb:
> Gregor schrieb:
>> Reden wir nun von PDM oder PWM?
>
> PDM. Ich weiß nicht wo hier im Thread das PWM herkommt. Ja, das hat der
> TO oben mal geschrieben, einmal, aber ein Delta Sigma Modulator erzeugt
> einen PDM Datenstrom. Also Pulsdichtemodulation.
> PWM könnte man als eine Sonderform der PDM betrachten bei der man alle
> 1sen und 0en sortiert und nebeneinander anordnet.

PDM, sorry für die Verwirrung, einiges gelernt seit gestern ;-)

von Gregor (Gast)


Lesenswert?

Spice schrieb:
> ich habe mir das auch weniger Komplex als globalen 16bit Zähler
> vorgestellt, wo ich dann am Ende die Pulsdichte in einem Register
> vorliegen habe, schlimmstenfalls also 16 bit register...

Da geht es schon los: Um 16 Bit Qualität im Register zu haben, muss man 
je nach eingeprägtem Spektrum mit bis zu 32 Bit Auflösung zählen. Das 
lässt sich z.B. testen, wenn man einen Funktionsgenerator mit eine hohen 
Frequenz und leichten Modulationen einspeist. Minimal reichen 
wahrscheinlich 16.5 Bit, also 17, wenn es sich um ein steriles Signal am 
unteren Bandende handelt.

Statistisch, also für eine weisses Signal, sollten 24 Bit ok sein. Ich 
würde mit 32 Bit Zählern arbeiten und entsprechend lange integrieren. 
Für den Fall mit Netzfrequenz könnte weniger reichen.

Für ein typisches Ratenfilter mit 3 Stufen braucht es mindestens N/2 je 
Stufe mehr an Bits, also S1 = 16 Bit, S2 = 16+8=24 Bit, S3 = 16+8+8=32 
Bit. Das passt dann maximal zu den Dezimationsstufen N=8 -> 256. Damit 
kommt man auf 1/256/256/256 = 1/16 Mio runter. Für 50 Hz gehen 
wahrscheinlich 1/128. Dann reichen auch weniger Bits, sagen wir 16+23+30 
oder so.

von Lutz Locus (Gast)


Lesenswert?

Spice schrieb:
> PDM, sorry für die Verwirrung, einiges gelernt seit gestern ;-)

OK, PDM braucht nach meinem Verständnis ein Startsignal um Bias-frei zu 
sein, das kommt dann zum seriellen Clock und Datenstrom hinzu. Dann 
steht da Drei Kanal in der Forderungsliste. Teilen sich die Drei Kanäle 
signale/Register (bspielwsweise, sclk,sinit) oder sind die komplett 
unabhängig?

Wie schauts mit dem parallelen Output aus: Dreimal 16 bit. oder einmal 
plust eingehende Selectionssignale?.

von Spice (Gast)


Lesenswert?

Lutz Locus schrieb:
> OK, PDM braucht nach meinem Verständnis ein Startsignal um Bias-frei zu
> sein, das kommt dann zum seriellen Clock und Datenstrom hinzu.

Wie meinst du das? Ich dachte eigentlich, dass ich zu einer beliebigen 
Zeit anfangen kann abzutasten, ohne irgendein Startsignal oder eine 
zusätzliche Synchronisierung?

Bei 3 mal 16 bit würde ich das mit der parallelen Ausgabe nochmal 
überdenken. Ich vermute eine SPI wäre da die bessere Option.
Die 3 Kanäle plus das FPGA/CPLD können sich eine Clock teilen, quasi 
parallel und synchron abtasten. Wenn da eine SPI dabei ist, ist 
sicherlich ein FPGA gesetzt, aber wie gesagt, ich habe den MAX1000 hier 
liegen, damit könnte ich erstmal spielen.

von Lutz Locus (Gast)


Lesenswert?

Spice schrieb:
> Lutz Locus schrieb:
>> OK, PDM braucht nach meinem Verständnis ein Startsignal um Bias-frei zu
>> sein, das kommt dann zum seriellen Clock und Datenstrom hinzu.
>
> Wie meinst du das? Ich dachte eigentlich, dass ich zu einer beliebigen
> Zeit anfangen kann abzutasten, ohne irgendein Startsignal oder eine
> zusätzliche Synchronisierung?

ich meine das im Zusammenhang mit:

>> Ich stelle mir das vor wie ein 16 Bit Zähler, wenn eine 1 reinkommt,
>> dann wird +1 gerechnet, wenn eine 0 reinkommt, dann -1.

Es wird also nur eine Art differenz übermittel und nicht der 
Absolutwert. Würde jetzt die Abtastung des 50 HZ sinus zum Zeitounkt des 
positiven Scheitelwertes beginnen würde der Zählerstand erst mal ins 
Negative gehen, statt dem wert von 230V o.ä. zu entsprechen. Deshalb 
wäre es doch nötig, den absoluten Startwert einzustellen, respektive 
wenn der Startwert des Zählers 0x0000 ist, mit der Abstadtung zu 
beginnen, wenn der Realwert die Entsprechung v.0x00 errreicht hat.

> Wenn da eine SPI dabei ist, ist sicherlich ein FPGA gesetzt,

Nö, SPI ist simple (xchieberegister) das sollte ein CPLD können. Da wird 
Dir sicher ein Lothar auf ein Beispiel verweisen können: 
http://www.lothar-miller.de/s9y/archives/31-SPI-Slave-im-CPLD.html


>
> Bei 3 mal 16 bit würde ich das mit der parallelen Ausgabe nochmal
> überdenken. Ich vermute eine SPI wäre da die bessere Option.
> Die 3 Kanäle plus das FPGA/CPLD können sich eine Clock teilen, quasi
> parallel und synchron abtasten. Wenn da eine SPI dabei ist, ist
> sicherlich ein FPGA gesetzt, aber wie gesagt, ich habe den MAX1000 hier
> liegen, damit könnte ich erstmal spielen.

von Gregor (Gast)


Lesenswert?

Lutz Locus schrieb:
> Spice schrieb:
>> Lutz Locus schrieb:
>>> OK, PDM braucht nach meinem Verständnis ein Startsignal um Bias-frei zu
>>> sein, das kommt dann zum seriellen Clock und Datenstrom hinzu.
> Es wird also nur eine Art differenz übermittel und nicht der
> Absolutwert

Es gibt 3 verschiedene Aspekte bei dem Thema:

1 Offset im Signal vor dem Wandler (hängt von der analogen Messkette ab)
2 Übertragung von künstlichem Offset durch den Wandler (hängt am 
Wandler)
3 Offset bei der Integration (also durch den Startzeitpunkt im Sinus)

Alle 3 erfordern an unterschiedlichen Stellen Eingriffe.

Punkt 3 ist sicher der Fetteste: Wenn man die 50Hz über einen simplen 
Filter integriert, hat man immer einen Offset im Signal. Den muss man 
eben weginterpretieren.

Punkt 2 ist der Geringste, den kriegt man mit Kalibierung weg

Punkt 1 liegt irgendwo in der Mitte: Muss ebenfalls gemessen werden, 
indem man 2 und 3 eliminiert und das Ganze kalibriert.

Oder man setzt einen Hochpass ein, dann erledigen sich 1+2.

Bei 50Hz muss man hoch genug abtasten, um den Nullpunkt sehen zu können. 
Dann kann man sich auch darauf synchen und einen Offset mitmessen, falls 
der in den 50Hz noch drin sein sollten (was ja auf die lange Sicht nicht 
der Fall ist).

von Spice (Gast)


Lesenswert?

Lutz Locus schrieb:
> Es wird also nur eine Art differenz übermittel und nicht der
> Absolutwert. Würde jetzt die Abtastung des 50 HZ sinus zum Zeitounkt des
> positiven Scheitelwertes beginnen würde der Zählerstand erst mal ins
> Negative gehen, statt dem wert von 230V o.ä. zu entsprechen. Deshalb
> wäre es doch nötig, den absoluten Startwert einzustellen, respektive
> wenn der Startwert des Zählers 0x0000 ist, mit der Abstadtung zu
> beginnen, wenn der Realwert die Entsprechung v.0x00 errreicht hat.

Also müsste ich auf den Nulldurchgang warten? Den erkenne ich doch mit 
50% Pulsdichte? oder ich sammle 32 bi ein und vergleiche die ersten 16 
bit mit den weiteren 16 bit, dann weiss ich doch, ob es hoch oder runter 
wandert?

Lutz Locus schrieb:
> Nö, SPI ist simple (xchieberegister) das sollte ein CPLD können. Da wird
> Dir sicher ein Lothar auf ein Beispiel verweisen können:
> http://www.lothar-miller.de/s9y/archives/31-SPI-Slave-im-CPLD.html

Besten Dank

Gregor schrieb:
> 1 Offset im Signal vor dem Wandler (hängt von der analogen Messkette ab)

Die Messkette steht doch fest... Mit Widerständen runterkaskadieren und 
dann auf z.B. den oben erwähnten Delta Sigma Modular.

Gregor schrieb:
> 2 Übertragung von künstlichem Offset durch den Wandler (hängt am
> Wandler)

Den messe ich, indem ich ein definiertes Signal draufgebe und dann 
schaue, was hinten rauskommt. Kalibriere ich dann später im Code.

Gregor schrieb:
> 3 Offset bei der Integration (also durch den Startzeitpunkt im Sinus)

Hier habe ich noch keinen Plan, da muss ich definitiv tiefer abtauchen.

Gregor schrieb:
> Oder man setzt einen Hochpass ein, dann erledigen sich 1+2.

Wo genau? Analog oder Digital? Meinst du, um den Gleichanteil zu 
filtern?

Gregor schrieb:
> Bei 50Hz muss man hoch genug abtasten, um den Nullpunkt sehen zu können.
> Dann kann man sich auch darauf synchen und einen Offset mitmessen, falls
> der in den 50Hz noch drin sein sollten (was ja auf die lange Sicht nicht
> der Fall ist).

Wie schnell ist denn "hoch genug"? reichen die 20Mhz nicht?

von kleiner Einwurf aus der Dezimationstheorie (Gast)


Lesenswert?

Spice schrieb:
> Wie schnell ist denn "hoch genug"? reichen die 20Mhz nicht?
Die 20MHz sind offenbar die Modulator-Frequenz. Das ist ein 1-Bit 
Signal. Was es braucht, um einen Nulldurchgang bei 50Hz genau zu sehen, 
ist eine ausreichend hohe Auflösung in der Zeitachse und Pegelachse.

Für die Dezimation wird die Abtastrate um z.B. 100.000 verringert, um 
auf am Ende 15 + 1/2 Bits zu kommen. Das wären dann noch 200Hz. Um 50Hz 
darzustellen, eventuell genug - für einen Nulldurchgang aber ein bischen 
wenig :-)

Sicher wären 12 Bits und eine Rate von 20M/4000 = 5kHz besser. Dann 
hätte man bei 50Hz immerhin 100 Punkte -> 1%

Oder 10 Bits -> 1:1000 -> 0,25%

von J. S. (engineer) Benutzerseite


Lesenswert?

Spice schrieb:
> Der Modulatorchip
> (AMC1303x)
Interessante Anwendung - kenne ich doch von irgendwoher :-)

Harald E. schrieb:
> Ich frage außerdem aus einem ganz bestimmten Grund: Die Aufgabe kommt
> mir irgendwie bekannt vor

Nicht nur Dir :-)

Kann es sein, dass diese Chips irgendwo beworben wurden und gleich 
Mehrere ihn für ihre Anwendung entdeckt haben?

Um es allgemein zu beantworten:

Ja, man kann den Datenstrom von DIESEM Chip und seinen Brüdern mit 20MHz 
verarbeiten, wenn man das passende Filter wählt (oder "den" passenden 
Filter *1).

Man allerdings auch die Abtastfrequenz etwas senken, um zu einem Wert zu 
kommen, der bestimmte Vorteile hat.

Man kann auch den Filtertypus etwas modifizieren und damit auf den 
Offsetdrift und BIAS Rücksicht nehmen, den der Chip hat.

Vor allem kann man die Modulatorqualität (2. Ordnung) des Chips 
berücksichtigen und den Filter entsprechend auslegen, um in der 
"analogelektronischen" Sicht annähernd an die Qualität heran zu kommen, 
die der Hersteller in der Doku mit der Angabe "16@78kHz" verspricht.

Je nachdem, wie hoch die Messgenauigkeit sein soll, kann man das mit 
einem zusätzlichen IIR+FIR so dezimieren, dass es für "Bässe" mit 20 Bit 
Analog-Qualität taugt. Man muss aber jeweils geschickt überabtasten, um 
die Artefakte das vorherigen Filters zu mildern. *2

Um es konkret zu machen:

Meine Pyratone-PDM arbeitet an der Stelle mit 24.576MHz und erzeugt 
Bassfrequenzen bis 200Hz mit effektiv rund 20 Bit Genauigkeit bei 
einfacher RCRC-Filterung. Der interne "Demodulator" / Integrator der 
mitläuft und das steuert, prozessiert das Signal genau so, wie oben 
beschrieben:

25.576MHz  IIR-BP(1Hz...50k) -> CIC3+(512, 48Khz) -> FIR128 (24kHZ) -> 
FIR128(192Hz)

Funktioniert mit einem VHDL-Modul für 8-Kanal-Audio mit 192kHz in 
HDMI!*3
Cores erhältlich - getestet auf Xilinx S6, A7, Altera C3, C4

-------------------------------------------------------
*1 Beitrag "Re: Eigenschaften des Moving Avarage Filters"
*2 Beitrag "Re: digitales Notchfilter mit TP kombinieren"
*3 Beitrag "Re: HDMI Sound Input"

: Bearbeitet durch User
von Gregor (Gast)


Lesenswert?

Spice schrieb:
> Gregor schrieb:
>> 1 Offset im Signal vor dem Wandler (hängt von der analogen Messkette ab)
>
> Die Messkette steht doch fest... Mit Widerständen runterkaskadieren und
> dann auf z.B. den oben erwähnten Delta Sigma Modular.
Jeder Verstärker oder Wandler oder Abschwächer bringt einen Offsetfehler 
und ob es reicht, die Netzspannung mit Widerständen herunter zu teilen, 
darf man wohl mal getrost infragestellen. Normalerweise sitzt dort ein 
kapazitiver oder induktiver Übertrager.

Spice schrieb:
> Gregor schrieb:
>> Oder man setzt einen Hochpass ein, dann erledigen sich 1+2.
> Wo genau? Analog oder Digital? Meinst du, um den Gleichanteil zu
> filtern?
Ja. Geht analog oder digital.

-gb- schrieb:
> Wenn man das filtert und eine ordentliche ENOB haben will, dann bleiben
> von den 20 MHz noch ein paar kHz übrig.
Mal ehrlich: 50Hz auszumessen und dafür einen 20MHz PDM zu nehmen ist 
ein klein bissl overkill, oder?

von Gustl B. (-gb-)


Lesenswert?

Gregor schrieb:
> Mal ehrlich: 50Hz auszumessen und dafür einen 20MHz PDM zu nehmen ist
> ein klein bissl overkill, oder?

Vielleicht. Das Produkt wird aber genau damit beworben. Vielleicht will 
man ja zusätzlich zu der Frequenz auch noch mehr sehen. Oder die 
Phasenlage genau ausmessen oder so ... der Hersteller wird sich schon 
was dabei gedacht haben.

von Gregor (Gast)


Lesenswert?

Gustl B. schrieb:
> Vielleicht. Das Produkt wird aber genau damit beworben. Vielleicht will
> man ja zusätzlich zu der Frequenz auch noch mehr sehen.
Wenn du die Netzfrequenz messen willst, dann brauchst du richtig 
Aufwand, weil die von dem Sollwert nur Bruchteile abweicht und das auch 
nur dynamisch und lokal, weil genügend Kraftwerke gegenregeln.

Das hier:

kleiner Einwurf aus der Dezimationstheorie schrieb:
> Sicher wären 12 Bits und eine Rate von 20M/4000 = 5kHz besser. Dann
> hätte man bei 50Hz immerhin 100 Punkte -> 1%

reicht dann hinten und vorne nicht! Da brauchst du einen 
selbstkalibrierenden Wandler und eine regelrechte PLL.

Was man eigentlich wird messen wollen, ist die Amplitude ohne den ganzen 
Dreck und das geht immer noch am Einfachsten mit einem Notchfilter. Das 
machst du für Stöme und Spannungen getrennt und hast alles, was du 
brauchst.

von He. (Gast)


Lesenswert?

Spice schrieb:
> Klingt sehr interessant. Luftspule + Kapazitäten in der Platine? Wie
> kann man sich das vorstellen? 4 Kanäle für 3 Phasen?

So ungefähr. Das Signal aus 230V ist ja "heiß" genug, um es anzuzapfen. 
Brauchst halt noch ne schlaue Implementierung für den Strom. Direkt über 
kapazitive-induktive Kopplung gibt es nur Spannung.  Erstmal.

von Mitleser (Gast)


Lesenswert?

> Man kann auch den Filtertypus etwas modifizieren und damit auf den
> Offsetdrift und BIAS Rücksicht nehmen
Das geht bei einem Dezimationsfilter automatisch, dachte ich?

> die Modulatorqualität (2. Ordnung) des Chips berücksichtigen und
>den Filter entsprechend auslegen
An welcher Stelle muss das passieren? Die Qualität des Modulators ist in 
dem Sinn ja nicht bekannt. Was kann beim Filter angepasst werden?

> Direkt über kapazitive-induktive Kopplung gibt es nur Spannung
Wie funktioniert das mit der "kapazitiv-induktiven" Koppelung?
Ist das ein in die Platine eingebauter Trafo?
Wie hoch ist die Leistung, die "angezapft" wird?
Und wie bekommt man den Strom?

von Spice (Gast)


Lesenswert?

Mitleser schrieb:
>> Direkt über kapazitive-induktive Kopplung gibt es nur Spannung
> Wie funktioniert das mit der "kapazitiv-induktiven" Koppelung?
> Ist das ein in die Platine eingebauter Trafo?
> Wie hoch ist die Leistung, die "angezapft" wird?
> Und wie bekommt man den Strom?

Vermutlich mit einem planaren PCB Transformator, um an die Spannung 
ranzukommen.

von Spice (Gast)


Lesenswert?

Gregor schrieb:
> Was man eigentlich wird messen wollen, ist die Amplitude ohne den ganzen
> Dreck und das geht immer noch am Einfachsten mit einem Notchfilter. Das
> machst du für Stöme und Spannungen getrennt und hast alles, was du
> brauchst.

Kannst du das bitte näher erläutern? Ein Notchfilter ist eine 
Bandsperre? Wie lege ich die aus? Wäre hier nicht ein Bandpass 
angebracht, um die 50Hz zu sehen und nicht zu sperren?

Beitrag #7323476 wurde vom Autor gelöscht.
von Gregor (Gast)


Lesenswert?

Spice schrieb:
> Ein Notchfilter ist eine Bandsperre?
Vollkommen richtig. Das war von mir schlecht formuliert, denn aus Sicht 
des Signalflusses ist es das Gegenteil des Notch-Filters.

Aus Sicht der Signalverarbeitung macht es aber keinen Unterschied. Die 
Koeffizienten werden einfach negiert, bzw. man zieht (für ein echtes 
Notch) die hervorgehobene Frequenz einfach von Einngang ab.

Spice schrieb:
> Vermutlich mit einem planaren PCB Transformator, um an die Spannung
> ranzukommen.
Der z.B. wäre auch schon eine Art Filter, weil der Trafo eine 
präferierte Übertragungsfrequenz hat, bei der die Übersetzung optimal 
ist.

von Spice (Gast)


Lesenswert?

Gregor schrieb:
> Spice schrieb:
>> Ein Notchfilter ist eine Bandsperre?
> Vollkommen richtig. Das war von mir schlecht formuliert, denn aus Sicht
> des Signalflusses ist es das Gegenteil des Notch-Filters.
>
> Aus Sicht der Signalverarbeitung macht es aber keinen Unterschied. Die
> Koeffizienten werden einfach negiert, bzw. man zieht (für ein echtes
> Notch) die hervorgehobene Frequenz einfach von Einngang ab.

Verstehe...

> Spice schrieb:
>> Vermutlich mit einem planaren PCB Transformator, um an die Spannung
>> ranzukommen.
> Der z.B. wäre auch schon eine Art Filter, weil der Trafo eine
> präferierte Übertragungsfrequenz hat, bei der die Übersetzung optimal
> ist.

kann man denn ein Trafo nur aus PCB Traces für 50Hz realisieren, wo man 
anständig die Spannung rekonstruieren könnte?

von J. S. (engineer) Benutzerseite


Lesenswert?

Mitleser schrieb:
>> Man kann auch den Filtertypus etwas modifizieren und damit auf den
>> Offsetdrift und BIAS Rücksicht nehmen
> Das geht bei einem Dezimationsfilter automatisch, dachte ich?
Bei solchen Filtern geht eigentlich nichts automatisch. Die haben alle 
ihre Eigenschaften, die man kennen und berücksichtigen muss. Klingt 
allgemein und banal - ist aber so. Konkret hat ein Dezimationsfilter 
(egal ob CIC oder vollst. FIR) immer eine Bandbreite und das gilt auch 
für den Drift. Das muss man in Einklang bringen. Eine einfache 
Driftkorrektur wäre z.B. ein Hochpass mit einer sehr niedrigen 
Grenzfrequenz von 0.x Hz. Wie tief die anzusetzen ist, hängt vom System 
ab.

Mitleser schrieb:
>> die Modulatorqualität (2. Ordnung) des Chips berücksichtigen und
>>den Filter entsprechend auslegen
> Die Qualität des Modulators ist in dem Sinn ja nicht bekannt.
Aber das Prinzip und damit das Differenzial, das er bearbeitet. Ein 
Modulator höherer Ordnung hat eine höhere Qualität insgesamt mit 
zunehmendem Fokus auf die Oberwellen. Die Regelqualität zeigt sich 
letztlich im Störspektrum, das er erzeugt. Je hochfrequenter das ist, 
desto besser ist es zu filtern, wenn man hohe Frequenzen braucht. Höhere 
Modulatorordnungen erzeugen allerdings auch etwas mehr Rauschen, 
weswegen die für Anwendungen wie hier nicht unbedingt angebracht sind, 
weil man das Störspektrum eh gut wegbekommt, da das Nutzspektrum so tief 
liegt.

Spice schrieb:
> kann man denn ein Trafo nur aus PCB Traces für 50Hz realisieren, wo man
> anständig die Spannung rekonstruieren könnte?
Das würde mich auch mal interessieren. Im Grunde nimmt jede Leiterbahn 
das Verhalten des Nachbarn mit auf. Das sehen wir beim Audio sehr 
extrem. Müsste sich mit einem OPAMP verstärken lassen. Das gleiche muss 
auch beim Strom gehen, also Shunt in den Leistungszweig, OPAMP dran und 
dann den Übertrager, um zu entkoppeln. Einfache Stromsensoren arbeiten 
so. Ein Mitbewerber meines ehemaligen AG hat mal in einer Autoanwendung 
mit einem billigen Shunt die Batterieströme auf diese Weise in etwa so 
genau gemessen, wie wir mit komplizierten Stromsensoren. Wahrscheinlich 
aufs Mikrovolt gemessen, alles Rauschen aufgeladen und dann mit DSP gut 
gefiltert und auf die Regelung optimiert. Leider wollte man damaliger AG 
von Software nichts wissen, sondern hat probiert, alles analog zu lösen, 
wie er auch sonstige Vorschläge meinerseits ignoriert hat. (Ich erinnere 
mich gerade wieder daran, weil ich das Stichwort "spice" lese).

: Bearbeitet durch User
von He. (Gast)


Lesenswert?

Spice schrieb:
> kann man denn ein Trafo nur aus PCB Traces für 50Hz realisieren, wo man
> anständig die Spannung rekonstruieren könnte?
Die Frage kann man sich leicht selbst beantworten. Bei nur 50Hz ist kaum 
Leistung zu übertragen. Es gibt eine optimale Frequenz unter 
Berücksichtigung von Steukapazitäten. Richtig Leistung geht nur mit 
einem kleinen Übertrager. Diese werden aus Störgründen mit wechselnden 
Frequenzen im Bereich 100kHz-200kHz betrieben. Geht über PWM.

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.