I2S nach"TheMason" in Betrieb nehmen

#1496714
Lesenswert?

Hallo ,
ich möchte den CODEC  TLV320aic23b auf meinem Altera Board als slave 
betrieben.

Bin allerdings Anfänger in Sachen VHDL und co.
Hab Beiträge im Forum und auf der Seite von Lothar Miller gelesen. 
(SUPER)
Dabei bin auf den Beitrag „Audio-DSP mit Spartan 3-FPGA“ von „TheMason“ 
gestoßen.(TOP)
Würde gerne den Code „I2S_SHIFTER_2x_SLAVE.VHDL „ zum lernen und 
verstehen verwenden.
Dazu wollte ich ihn erstmal zum laufen bringen.
Zum initialisieren hab ich den Code selbst geschrieben.
(:Ein großer schritt für mich aber die Menschheit interessiert es nich 
:)
Das I2S interface wollte ich am Anfang von „TheMason“ übernehmen (darf 
ich ?).
In meinem Projekt benutze ich 12 und 14 Bit Vektoren .
Der Codec unterstützt 16,20,24 und 32 Bit Wortbreite.
Also hab ich die Vektoren und Integer von 23 auf 15  abgeändert.
Den Clock Namen von 50MHz auf 100 MHz umbenannt.
Muss ich da noch was berücksichtigen?
Durch die Flankenabfrage von bclk und lrclk (bei mir 96KHz) wird ja das 
ganze dann gesteuert. (richtig ?)

Für was ist denn das Ausgangsignal „new_sample“ gut?

Würde mich gerne noch viel länger mit dem Teil befassen, bin aber gerade 
im Lernstress.
Mache gerade meine Fachhochschulreife in einem Jahr, um danach studieren 
zu dürfen.

Es lässt mich aber nicht in ruhe bis es einmal gelaufen ist.

Wenn ich zur Inbetriebnahme noch im VHDL Code was ändern müsste, BITTE 
ich Euch mir zu helfen.


Dank und Gruß

Thorsten
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #1496886
Lesenswert?

> Bin allerdings Anfänger in Sachen VHDL und co.
Das war jeder mal...

> Hab Beiträge im Forum und auf der Seite von Lothar Miller gelesen.
> (SUPER)
Besten Dank für das Lob ;-)

> Würde gerne den Code I2S_SHIFTER_2x_SLAVE.VHDL zum lernen und
> verstehen verwenden.
Das Pflichtprogramm eines Anfängers (das "Hello World" der Hardware, ein 
Lauflicht auf 10 verschiedene Arten) hast du aber schon absolviert und 
verstanden? Und zwar incl. Simulation und RTL-Analyse? Sonst könnte die 
Lernkurve unerwartet steil werden   :-o
Persönliche Seite #1496978
Lesenswert?

Hallo Markus,

freut mich das dir die I2S Komponente gefällt. Diese darfst du für dein 
Projekt verwenden. Hoffe dahingehend auf Feedback wie es läuft bzw die 
Anbindung geklappt hat.
Zu deinen Fragen. Von 50 auf 100MHz zu gehen stellt bzw sollte kein 
Problem sein, da BCLK ja ohnehin an die Clock-Domäne angepasst 
(einsynchronisiert) wird. In meinem Projekt läuft die System-Clock 
momentan mit 83MHz und macht keinerlei Probleme. Die Anpassung der Länge 
kann u.u. etwas Problematischer sein. Dazu müsste dann evtl die 
Statemachine angepasst werden (ich weiß gerade nicht aus dem Kopf heraus 
ob I2S left oder right-aligned ist). Müsste aber machbar sein. Ohne 
anpassung würd ich einfach 24 Bit I2S-Länge im Codec einstellen (ich 
selbst benutze meine ich eh nur 20) und den 24-bit Vektor entsprechend 
auffüllen. Hat den Angenehmen nebeneffekt das man noch Dynamikreserven 
hat. Das Signal new_sample ist 1 System-Clock breit und zeigt an das der 
I2S_SHIFTER_2x_SLAVE zwei neue Stereo-Samples empfangen hat und dieses 
an sample_1_out bis sample_4_out anliegt. Gleichzeitig sind die an 
sample_1_in bis sample_4_in anliegenden Samples in die internen Register 
übernommen worden und werden mit den nächsten 64 BCLK's rausgeclockt.

Um einfach erstmal testen zu können lässt sich beispielsweise in einer 
Top-Level-Entity sample_x_out mit sample_x_in verbinden. Um dann noch 
ein bissl spielen zu können kann man die Verbindung unterbrechen (Mute) 
oder um ein paar bit nach links oder rechts schieben 
(Lautstärkeveränderung in 6dB schritten). So habe ich die Komponente 
damals getestet. Funktionierte auch auf anhieb :-)

Im übrigen bin ich nicht der Entwickler des I2S Protokolls sondern habe 
lediglich die I2S_Shifter Komponente geschrieben. Aber danke für die 
Blumen :-)

@Jürgen

>Was ist denn "theMason"?

Wohl eher "wer" ist "theMason". Und ich hoffe die Frage damit 
beantworten zu können :-))
Persönliche Seite #1501833
Lesenswert?

@markus

freut mich das du das i2s interface zum laufen gebracht hast.

zur frage max. wiedergabefrequenz ...

ich hab nicht ins datenblatt geguckt. üblicherweise ist die max. 
wiedergabefrequenz 0.45 oder 0.4 * samplefrequenz. und bei 96khz wären 
das 38,4khz (0.4) oder 43.2khz (0.45).
was soll daran nicht stimmen können ? immerhin nimmt man ja eine höhere 
abtastrate um auch noch die hohen frequenzen einigermaßen akkurat 
wiedergeben zu können. somit kann man einen kurvenzug mit 20khz mit 4 
punkten statt mit 2 punkten wiedergeben. warum sollte das zu hoch sein 
(mal abgesehen davon das 48khz nicht stimmt da es nicht 0.5*fs sondern 
eben 0.4 bzw 0.45*fs ist.

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