mikrocontroller.net

Forum: FPGA, VHDL & Co. CPLD 95xxx o.ä. als digitaler Tiepass nutzbar ?


Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich muss demnächst eine digitale Übertragungstrecke simulieren, wozu ich 
digitale Tiefpässe benötige. Nun wollte ich fragen ob jemand eine 
Möglichkeit kennt diese in fertigen Blöcken graphisch in einen XC95108, 
9572 oder 9536 zu programmieren. Oder gibt es vielleicht fertige Codes 
dafür, oder eine Möglichkeit mit einem FPGA?
Hat evtl. jemand einen Lösungsansatz für dieses Problem? Mein 
Hauptanliegen liegt aber zunächst in einer digitalen Tiefpass 
Programmierung, wobei mir z.B. auch ein fertiger C++ Code o.ä. 
weiterhelfen würde.

(Am Ende sollen 64KHz Bitfolgen übertragen werden und die Tiefpässe nach 
möglicht nach einer Filterberechnung mit dem Programm MatLab mit den 
dadurch berechneten gewerten parametriert werden...)

MfG Christoph

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Chris

>ich muss demnächst eine digitale Übertragungstrecke simulieren, wozu ich
>digitale Tiefpässe benötige.

Meinst du FIR bzw. IIR Filter? Das kannst du mit CPLDs praktisch 
vergessen (auf jden Fall die FIR, ein kleiner IIR sollte machbar sein)

>Programmierung, wobei mir z.B. auch ein fertiger C++ Code o.ä.
>weiterhelfen würde.

Im CPLD? Die werden mit VHDL "programmiert" C++ müsste per Hand in VHDL 
umgestzt werden.

MFg
Falk

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, dass Du Dich so schnell meldest, musste kurz mal überlegen, FIR 
Filter wären ja rekursive, deren Ausgangswerte von bereits vergangegnen 
Eingangswerten abhängen würde, dehalb wär ein IIR Filter ausreichend. 
Wie würde denn da eine einfache Form aussehen?

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Chris

>Super, dass Du Dich so schnell meldest, musste kurz mal überlegen, FIR
>Filter wären ja rekursive, deren Ausgangswerte von bereits vergangegnen
>Eingangswerten abhängen würde,

Nee, genau anders herum. IIR ist rückgekoppelt.

> dehalb wär ein IIR Filter ausreichend.
>Wie würde denn da eine einfache Form aussehen?

Gibt überall im Netz. Frag Tante Google.

MFG
Falk


