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
@ 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
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?
@ 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
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
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.
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
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.
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...
@ 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
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
@ 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
@ 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
@ 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
@ 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
@ 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
@ 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
@ 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 :-)