Forum: FPGA, VHDL & Co. Audio Codec WM8731 - kaputt?


von Ralph N. (ralph)


Lesenswert?

Moinsen!
Erstmal "kurz" etwas darüber, was ich eigentlich vorhabe,....
Ich hab das DE2 Education Board von Altera hier aufm Tisch liegen. Auf 
dem FPGA ist der NiosII synthetisiert. Zusätzlich habe ich mitlerweile 
eine kleine Bridge (in VHDL) gebastelt I2S -> 24 Bit parallel bzw 24Bit 
parallel -> I2S. Diese hält sich an den I2S Modus des auf dem Board 
verbauten Audio Codecs WM8731 und generiert Interrupts wenn 24Bit 
abgeholt werden können bzw wenn neue Daten angelegt werden können. Der 
Codec wird im Master Mode betrieben und generiert mir den Bittakt und 
die beiden links-rechts-Takte (diese Takte werden auch tatsächlich 
erzeugt, dies teste ich mit LEDs, die geschaltet werden, wenn die Takte 
vorhanden sind...). Den Codec programmier ich über I2C. Für diesen Zweck 
hab ich mir ein kleines I2C Modul geschrieben (auch in VHDL), welches 
zur Zeit noch recht unflexibel ist, da es stumpf Daten aus einem 
Registerfile auf den I2C Bus schiebt. Dabei zähle ich die ACKs des 
Codecs mit und gebe den Wert für Debugzwecke auf LEDs aus. Ergebnis: I2C 
läuft...

Sooo, nun das Problem:
Der Codec scheint der Bridge nur Müll seriell vor die Füße zu werfen. 
Ich vermute, dass die Bridge ausschließlich die beiden (seriellen) 
Datenworte 0xFFFFFF und 0x000000 erhält, da meine Bridge bur diese 
beiden Datenworte ausgibt....Ich habe die Bridge ausgiebig mit ner 
Testbench in ModelSim und synthetisiert auf dem FPGA mit Handtakt 
getestet. Eigentlich funktioniert die. Kein Plan mehr woran es liegen 
könnte.... Das geile ist, dass ich Töne in der Software, die auf dem 
NiosII läuft, generieren kann (so Randomwerte, die ich dann einfach 
toggel und mit der Bridge auf I2S rausschiebe). Hatte erst gedacht, dass 
die schieberegister in der Bridge evt nicht auf den rel. hohen Takt 
klarkommen, aber rausschieben funktioniert ja  ; /

Hat jemand schonmal ein ähnliches Problem mit nem AudioCodec gehabt? Ich 
vermute fast, dass der Codec hin ist, oder das ich zu dumm bin, um die 
Register des Codecs ordentlich zu beschreiben....

Greetz

von Ralph N. (ralph)


Lesenswert?

Das Problem ist vom Tisch, habs grade hinbekommen ; D

...

von Rick Dangerus (Gast)


Lesenswert?

Vielleicht kannst Du noch einen Tipp geben, damit andere evtl. ein 
kürzere Fehlersuche haben? Meistens stolpern ja alle über ähnliche 
Probleme (zumindest am Anfang).

Rick

von xeniter (Gast)


Lesenswert?

Wird zwar jetzt nicht zu deinen Problem passen, aber bei den Codec muss 
man aufpassen da er nur ein Write only I2C device ist. Daher gibt er nur 
ein ACK wenn man das R/W Bit auf schreiben gesetzt hat und es lassen 
sich natürlich auch keine Register auslesen.

Zur Verwirrung steht leider in der schematic vom altera DE1 board extra 
eine Read Adresse dabei, welche theoretisch richtig wäre aber nichts 
bringt.

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.