Autor: alex trusk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Chris (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi Falk, habe schon ein ganze Menge darüber gesammellt und das ganze mal 
kurz in einer pdf gesammelt und würd mich freuen, wenn Du dazu einen 
guten Ratschlag geben könntest Mfg Chris

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein strukturelles Beispiel für einen Tiefpass, Amplitudengang und 
mathematische Formel sind in der pdf dabei... Nur eine Umsetzung der 
angegebenen Struktur in ein Ersatzschatbild (ESB) für den CPLD bekomme 
ich nicht hin.

Autor: Chris (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hab mir eben nochmal die pdf angschaut und irgenwie ne Zeichnung als 
Eingangssignal angezeigt bekommen. Das muss natürlich X[z] heißen....

MfG

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wichtig für die auswahl des cplds wäre noch die frage mit welcher 
datenwort-breite du arbeiten möchtest/musst.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Alex Trusk,
habe ein ganz gutes Anwendungsbeispiel unter Deienem ersten Link 
gefunden "Unterdrückung von Hintergrundgeräuschen bei Freisprechanlagen" 
wenn dies bei einer Freispecheinrichtung tatsächlich auf digitaler Basis 
gemacht wird. Ich Schau da gleich mal unter den weiteren angegebenen 
Links nach.... Vielleicht findest Du ja noch etwas zur 
Störungsunterdruckung, wo die digitale Art und Weise beschrieben wird, 
aber ein konkretes Umsetzungsbeispiel wäre für mich am einfachsten 
nachzubauen. MfG

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Mason,
Das binäre 64KHz Einganssignal soll seriell in den CPLD eingespeist und 
auch wieder ausgegeben werden. Was intern passiert 
(parallel-Verarbeitung) spielt keine Rolle. Erst zu einem späteren 
Zeitpunkt sollen z.B. auch ternäre Signale eingespeist werden. Aber auch 
dann spielt die datenwort-breite doch eigentlich bei serieller 
Einspeisung keine Rolle, da jedes Bit gleich verfälscht werden soll; 
durch die Tiefpass-Filter. Oder bedenke ich irgendetwas bezüglich der 
Datenwotbreite überhaupt noch nicht. Ansonsten würde ich sagen 8bit 
breit, da keine Paritätsprüfung o.ä. eingeführt werden soll.

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Mason,
ich glaube jetzt verstehe ich; der TP-Filter soll sich auf mindestens 
acht Eingangsbit beziehen können, d.h. die Ausgangsfolge würde um 
mindestens 8bit verögert gegenüber der Eingangsfolge ausgegeben. Hoffe 
Du meldest Dich nocheinmal. Nicht das ich am Ende an irgend so einem 
"datenwort-breite Problem" scheitere...

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Chris

>Hi Falk, habe schon ein ganze Menge darüber gesammellt und das ganze mal
>kurz in einer pdf gesammelt und würd mich freuen, wenn Du dazu einen
>guten Ratschlag geben könntest

>Zum einen weiß ich nicht genau mit welcher Abtastfrequenz ich arbeiten sollte da 
ich dazu
>keine verständlichen Informationen in den Datenblättern finde und zum anderen 
weiß ich
>nicht wie ich die Zeitverzögerung programmieren sollte?
>Wichtiger wäre erst einmal die Zeitverzögerung im CPLD XC9536, das andere >könnte 
ich
>dann mit meinem OSZI und in der Firma kontrollieren.

1.) Du weisst noch gar nicht so recht was du machen willst. Dir fehlen 
WICHTIGE Grundlagen. Also such dir ein Buch zum Thema digitale Filter 
und lies es.

2.) Wenn du 1.) gemacht hast wirst du auch wissen wie man eine 
Verzögerung programmiert. Ich verrate es dir, aber das erspart dir 1.) 
nicht. Eine Verzögerung ist nichts weiter als ein Speicher (Register mit 
mehreren FlipFlops), welcher die Daten um einen Systemtakt verzögert.

3.) Vergiss den CPLD. Die Dinger sind dafür zu klein. Besorg die ein 
kleines FPGA-Evaluationboard. Es gibt auch welche da sind schon Codecs 
drauf (AD und DA Wandler). Vorn Mikro dran, hinten Kopfhöhrer, 
DSP-System fertig (das ist es, was du quasi bauen willst).

4.) Die Abtastratte richtet sich nach deinem Eingangssignal. Telephon 
hat 8 kHz, Radioqualität 11 kHz, CD 44.1 kHz.

5.) Was meinst du mit deinem "binärem 64 kHz Signal"? Ist das ein 
Datenstrom vom ISDN?

MfG
Falk

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi chris,

man sollte schon wissen welche breite dein signal hat. das entscheidet 
maßgeblich deinen ressourcen-verbrauch (dadurch das der cpld ja intern 
mit einem parallelen datenstrom arbeiten MUß).
wenn alle deine multiplizierer den faktor 0,5 haben ist es einfach nur 
eine schiebe-operation. dann brauchst du laut deinem blockschaltbild 
noch einen addierer und 2 verzögerungselemente (register).
da deine datenwort breite den logik-verbrauch bestimmt wäre es gut zu 
wissen mit wieviel bits du intern arbeiten mußt damit du einen 
geeigneten cpld auswählen kannst
nur wenn du beispielsweise 32 bit nimmst und hast multiplikatoren von 
eben nicht 0,5 sondern beispielsweise 0,7946123 dann kannst du sowas 
wahrscheinlich mit nem cpld vergessen (du brauchst alleine für deine 
multiplikation mehrere addierer, und das gleich zweimal -> macht der 
cpld dicke backen). man sollte sich vorm filter design immer klar machen 
was alles benötigt wird. in deinem fall ists in sofern einfach da du 
halt alle multiplikatoren auf 0,5 (einmal nach rechts schieben) hast und 
dann vereinfacht es die sache. bei anderen multiplikatoren wirds schon 
schwieriger (sofern sie nicht 2^-x sind)

gruß
rene

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Falk,
Du hast schon recht, dass ich noch nicht genau weiß, was ich machen 
will...
Ich muss mir die Aufgabe auch mal konkret beschreiben lassen.

