GPIO pinbelegung für I2S auf Cyclone V HPS

OP #7581411
Lesenswert?

Hallo,

Ich habe mir kürzlich das DE10 nano board von Terasic zugelegt, nun würde ich darüber gerne den audio DAC pcm5102 via I2s ansteuern, ähnlich wie es für den Raspberry Pi 4 hier gezeigt wird: https://bytesnbits.co.uk/raspberry-pi-i2s-sound-output/

Ich habe mir die Datenblatt bzw. Handbuch für das board angeschaut, finde da aber keine detailierten Informationen zur Pinbelegung wie etwa alternate functions...

Ich habe auch das Cyclone V Hard Processor System Technical Reference Manual ausfindig gemacht https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/cyclone-v/cv_5v4.pdf, da steht aber auch nichts näheres drin...

Angehängte Dateien:
#7581429
Lesenswert?

Auf den 2x40 Pin Leisten sind nur FPGA Pins. Allgemein gibt es auf dem Board sehr wenig HPS Pins.

Schau dir Mal den LTC Stecker an. Da ist zumindest I2C/SPI drauf ob man da auch welche für I2S nehmen kann.

Edit: in Richtung HDMI scheint es auch zu gehen lt. Datenblatt. Evtl aber über einen I2S IP Core im FPGA. Musst du schauen. Wenn dem so ist musst du im Plattform Designer den I2C Core inszenieren und generieren. Anschließend im Top Level verbinden. Die Pins zuweisen. Und im Device Tree den I2S Treiber einhängen.

Edit2: Bei HDMI ist es lt. Schematic Pin T13. Jetzt musst du nur noch schauen ob das ein FPGA Pin ist. Vorteil an einem IP Core wäre dass du so ziemlich jeden Pin verwenden kannst. Nachteil ist der Aufwand bis es läuft.

OP #7581466
Lesenswert?

N. M. schrieb:

Edit: in Richtung HDMI scheint es auch zu gehen lt. Datenblatt. Evtl aber über einen I2S IP Core im FPGA. Musst du schauen. Wenn dem so ist musst du im Plattform Designer den I2C Core inszenieren und generieren. Anschließend im Top Level verbinden. Die Pins zuweisen. Und im Device Tree den I2S Treiber einhängen.

Werde ich mal ausprobieren - hoffte aber eigentlich es ginge einfacher und ich könnte so wie mit dem raspberry den I2S baustein pcm5102 testen...

Eigentlich würde ich die pins gerne losgelöst von HDMI verwenden.

Und mir stellt sich immer noch die andere Frage, wo ich eigentlich ein minimales Board mit Cyclone V und HPS finde das für die Production taugt?

#7581557
Lesenswert?

Sven W. schrieb:

hoffte aber eigentlich es ginge einfacher

Kann schon sein dass es einfacher geht. Müsste man halt im DB des SoC nachschauen. Meine Idee war ja nur zu schauen wie sie es beim HDMI gemacht haben um dort abzuschauen.

Sven W. schrieb:

ich könnte so wie mit dem raspberry den I2S baustein pcm5102 testen

Warum willst du dann überhaupt einen SoC? Nimm doch einfach den Raspi. Ist schneller, hat mehr Speicher und ist günstiger.

Sven W. schrieb:

Eigentlich würde ich die pins gerne losgelöst von HDMI verwenden.

Wie gesagt hat es nichts mit HDMI zu tun. Es dient nur als Beispiel weil es dort Beispiele für I2S bei diesem Board gibt.

Sven W. schrieb:

Und mir stellt sich immer noch die andere Frage, wo ich eigentlich ein minimales Board mit Cyclone V und HPS finde das für die Production taugt?

Was ist für dich minimalistisch? Arg viel kannst du bei dem DE10Nano nicht weglassen. Beschleunigungssensor, ADC, paar Buttons/Switches/LEDs, den USB Blaster und ein paar Stecker. Den Rest wirst du brauchen. Ähnliches wie das DE10 Nano gibt es auch noch als SoM. Aber das hat auch mehr Speicher usw.

OP #7582256
Lesenswert?

N. M. schrieb:

