Forum: Analoge Elektronik und Schaltungstechnik WAV File via RS232 auf CPLD streamen und mittels Rechteckspannung ausgeben


von david (Gast)


Lesenswert?

Hallo,
ich hab mir hier schon einige Texte zur Tonerzeugung via PWM 
durchgelesen.
Trotzdem verstehe ich einiges nicht.

Ich gebe über die serielle Schnittstelle 115200 Baud die PCM Rohdaten 
eines WAV Files mit 11khz und 8 Bit Auflösung auf ein CPLD Board mit 
angeschlossenenm Lautsrecher. Das Board ist das Pollin CPLD Board.
Den RS232 Code hab ich auch hier aus dem Forum.
1
process(clk, s_rs232_dat_out)
2
  begin
3
    if rising_edge(clk) then 
4
      PWM_Accumulator  <=  ("0" & PWM_Accumulator(7 downto 0)) + ("0" &  s_rs232_dat_out);
5
    end if;
6
  end process;
7
8
9
led(8 downto 1) <= s_rs232_dat_out(7 downto 0);
10
audio_out <= PWM_Accumulator(8);

Mein Takt ist 16 Mhz. Es Funktioniert auch alles, es klingt nur sehr 
krauselig.

Ich ändere jetzt je nach dem was von der RS232 kommt, einfach die 
Frequenz auf den Lautsprecher, je nach dem wieviel ich aufaddiere.
Bei 8 Bit wave File, Auflösung 2^0 = 1 --> 62 khz   und max = 2^8 = 256 
--> 8 Mhz

So, das ist das erste was ich nicht verstehe. Was passiert genau mit dem 
Lautsprecher dass er einen Ton ausgibt obwohl der Freuquenzbreich so 
hoch ist ? Normal dürfe da ja nix mehr rauskommen.
Weil das ist ja jetzt nicht so wie bei PWM, da werden ja VERSCHIEDENE 
analoge werte generiert durch das Ti/Tp verhältnis. Aber hier ist ja das 
Verhältnis immer gleich.

Das nächste ist, wenn ich jetzt mit 11 khz streame kommt ja alle 90 ns 
ein neuer wert, den ich mit einer bestimmten Frequenz ausgeben muss. 
Jetzt muss doch die Frequenz sehr hoch sein, damit se in dem kurzem 
Zeitfenster eine paar Schwingungen fahren kann oder ?
Weil wenn ich den Takt auf 4 Mhz reduziere, dann hör ich nix mehr.
Mit dem Verfahren geb ich Töne als direkte Frquenz aus.


Was anderes ist doch PWM, hier hab ich nur eine Frequenz z.B. 200khz und 
ändere nur das Impuls Pausen verhältnis. Damit bekomme ich einen 
analogen wert, und durch die ver. Abfolgde der Werte ergibt sich ein 
Sound. Wäre das die bessere Idee ? bez. den krachenden Ton , den ich mit 
ersterem Verfahren habe.

Warum muss ich die PWM Frequenz dann mit einem Tiefpass rausfiltern, hab 
ich aus den ganzen Beitragen zum Thema nicht verstanden.


Das sind jetzt viele Fragen, sind aber alle durch das lesen der anderen 
Beiträge entstanden. Ich hoffe durch die Beantwortung schließt sich der 
Kreis auch für andere Leser.

Viele grüße david

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Zeig mal den ganzen Code...
Un die Beschaltung...

> Was passiert genau mit dem Lautsprecher dass er einen Ton ausgibt obwohl
> der Freuquenzbreich so hoch ist? Normal dürfe da ja nix mehr rauskommen.
Ich tippe, du hast eine asymmetrische Lautsprecherankopplung, so dass du 
eine Art PWM wegen einer längeren Aus- bzw. Einschwingdauer der 
Lautsprechermembran hast. Hört sich sicher urig an...  :-o

> wenn ich jetzt mit 11 khz streame kommt ja alle 90 ns ein neuer wert
Das solltest du aber nochmal nachrechnen... :-/

von Andy M. (andz)


Lesenswert?

Des geht so ned...

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.