- Subscribe to RSS Feed
- Mark as New
- Mark as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
PSoC 6 I2S Feature
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.
Feel free to leave comments and ask questions, we appreciate the feedback!
- Subscribe to RSS Feed
- Mark Article as New
- Mark Article as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
Probably useful for making Software defined radios.
- Subscribe to RSS Feed
- Mark Article as New
- Mark Article as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
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.
- Subscribe to RSS Feed
- Mark Article as New
- Mark Article as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
Could I ask what is the maximum I2S clock frequency supported by this block?

- Subscribe to RSS Feed
- Mark Article as New
- Mark Article as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
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.

- Subscribe to RSS Feed
- Mark Article as New
- Mark Article as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
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.

- Subscribe to RSS Feed
- Mark Article as New
- Mark Article as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
Hi,
what is the current Master/Slave setup for the different I2S blocks (UDB and non-UDB based)?
Cheers,
Simon

- Subscribe to RSS Feed
- Mark Article as New
- Mark Article as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
Simon,
Currently we support only I2S Fixed Function (non-UDB based) for PSoC 6. Master and slave are supported.
Regards,
Rodolfo Lossio

- Subscribe to RSS Feed
- Mark Article as New
- Mark Article as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
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?

- Subscribe to RSS Feed
- Mark Article as New
- Mark Article as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
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.

- Subscribe to RSS Feed
- Mark Article as New
- Mark Article as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
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 ??)

- Subscribe to RSS Feed
- Mark Article as New
- Mark Article as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
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.

- Subscribe to RSS Feed
- Mark Article as New
- Mark Article as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
Thanks for clarifying, in my world TDM is "multi-channel I2S"
Please help confirm TDM is possible on the new PSoC 62-series.

- Subscribe to RSS Feed
- Mark Article as New
- Mark Article as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
Yes, it is.

- Subscribe to RSS Feed
- Mark Article as New
- Mark Article as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
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?
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)

- Subscribe to RSS Feed
- Mark Article as New
- Mark Article as Read
- Bookmark
- Subscribe
- Printer Friendly Page
- Report Inappropriate Content
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.
-
This widget could not be displayed.Anonymous