mikrocontroller.net

Forum: FPGA, VHDL & Co. Mit welcher Frequenz muss jetzt der Muxer laufen?


Autor: Raptor23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Raptor23 (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Kurzer Nachtrag.

Bei dem CODEC handelt es sich um den tlv320aic23b.
Das Datenblatt ist im Anhang zu finden.

Ich Danke

Raptor23

Autor: Thomas Reinemann (Firma: abaxor engineering) (abaxor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Raptor23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Thomas Reinemann (Firma: abaxor engineering) (abaxor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Raptor23 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.