Edit: in Richtung HDMI scheint es auch zu gehen lt. Datenblatt. Evtl aber über einen I2S IP Core im FPGA. Musst du schauen. Wenn dem so ist musst du im Plattform Designer den I2C Core inszenieren und generieren. Anschließend im Top Level verbinden. Die Pins zuweisen. Und im Device Tree den I2S Treiber einhängen.

Gerade mal im Plattform Designer geschaut - I2S hardware wird merkwürdiger Weise nicht angeboten / unterstützt. Vielleicht fehlen mir aber auch einfach noch andere IP-Kataloge.

Insgesamt habe ich den Eindruck, das Audio bei den Boards eher stiefmütterlich behandelt wird. Ich gestehe ja, dass es nicht der typische Anwendungsbereich ist - so wird es allerdings auch nicht besser. Ich muss für HDMI erst noch nen splitter dazwischen schleifen. für line out. An line in oder Micro ist schon gar nicht zu denken - schade!

Warum willst du dann überhaupt einen SoC? Nimm doch einfach den Raspi. Ist schneller, hat mehr Speicher und ist günstiger.

Warum ich den SoC will? Ich möchte die Hardware nutzen um einen Synthesizer zu bauen, mit den FPGA Ressourcen für den Signalweg. Und darüber hinaus ein bisschen HDL (genauer Verilog) und Simulation zu lernen.

#7582294
Lesenswert?

Sven W. schrieb:

Insgesamt habe ich den Eindruck, das Audio bei den Boards eher stiefmütterlich behandelt wird.

Hä? Wie kommst du auf so eine Aussage? Du kannst an das Teil so viele I2S Kanäle anhängen bis dir die Pins ausgehen. Also mindestens 15-20 Stück.

Sven W. schrieb:

Gerade mal im Plattform Designer geschaut - I2S hardware wird merkwürdiger Weise nicht angeboten / unterstützt.

Hast du mittlerweile Mal nachgeschaut wie sie es in den Beispielprojekten machen?

Sven W. schrieb:

Ich möchte die Hardware nutzen um einen Synthesizer zu bauen, mit den FPGA Ressourcen für den Signalweg.

Irgendwie passt diese Aussage nur bedingt zu deiner im Eingangspost geschriebene Aussage. Bei dem Raspi Beispiel von dir geht das I2S Signal halt direkt durch die Peripherie über den Kernel in dein Userspace Programm. Also alles im Hardcore (gibt ja kein FPGA Teil).

Wenn du beim DE10 nun den FPGA im SoC verwenden möchtest für evtl Signalverarbeitung o.ä. dann kann das ja nicht gleich sein wie beim Raspi. Die Vorbereitung usw. ist ja dann alles im FPGA (Parallelität, Performance,...). Aber wie Andreas geschrieben hat: I2S selbst ist ja nicht all zu aufwändig und kann man leicht selbst machen. Der Sport kommt dann allerdings wenn du dann eigene Kernel Treiber schreiben willst da es für deine Custom Logik keinen gibt.

Sven W. schrieb:

Und darüber hinaus ein bisschen HDL (genauer Verilog) und Simulation zu lernen.

Das ist natürlich ein guter Anwendungsfall. Da gehört aber dann schon bisschen was dazu. Eine Möglichkeit über einen fertigen IP-Core hab ich oben grob angerissen. Über eine Custom Logik musst du dir dann halt noch die Wishbone Interfaces anschauen/implementieren. Eigener Kernel Treiber wäre dann wahrscheinlich der schöne Weg. Über User Space und pufferung im FPGA sollte man aber auch gut an die Daten kommen.

OP #7585260
Lesenswert?

Changed my mind again and found this little gem - the go board from nandland https://nandland.com/the-go-board/, together with pmod i2s2 interface from digilent https://shop.trenz-electronic.de/de/29035-Pmod-I2S2-Stereo-Audioeingang-und-ausgang . Instead of altera / intel it has a lattice fpga the ice40, of course less cells and not a Hard-Processor-System, besides - but I really dont need this, it is easier without.

PS: Sorry for the english, its just easier for me and by the way, I am still searching for an english speaking alternative to this forum, any ideas welcome!

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