Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob

PSoC 6 I2S Feature

PSoC 6 I2S Feature

Anonymous
Not applicable

Hello,

 

Here is an update on the PSoC 6 I2S feature we have.

PSoC 6 has one I2S hardware block able to produce/receive digital audio streaming data to/from external I2S devices, such as audio codecs, microphones or simple DACs. The frames generated by the IP can be configured to generate data word length of 8-bit/16-bit/18-bit/20-bit/24-bit/32-bit per channel. The channel length is also configurable. The hardware IP provides two hardware FIFO buffers, one each for the Tx block and Rx block. Any writes and reads to/from the FIFOs can be handled by DMAs or CPU.

 

The overall I2S block diagram it shows below.

P6 I2S.jpg

 

Feel free to leave comments and ask questions, we appreciate the feedback!

1254 Views
Comments
Anonymous
Not applicable

Probably useful for making Software defined radios.

Panometric
Level 5
Level 5
100 sign-ins 100 replies posted 10 solutions authored

It would be useful to have various fifo ordering arrangements, especially for multi-channel.  For example, on PSoC5, 8 channel audio to usb requires convoluted reordering. But if the I2S fifo just had an option to order the channel data the same way USB does, DMA could drive straight through with no modification.

Anonymous
Not applicable

Could I ask what is the maximum I2S clock frequency supported by this block?

srnu_276571
Level 5
Level 5
25 replies posted 10 replies posted 5 replies posted

Hi,

The I2S interface supports master and slave modes with word clock rates of up to 192 ksps (8-bit to 32-bit words); equivalent to a maximum of 12.288 MHz bit clock with a 32-bit word.

Cheers.

srnu_276571
Level 5
Level 5
25 replies posted 10 replies posted 5 replies posted

Hi MikeMitchell​,

Thank you for your suggestion. The I2S block in PSoC 6 supports only one stereo channel. Having said that, you can still create multi-channel audio applications using I2S blocks built using UDBs. These are akin to PSoC 5LP UDB based I2S blocks and have independent FIFO buffers. I will pass your suggestion to the component development team for streamlining the FIFO buffers.

The audio sub-system in PSoC 6 natively supports TDM mode for up to 8 channels and 48 ksps word clock. If the codec used can support TDM mode, this is the suggested and recommended mode for multi-channel audio.

Cheers.

SimonN_76
Employee
Employee
First like given

Hi,

what is the current Master/Slave setup for the different I2S blocks (UDB and non-UDB based)?

Cheers,

     Simon

RodolfoGL
Employee
Employee
250 solutions authored 250 sign-ins 5 comments on KBA

Simon,

Currently we support only I2S Fixed Function (non-UDB based) for PSoC 6. Master and slave are supported.

Regards,
Rodolfo Lossio

DaEr_349131
Level 5
Level 5
25 likes received 50 sign-ins 5 comments on KBA

Hi, any news on this? need 4channels of i2s and of course prefer to do it in the hard block (to save UDB resources).

In case this is impossible, when can we expect I2S via UDB to be ready and how much resources will be needed?

RodolfoGL
Employee
Employee
250 solutions authored 250 sign-ins 5 comments on KBA

Hi,

You can use the TDM Interface (same hardware block) to stream 4 channels of PCM data. Would that work?

Or do you need two independent I2S interfaces streaming 2 channels each? Note that the I2S interface is only able to stream 2 channels.

DaEr_349131
Level 5
Level 5
25 likes received 50 sign-ins 5 comments on KBA

Hi,

That sounds great. I need 4 channels on the same I2S interface,

i.e. psoc6 -> i2s.tx -> codec hp-left + hp-right + spkr-left + spkr-right

you mention that it's possible using the hardware block (non udb), but you also mention that it's only able to stream 2 ch (not 4ch ??)

RodolfoGL
Employee
Employee
250 solutions authored 250 sign-ins 5 comments on KBA

Sorry for the confusion.

The TDM and I2S shares the same hardware block. You can't have both. You need to choose which interface you want to use.

With TDM, you can stream up to 8 PCM data.

With I2S, you can stream up to 2 PCM data (left and right).

Refer to the I2S/TDM datasheet.

http://www.cypress.com/file/377731/download

DaEr_349131
Level 5
Level 5
25 likes received 50 sign-ins 5 comments on KBA

Thanks for clarifying, in my world TDM is "multi-channel I2S"

Please help confirm TDM is possible on the new PSoC 62-series.

RodolfoGL
Employee
Employee
250 solutions authored 250 sign-ins 5 comments on KBA

Yes, it is.

DaEr_349131
Level 5
Level 5
25 likes received 50 sign-ins 5 comments on KBA

I have a few audio IC's that doesn't support TDM I'm afraid...

How about this idea? see picture below?

- Use this ghetto setup? doable?

Untitled.png

Another option would be to do a bit of verilog to mux and split up the bit & frame clocks to individual outputs (if possible to route the i2s like that in the fabric)

RodolfoGL
Employee
Employee
250 solutions authored 250 sign-ins 5 comments on KBA

Hi,

This probably will work. If it doesn't, it might be related to the setup/hold time on the rising/falling edge. You might want to delay the clock signal as well.