Das mit den Schieberegistren als Zeitverzögerung ist jetzt klar 
geworden, brauchte wohl jemanden, der mich mal mit der Nase drauf stößt.
Werd heute abend mal versuchen die gezeigte Struktur in meinem 
Schematic-Plan zu programmieren und hier über Erfolg und Misserfolg 
berichten.

Für umfangreichere Filter werd ich mir dann ein FPGA mit Bord besorgen.
Allerdings geht es nicht um eine analog-digital Wandlung 
(Digitalisierung), sondern:
Es wird eine binäre Zufallsfolge (auf einer Datenleitung) zu Testzwecken 
in den digitalen Tiefpaß eingespeist. Die ausgegebene Folge soll dann 
genauso aussehen, wie durch einen analogen Tiefpass verfälscht. Dies 
wird vermutlich nur durch eine DA-Wandlung der neu entstandenen Folge 
möglich sein.
aber wie?

Am besten ich lass mir die Aufgabe nochmal genau beschreiben und meld 
mich dann wieder, allerdings bin ich immer für Anregungen offen.

MfG

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Rene,
Für erste Tests werde ich erstmal ausschließlich mit Multiplikatoren 2; 
1 und 0,5 arbeiten und muss maximal 8bit intern verarbeiten. Allerdings 
sollen die Faktoren später mit MatLab berechnet werden und dann kommen 
solche Zahlen wie 0,7946123 auf jeden Fall vor.
Werd gleich mal die angegebene Struktur programmieren und mich dann 
wieder melden, dann weiß ich hoffentlich auch mehr...

MfG Christoph

Autor: Chris chris (chris78)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@ Falk, @ Rene und alle anderen
habe mich mal mit der Programmierung der angegebenen Struktur 
beschäftigt und mir ist einiges klar geworden.
Die AD-Wandlung habe ich an mein binäres Eingangssignal angepaßt und 
arbeite intern für erste Versuche mit einem 4-bit Wort (1 entspricht 
0010) um den digitalen-TP nicht voll auszusteuern. Das so entstandene 
4-bit Ausgangssignal im CPLD muss ich dann noch auf einen AD-Wandler 
geben.

Wäre super wenn Ihr euch das noch mal angucken könntet was ich da in der 
pdf zuammengestellt habe und mir eure Meinung kurz schreibt.
Kann das so funktionieren?

Habe das soweit auch alles in den CPLD auf meinen Schematic-Plan 
bekommen, allerdings suche ich noch nach einer komfortablen Lösung für 
die Multiplizierer.

MfG

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Chris Lang

>@ Falk, @ Rene und alle anderen
>habe mich mal mit der Programmierung der angegebenen Struktur
>beschäftigt und mir ist einiges klar geworden.
>Die AD-Wandlung habe ich an mein binäres Eingangssignal angepaßt und
>arbeite intern für erste Versuche mit einem 4-bit Wort (1 entspricht

Naja, das ist aber ein wenig inkonsequent. Wenn dein Signal nur binär 
ist, dann musst du das nicht künstlich auf 4 Bit aufblasen.

>0010) um den digitalen-TP nicht voll auszusteuern. Das so entstandene
>4-bit Ausgangssignal im CPLD muss ich dann noch auf einen AD-Wandler
>geben.

???

Das was du villeicht machen solltest/muss, ist die Koeffizienten in mehr 
als 1 Bit zu kodieren, 4 oder 8.

MfG
Falk

