Forum: Mikrocontroller und Digitale Elektronik GPIO pinbelegung für I2S auf Cyclone V HPS


von Sven W. (wehrend)


Angehängte Dateien:

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...

von N. M. (mani)


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.

: Bearbeitet durch User
von Sven W. (wehrend)


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?

von N. M. (mani)


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.

von Sven W. (wehrend)


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.

von Andreas M. (amesser)


Lesenswert?

Wenn Du den Synth im FPGA machen willst, warum baust Du Dir dann nicht 
einfach einen I2S Core selbst zusammen. Das ist doch nun wirklich 
Spielkram und so kannst den Synth direkt anbinden ohne irgendwelche 
Umwege oder unnötige Interfaces.

Fertig mit Wishbone hier:

https://opencores.org/projects/i2s_interface

von N. M. (mani)


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.

von Sven W. (wehrend)


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!

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.