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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.