Hallo Leute, ich habe ein großes Verständnisproblem und hoffe Ihr könnt mir weiterhelfen. Was soll Passieren: Ein Audio CODEC tastet mit 96Khz im Sprachband ab. Die Abtastfrequenz soll verdoppelt werden, also auf dem FPGA Interpolieren. Ich möchte mit einem Muxer mit doppeltem Takt immer eine Null dazwischen einfügen. Der CODEC liefert Seriell(I2S) 16 Bit für den rechten Kanal danach 16 Bit für den linken. BCLK ist 12,5 Mhz. Also ist für den Rechten Kanal alle 2,56 µs ein neuer Wert parallel abzugreifen. Das ist eine Frequenz von 390.625Khz. Mein Problem: Vor der Interpolation 1 x Fs, danach 2 x Fs. Die Daten kommen mit 390Khz. Meine Abtastfrequenz ist doch 96 Khz. Mit welcher Frequenz muss jetzt der Muxer laufen? Wo sind den 96Khz in den 390Khz versteckt? Wenn ich mir das Signal nach der Interpolation auf dem Oszi anschaue , hat es immer noch die 96 Khz? Ob mit Fs = 390Khz oder 96 Khz beides liefert mit keine Abtastfrequenzerhöhung. Ich verstehe es nicht? Ich Bitte um Eure Hilfe. DANKE Gruß Raptor 23
Kurzer Nachtrag. Bei dem CODEC handelt es sich um den tlv320aic23b. Das Datenblatt ist im Anhang zu finden. Ich Danke Raptor23
Hallo, im i2s-Mode (Abschnitt 3.3.1.3 I2S Mode) werden nach dem LSB noch Füllbits eingefügt. Der Codec kann nur 96 kHz, ich weiß nicht wie du auf 390.625Khz. kommst. Du müsstest etwas mehr über dein System verraten. Z.B. wo gehen die interpolierten Daten hin? Allein durch einfügen von Nullen erhälst du keine Interpolation, dazu brauchst du noch ein entsprechendes Filter. Tom
Hallo Tom, nach 3 Stunden Schlaf sehe ich erst, was ich geschrieben habe. Oh, Sorry, da ist nein Fehler drin. Ich benutzte den 3.3.1.2 Left-Justified Mode Das LRCOUT schalte ich direkt nach der fallenden Flanke des LSB. Also genau wenn 16 Bit seriell eingelesen sind. Wie ich auf die 390.625Khz komme: Deine Frage, nach der Frequenz, klingt für mich schon gut. Mein Gedanke war: BCLK Die Bits lese ich seriell in zwei 16 Bit Register ein: SIGNAL left,right : STD_LOGIC_VECTOR (15 downto 0); Also wird zuerst left gefüllt. Mit fallender Flanke von LRCOUT , das right Register. Dann hab ich mir gedacht . Das Register left ist nach 16 Takten (12.5Mhz) gefüllt, der Wert ist jetzt Parallel abrufbereit. Genau 16 Takte lang . In der Zeit wird das right Register gefüllt, danach wieder das left Register. Also dachte ich, der 16 Bit Wert in den Registern ist alle 32 Takte neu. 12.5 Mhz/ 32 = 390.625 Khz. Du müsstest etwas mehr über dein System verraten. Z.B. wo gehen die interpolierten Daten hin? Allein durch einfügen von Nullen erhälst du keine Interpolation, dazu brauchst du noch ein entsprechendes Filter. -------------------------------------------------------- Du hast recht, nach der Interpolation kommt ein Halbbandfilter. Sorry , hab ich vergessen zu schreiben . Das ganze soll dann x mal durchgeführt werden, um das Signal über Antenne ausgeben zu können. VIELEN DANK GRUSS RAPTOR23
Raptor23 schrieb: > Hallo Tom, > > > nach 3 Stunden Schlaf sehe ich erst, was ich geschrieben habe. > > Oh, Sorry, da ist nein Fehler drin. > > Ich benutzte den 3.3.1.2 Left-Justified Mode > > Das LRCOUT schalte ich direkt nach der fallenden Flanke des LSB. > Also genau wenn 16 Bit seriell eingelesen sind. Laut Datenblatt muss die Periodendauer von LRCOUT 1/fs sein, also 130 Takte bei BCLK = 12.5 MHz. Oder sehe ich das falsch. Auch in diesem Mode gibt es Füllbits. > Dann hab ich mir gedacht . > Das Register left ist nach 16 Takten (12.5Mhz) gefüllt, der Wert ist > jetzt Parallel abrufbereit. > Genau 16 Takte lang . In der Zeit wird das right Register gefüllt, > danach wieder das left Register. > Also dachte ich, der 16 Bit Wert in den Registern ist alle 32 Takte neu. > 12.5 Mhz/ 32 = 390.625 Khz. Der Codec kann aber nur 96 kHz. Ich denke, du schaltest LRCOUT zu oft um. > > Du müsstest etwas mehr über dein System verraten. Z.B. wo gehen die > interpolierten Daten hin? > > Allein durch einfügen von Nullen erhälst du keine Interpolation, dazu > brauchst du noch ein entsprechendes Filter. > > -------------------------------------------------------- > Du hast recht, nach der Interpolation kommt ein Halbbandfilter. > Sorry , hab ich vergessen zu schreiben . > > > Das ganze soll dann x mal durchgeführt werden, um das Signal über > Antenne ausgeben zu können. Was heißt x mal, x mal Upsampling, bis die Wortbreite bei 1 ist? Oder, die Daten gehen nach dem Filter an einen DAC, Verstärker und dann zur Antenne? Tom
Hallo TOM, Sorry dass Du mir alles aus der Nase ziehen musst. Mit Deiner 2 ten Vermutung liegst Du richtig: die Daten gehen nach dem Filter an einen DAC, Verstärker und dann zur Antenne: Neeiin, ich meine Ja. Jetzt wird es Tag. Ich habe mich so mit dem Thema verrückt gemacht, dass ich nicht mehr klar denken konnte. Ich Danke für Deine Hilfe. Viele Grüße Raptor23
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.