Forum: FPGA, VHDL & Co. FPGA Spartan 3A Audio Ausgang


von Stan, Kyle & Co. (Gast)


Lesenswert?

Guten Tag!

Ich realisiere z.Zt. ein Projekt mit Xilinx ISE 10.1 für das Spartan 3A 
Starter Kit.

Ich möchte den, auf dem Board vorhandenen Audio-Ausgang nutzen. Dort 
werden dann Kopfhörer angeschlossen.

Ich möchte hier gerne ein einfaches 1KHz - Signal ausgeben. Das signal 
wird einfach durch den FPGA erzeugt und an den Audioausgang 
(kopfhöreranschluss) übertragen.

Jedoch weiß ich nicht, wie man die Lautstärke beeinflussen kann?

Kann mir hier jemand einen Tipp geben? In diversen Handbüchern hab ich 
leider nichts gefunden.

Danke

von Iulius (Gast)


Lesenswert?

Mir fallen da mehrere Möglichkeiten ein, aber welche davon funktioniert 
kann ich nicht sagen...

a) Ausgangspins verändern im ucf-file. Standardmäßig sind das glaube 
3,3V mit 20mA. Kann aber sein das andere Teilnehmer der Bank das stört 
wenn man es verringert.

b) eine Art Puls verwenden. Statt dauerhaft 1Khz anzulegen lässt du 
kurze Pausen zwischendurch.
Logischerweise musst du dann die Frequenz erhöhen, bspweise 2khz mit 
einem duty-cycle von 25%.
Kann aber nicht sagen wie das nachher klingt, eventuell nicht 100%ig so 
wie erwartet.

c) geht immer : Kopfhörer mit regelbarer Lautstärke verwenden

von A. F. (chefdesigner)


Lesenswert?

Soweit mir bekannt, geht es bei diesem Board nur digital raus. Somit 
muss man alles (Amplitude, Phase, Frequenz) in einen 1-Bit-Strom 
übersetzen.

Man geht z.B. mit 10MHz raus und toggelt 1 und 0 - damit bekommt man die 
Nulllinie.


Gibt man mehr 1, als 0 aus, steigt der Mittelwert und umgekehrt.

Damit wird der Amplitudenverlauf gezeichnet.

von Stan, Kyle & Co. (Gast)


Lesenswert?

Ok, das klingt alles schonmal sehr nachvollziehbar. Danke erstmal!

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Auf dem Board, ich hoffe wir reden vom gleichen Board,
 ist ein LTC2624 four Channel DAC.

Leider nicht an der Kopfhörer Buchse angeschlossen.

von Experte (Gast)


Lesenswert?

Ich habe mit dem Spartan 3A schon einfaches Audio erzeugt. (Signaltöne 
bei User-Aktivität). Die Ausgänge sind auch leistungsstark genug, um 
kleine Miniaturlautsprecher antreiben zu können.

FPGA -> R25 Ohm und einen 32er Piezo.

von Gustl B. (-gb-)


Lesenswert?

Geht sowas nicht mit einem Sinus-ROM und dann eine PWM? Zum glätten kann 
man noch einen Kondensator vor den Ausgang hängen. So funktioniert das 
hier wunderschön am Celoxica RC10. Das hat auch eine Klinkenbuchse ohne 
DA-Wandler.

von Christoph Z. (christophz)


Lesenswert?

Gustl Buheitel schrieb:
> Geht sowas nicht mit einem Sinus-ROM und dann eine PWM?

Andreas F. schrieb:
> Somit muss man alles (Amplitude, Phase, Frequenz) in einen 1-Bit-Strom
> übersetzen.

Die PWM macht ja genau diese Übersetzung in einen 1-Bit-Strom.

Aber ein anderes Modulationsschema als Andreas vorgeschlagen hat:

Andreas F. schrieb:
> Man geht z.B. mit 10MHz raus und toggelt 1 und 0 - damit bekommt man die
> Nulllinie. Gibt man mehr 1, als 0 aus, steigt der Mittelwert und umgekehrt.

Diese Modulation nennt sich delta-Sigma.

von Christoph Z. (christophz)


Lesenswert?

Stan, Kyle & Co. schrieb:
> Jedoch weiß ich nicht, wie man die Lautstärke beeinflussen kann?

Im digitalen in dem du die Amplitude von deinem Signal reduzierst (z. B. 
mit einer Fixpunkt Multiplikation und passender Wertbereichsanpassung).

Sobald aber ein Anspruch an Audioqualität besteht, ist das nicht mehr 
trivial, da du ja so die erreichbare Amplidutenauflösung reduzierst.

Iulius schrieb:
> a) Ausgangspins verändern im ucf-file. Standardmäßig sind das glaube
> 3,3V mit 20mA. Kann aber sein das andere Teilnehmer der Bank das stört
> wenn man es verringert.

Die Treiberstärke des FPGA Pins anpassen. Kreative Variante :-)

Leider kann man die Treiberstärke nicht vom FPGA Design aus verändern, 
sondern nur beim Place&Route fix einstellen.

von Markus (Gast)


Lesenswert?

Wieso wird dadurch die Amplitudenauflösung reduziert? Es werden doch nur 
oben einige digits nicht angesteuert.

von Christoph Z. (christophz)


Lesenswert?

