FPGA Spartan 3A Audio Ausgang

Gast #1491326
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
Gast #1491360
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
Gast #1491834
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.
Gast #3440789
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.
#3442062
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.
#3442070
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.
#3443336
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 :-)
Gast #3465674
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.
#3465833
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!
Persönliche Seite #3576287
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren