Hallo, Auf meinem Entwicklungsboard ist ein Audio CODEC von Ti verbaut. Dieser soll über den LINE IN erstmal Daten einlesen können. Da er bei mir im slave Mode arbeitet , muss vom FPGA das LRCOUT und der BCLK kommen. Das LRCOUT = 1/fs bestimmt den Takt mit dem der AD Wandler arbeiten soll. LRCOUT = (1/fs) = (1/ 97,656 KHz )= 10,24µs. Der bit clk(bclk) ist 12.5MHz. Also werden 128 Bits pro Periode gesendet bzw. empfangen. Davon sind 16 Informationsbits für den Linken und 16 für den rechten. Der restlichen sind zum füllen. Das serielle Daten einlesen habe ich mir so gedacht : Wenn ich mich für den Right- justifiert Mode entscheide (Bild), dann kann ich 64 bit pro Kanal, in ein 16 Bit Register schieben. Die Füllbits „fallen vorne wieder raus“ und im Register bleiben die 16 Nutzbits. Von Dort greife ich die Bits parallel ab, während der andere Kanal gelesen wird. Das mir nicht so klar? Im Moment erzeuge ich das LRCOUT Signal selbst. Außerhalb des Protokolls gibt es das Enable Signal mit den Takt von 97.6KHz. (LRCOUT). Welches die Daten parallel weitertakten soll. Nehme ich gleich das Externe signal als LRCOUT, oder wie ich es gemacht habe .Ein internes über den Zähler generiert.und am Ausgang auf das externe syncronisiert. Ich habe keine Ahnung in welchem Format seriell gesendet wird.? Im Datenblat finde ich nichts? Schaut bitte mal den von mir geschriebenen Code an . Vielen Dank
hey, also ich hab mir das datenblatt zwar nur mal kurz angeschaut, aber steht da nicht dass der dir die daten schon seriel rausgibt (bei FEATURES)? dann müsstest du ja nix mehr serialisieren. bei deinem code in zeile 44 sollte 63 stehen und nicht 64. sonst hättest du ja 65 bit... wie bist du auf die 64 bit gekommen? pro word gibts doch max 32 bit denk ich. wenn du ein mux bastelst dann ist es glaub ich nicht sehr gut es in einem getakteten process zu machen. lieber ausserhalb durch ein "with 'signal' select <= sig1 when '0', sig2 when '1'; " oder so ähnlich. wäre auch gut wenn du über jedem process vllt ne beschreibung machst. dann weiss man was der prozess im allgemeinen macht. ausserdem versteh ich deine problematik nicht so ganz ;) ich bastel gerade auch mit dem protokoll rum... mfg Andi
oh, was hast du den für ein entwicklungsboard und was hats gekostet? :-) würde mich vllt auch interessieren. mfg
Hallo Andi Z. Das Board habe ich gebrauch für 300 Euro gekauft. >wie bist du auf die 64 bit gekommen? pro word gibts doch max 32 bit denk >ich. Für ein fs von 97.656 Khz und einen BCLK con 12.5 MHz gibt doch der codec durchgehend 48 Füllbits + 16 Datenbits pro Kanal aus. ODER? Meine Wordtbreite ist 16 Bit . Gruß DANK
Sorry für meine unvollständige Antwort, es handelt sich um ein Stratix II EP2S60 von Altera. Der Codec leifert mit doch einen Serielllen Datenstrom über DOUT (Pin I2S format serial data output from the sigma-delta stereo ADC). Diesen möchte ich paralell abgreifen können. mfg
ok, sowas in der art mach ich auch gerade. bei mir ist es allerdings so dass ein word aus 32bit besteht. also eine left-right-priode = 64 datenbits. im datenblatt steht doch aber das man max. 32 bit pro word. (bei 1.1 ) die LR-clock und die bitclock bekomme ich auch. dann lese ich den datenstrom ein und puffere es in einem ram. wenn du die parallel abgreifen willst kannst du ein bit speichern und es dann beim nächsten bit erst auslesen und auf den nächst höheren dateneingang schieben. also den ausgang wieder auf den eingang zurück führen. und immer an die selbe adresse speichern. wenn die LR-clock einen anderen zustand annimmt dann wechselst du auf die nächste adresse. so liegen deine daten dann parallel im ram und du musst nurnoch die adresse ansprechen und der wert kommt dann komplet raus. mfg Andi
Hallo Andi Z.,
ich glaub ich steh auf dem Schlauch?
Wie du die Daten paralell abgreifen würdest, hab ich noch nicht ganz
verstanden.?
> das man max. 32 bit pro word. (bei 1.1 )
Ich benutze nur 16 pro wort.
Ich verstehe das Bild right-justified so, dass 12.5 MHz / 97.656KHz
=128
Dass in einer Periode von 97.656KHz 128 Perioden von BCLK passen.
DANKE
GRUSS
Hallo Andi, Kannst Du bitte noch einmal einen Versuch starten mir das irgenwie zu erklären? Gruss
hey, mh ja stimmt. du hast ja eine feste bitclock. also das mit dem parallelisieren musst du dir schon selber überlegen wie du es letztendlich machst. was ich gerade mach ist, die samples zu parallelisieren. nicht fragen warum! :) ich hab am anfang glaub ich einen fifo verwendet weiss aber grad auch nicht mehr genau wie und was. das mit dem parallelisieren meinte ich so wie im bild. sieht auf dem bild halt scheisse aus :-D
Hi, achso, Du hattest keine Feste Bit CLK. jetzt wirds klarer. Danke Gruss
also wenn ein bit ankommt dann schreibst du es an eine adresse. dann liest du diese adresse so aus, dass der wert an den nächsten eingang gelegt wird wenn das 2. bit kommt. dann schreibst du wieder an die gleiche adresse. usw. bis alle datenbits parallel an einer adresse liegen. das kannst du dann so machen, dass du das rechte und das linke sample einliest und dann über einen adressaufruf rausliest. ich hoffe ich habs jetzt nicht so kompliziert geschrieben. ich denke sowas geht auch irgendwie anderst. mir fällt grad aber nix ein :) mfg Andi
ich hab zwar auch ne feste bitclock aber die ist nicht so hoch. die hat nur 1,5 mhz oder so. also abtastfrequenz ist 48khz. -> wordclock = 48kz. mal 32 bit pro word = 1.5.. mhz wenn ich mich nicht verrechnet hab
ich hab geschrieben:
>Ich habe keine Ahnung in welchem Format seriell gesendet wird.?
Ich weiss nicht ob die Daten im 2 er , bzw 1er komplement gesendet
werden.
mfg
Sind wir hier alleine hier im Forum?? Oder ist mein Thema so schlecht,schlicht so sch..? :) Freitags Mittags, das ist der Grund gruss
Zumindest bei dem da http://www.wolfsonmicro.com/uploads/documents/en/WM8731_Rev4.4.pdf werden die Daten im 2er-Komplement gesendet. Scheint in etwa identisch zu sein und so wie es aussieht ein Standardchip und Interface für Audio.
Hallo , durch einsatz eines Logic Analysators hab ich herausgefunden wo meine Bits beim paralellisieren landen(nicht da wo ich sie vermutet habe)und das der Codec seine Daten im 2er-Komplement liefert. Glaube ich? Was ich blos nicht verstehe. Wenn ich nur das MSB drehe bekomme ich das Eingangssignal nur invertiert. also not(not INPUT(15) & INPUT (14 downto 0)). Dann bekomme ich das richtige signal (SINUS). Gruß 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.