Markus schrieb:
> Wieso wird dadurch die Amplitudenauflösung reduziert? Es werden doch nur
> oben einige digits nicht angesteuert.

Ja, genau. Das bedeutet, dass du bei gleichbleibender Wortlänge (Durch 
den DAC am Ausgang begrenzt) nicht mehr den ganzen Bereich nutzen 
kannst. Bei kleinen Lautstärken reduzierst du so markant die genutzte 
Auflösung deines DACs.

Darum möchte man in den meisten Fällen (Solange ein analoger 
Endverstärker genutzt wird) die Lautstärkeanpassung nach dem DAC machen 
(Oder z. B. durch steuern der DAC Referenzspannung), um die verfügbare 
Schrittzahl des DAC optimal auszunutzen.

Wie gesagt, für kleine Übungsaufgaben auf einem Eval-Board ist das nicht 
relevant :-)

von Christoph Z. (christophz)


Lesenswert?

Ok Ok, ich gebe ja zu, mit einem DAC mit 32bit Wortbreite ist mein 
Meckern schon eher fehl am Platz:

http://www.akm.com/akm/en/product/datasheet1/?partno=AK4399EQ

(Da intern dann ein delta-Sigma Modulator läuft, will ich trotzdem einen 
Hörtest machen :-) )

von Sigma-Delta-Wandler (Gast)


Lesenswert?

Christoph Z. schrieb:
> (Da intern dann ein delta-Sigma Modulator läuft, will ich trotzdem einen
> Hörtest machen :-) )
Das klingt so, als ob Du diesbezüglich etwas Negatives erwartest. (?)

von Christoph Z. (christophz)


Lesenswert?

Sigma-Delta-Wandler schrieb:
> Das klingt so, als ob Du diesbezüglich etwas Negatives erwartest. (?)

Als Ingenieur will man Fakten nicht nur Datenblattwerte :-)

Nein, ich erwarte nichts negatives. Das würde ich auch als 
unprofessionell erachten (Es ist immer wieder ein Kampf mit mir selber 
sich nicht von den Erwartungen oder Vermutungen verleiten zu lassen).

von A. F. (chefdesigner)


Lesenswert?

Christoph Z. schrieb:
> Andreas F. schrieb:
>> Somit muss man alles (Amplitude, Phase, Frequenz) in einen 1-Bit-Strom
>> übersetzen.
> Die PWM macht ja genau diese Übersetzung in einen 1-Bit-Strom.
> Aber ein anderes Modulationsschema als Andreas vorgeschlagen hat:

> Andreas F. schrieb:
>> Man geht z.B. mit 10MHz raus und toggelt 1 und 0 - damit bekommt man die
>> Nulllinie. Gibt man mehr 1, als 0 aus, steigt der Mittelwert und umgekehrt.
> Diese Modulation nennt sich delta-Sigma.

So ist es. Ich hatte es nur in einfacheren Worten darstellen wollen.

von Gustl B. (-gb-)


Lesenswert?

Wo ist denn der Unterschied zwischen delta-sigma und pwm?

Beispiel:

Delta-sigma bei 50% und 1MHz: 01
Pwm bei 50% 8bits 4MHz: 00001111

Ist es wirklich alleine die Anordnung? Also dass 75% bei delta-sigma ein 
1011 und aber auch ein 0111 oder 1101 sein kann während es bei der PWM 
immer 0111 ist. Hat delta-sigma deshalb Vorteile wie dass man ein 
glätteres Signal erhält und auch keinen so großen Kondensator braucht am 
Ausgang?

Danke!

von Experte (Gast)


Lesenswert?

Gustl Buheitel schrieb:
> Geht sowas nicht mit einem Sinus-ROM und dann eine PWM?
Ganz genau.
> man noch einen Kondensator vor den Ausgang hängen.
Ist nicht unbedingt nötigt, weil der Kopfhöhrer selber einen Tiefpass 
darstellt. Bei einem heitgen FPGA bringt man die PWM mit 200 MHz raus.

von J. S. (engineer) Benutzerseite


Lesenswert?

Experte schrieb:
> Gustl Buheitel schrieb:
>> Geht sowas nicht mit einem Sinus-ROM und dann eine PWM?
> Ganz genau.
>> man noch einen Kondensator vor den Ausgang hängen.
> Ist nicht unbedingt nötigt, weil der Kopfhöhrer selber einen Tiefpass
> darstellt. Bei einem heitgen FPGA bringt man die PWM mit 200 MHz raus.

Ich würde nicht den TP im Kopfhörer verwenden, weil dies zu 
nichtlinearen Verzerrungen führt. Ausserdem werden so Tonhöhen im 
Bereich Ultraschall generiert, die der KH emitiert und die das Gehör 
belastet. Zudem wird unnötig Leistung verbraten. Sauber ist es, den KH 
nur mit audiblen Frequenzen anzusteuern, also vorher geeignet zu 
filtern.

von Rolf S. (audiorolf)


Lesenswert?

Gustl Buheitel schrieb:
> Beispiel:
>
> Delta-sigma bei 50% und 1MHz: 01
> Pwm bei 50% 8bits 4MHz: 00001111
>
> Ist es wirklich alleine die Anordnung?

Aber natürlich. Überlege mal: Die 00001111 sind doch von viel geringerer 
Frequenz und weniger gut zu filtern.

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.