Autor: Chris (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
@ Falk, wie gehts?

Die abgewandelte AC-Wandlung ist doch nötig, da ein digitaler TP nicht 
nur mit den Werten 0 und 1 arbeiten kann, weil dann an den 
Additionsstellen des TP Überläufe (Carry bits) entstehen könnten. 
Deshalb habe ich der 1 am Eingang den Dezimalwert 4 zugeordnet, so wird 
der TP vermutlich niemals auf seinen maximal möglichen Dezimalwert 15 
addieren.

Sieh Dir doch bitte mal die verbesserte pdf an, da habe ich das 
gewünschte Ausgangssignal nocheinmal unter dem Oszilloskop-Block 
dargestellt.

Kann ich so die analogen TP durch digitale TP ersetzen ?

MfG

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Chris

>Die abgewandelte AC-Wandlung ist doch nötig, da ein digitaler TP nicht
>nur mit den Werten 0 und 1 arbeiten kann, weil dann an den
>Additionsstellen des TP Überläufe (Carry bits) entstehen könnten.

Das ist kein Problem, du kannst ja mit breiteren Datenworten arbeiten.

>Deshalb habe ich der 1 am Eingang den Dezimalwert 4 zugeordnet, so wird
>der TP vermutlich niemals auf seinen maximal möglichen Dezimalwert 15
>addieren.

Das ist nur eine Frage der internen Datenbreite.

>Kann ich so die analogen TP durch digitale TP ersetzen ?

Mit ist noch nicht so recht klar, wie deine binäre Signalquelle da 
reinpassen soll.
Prinzipiell kann man einen analogen Tiefpass durch einen digitalen 
ersetzen. Das Schema ist dabei immer gleich.

AD- Wandler - Signalverarbeitung per DSP/uC/FPGA/CPLD - DA Wandler.

Der AD bzw DA Wandler laufen sinnvolerweise mit 8..16 Bit. Allerdings 
ist dann ein binäres Eingangssignal relativ sinnlos. Was du darstellst, 
ist lediglich die "Abschleifung" der Flanken der binären Signale am 
Ausgang. Dazu braucht man aber keinen digitalen Tiefpass.
Um einen Filter (Tiefpass) zu prüfen, verwendet man entweder

a) ein konstantes Rechtecksignal. Dieses stellt eine Sprungfunktion dar, 
an der Form der Ausgangsflanke kann man die Eigenschaften des Filters 
ablesen  und ggf. in den Frequenzbereich transformieren.

b) Einen Wobbelgenerator, welcher periodisch ein Sinussignal zwischen 
zwei Frequenzen erzeugt. Mittels Hüllkurvendemodulator und Oszi kann man 
dann den Filterverlauf anzeigen.

Es gibt noch mehr Möglichkeiten.

MfG
Falk

Autor: Chris chris (chris78)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Falk,

>>Kann ich so die analogen TP durch digitale TP ersetzen ?

> Prinzipiell kann man einen analogen Tiefpass durch einen digitalen
> ersetzen. Das Schema ist dabei immer gleich.
>
> AD- Wandler - Signalverarbeitung per DSP/uC/FPGA/CPLD - DA Wandler.

OK, das ist jetzt klar geworden.

> Mit ist noch nicht so recht klar, wie deine binäre Signalquelle da
> reinpassen soll.

> Der AD bzw DA Wandler laufen sinnvolerweise mit 8..16 Bit. Allerdings
> ist dann ein binäres Eingangssignal relativ sinnlos. Was du darstellst,
> ist lediglich die "Abschleifung" der Flanken der binären Signale am
> Ausgang. Dazu braucht man aber keinen digitalen Tiefpass.

Könnte ich denn die gleiche "Abschleifung", die durch die analogen 
Tiefpässe verursacht wird, mit folgender Struktur erreichen?

AD- Wandler - Digitaler Tiefpass (DSP/uC/FPGA/CPLD) - DA Wandler.

Theoretisch sollte ich dann doch bei einer AD-Wandlung des binären 
Eingangssignal die gleiche "Abschleifung" am Ausgang des DA-Wandlers 
erreichen können, oder?
Natürlich muss ich den Filter dann noch entsprechend berechnen.

Oder welche Möglichkeit gibt es denn noch die "Abschleifung" zu 
erreichen?


Nicht ganz so wichtig:
Falls ich einen TP entwerfe, muss ich diesen bestimmt auch messen, aber 
dazu sollte ich mich erst noch ein bischen in das Thema vertiefen.

> Um einen Filter (Tiefpass) zu prüfen, verwendet man entweder
>
> a) ein konstantes Rechtecksignal. Dieses stellt eine Sprungfunktion dar,
> an der Form der Ausgangsflanke kann man die Eigenschaften des Filters
> ablesen  und ggf. in den Frequenzbereich transformieren.

Dachte das mit der Sprungfunktion funktioniere nur für theoretische 
Berechnungen... aber wie erwähnt, muss das nochmal vertiefen.

> b) Einen Wobbelgenerator, welcher periodisch ein Sinussignal zwischen
> zwei Frequenzen erzeugt. Mittels Hüllkurvendemodulator und Oszi kann man
> dann den Filterverlauf anzeigen.

Das habe ich irgendwo schon mal gelesen, mal sehen ob ich das 
wiederfinde wenn ich es brauche.

> Es gibt noch mehr Möglichkeiten.

Wollte mich an dieser Stelle mal für Deine zahlreichen und guten 
Anregungen bedanken.

Frohe Ostern :-)

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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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