Hi everyone,
I am currently trying to upgrade a project previously based on an XS1 microcontroller to an xCore-200 XE216 device.
My project uses two 8-channels I2S driver, one on each tile of the XS1.
I unfortunately realized that the XE216 has much less 1*bit port on tile 1 (only 9 of them) because of the ethernet dedicated pins. The I2S driver requires at least 11 ports (3 clocks + 8 data lines) so it does not fit on the tile.
I still have lots of 4*bits ports unused, would it be possible to use them fot he I2S ? For example 1 port for the 4 input lines and another one for the 4 output lines ? I looked at the library source code and it seems to require lots of modifications…
Maybe I is possible to “disable” the Ethernet pins (not used on this project) and use them as a 1*bit port ?
Thanks in advance for your answers.
I2S using 4*bits port on xCore-200
-
- Member
- Posts: 11
- Joined: Tue Mar 03, 2015 10:57 am
-
- Member++
- Posts: 24
- Joined: Thu Aug 14, 2014 10:55 am
>> Maybe I is possible to “disable” the Ethernet pins (not used on this project) and use them as a 1*bit port ?
I guess it is possible to disable the Ethernet RGMII pins and use it as general ports.
A quick look at XE216 datasheet shows that there is a processor status configuration register called 'xCORE tile control' whose 8th bit could enable/disable those Ethernet RGMII ports.
https://www.xmos.com/download/private/X ... t(1.0).pdf
May be try the following code:
#include <xs1.h>
void disable_ethernet_ports()
{
unsigned reg_value;
reg_value = getps(XS1_PS_XCORE_CTRL0)
reg_value &= (~(0x01 << 8));
//reg_value |= (0x01 << 8);
setps(XS1_PS_XCORE_CTRL0, reg_value);
}
I haven't tested the code, but let me know how it goes!
Meanwhile, I am not sure on whether to set the bit to 0 or 1 to disable the ethernet ports, so you can try out both and see.
Hope it helps!
Cheers,
Krishna
I guess it is possible to disable the Ethernet RGMII pins and use it as general ports.
A quick look at XE216 datasheet shows that there is a processor status configuration register called 'xCORE tile control' whose 8th bit could enable/disable those Ethernet RGMII ports.
https://www.xmos.com/download/private/X ... t(1.0).pdf
May be try the following code:
#include <xs1.h>
void disable_ethernet_ports()
{
unsigned reg_value;
reg_value = getps(XS1_PS_XCORE_CTRL0)
reg_value &= (~(0x01 << 8));
//reg_value |= (0x01 << 8);
setps(XS1_PS_XCORE_CTRL0, reg_value);
}
I haven't tested the code, but let me know how it goes!
Meanwhile, I am not sure on whether to set the bit to 0 or 1 to disable the ethernet ports, so you can try out both and see.
Hope it helps!
Cheers,
Krishna
-
- XCore Addict
- Posts: 158
- Joined: Thu Mar 20, 2014 8:04 am
Hi,
The i2s library has a tdm flavor available.
Is there any scope that fits into your design (may save few i/os)?
General purpose series of the xCORE200 chips do not need to ve Ethernet disabled and may be useful for your scenario. If you ve not already checked this, some link below:
http://www.xmos.com/products/silicon/xc ... /xl-series
The i2s library has a tdm flavor available.
Is there any scope that fits into your design (may save few i/os)?
General purpose series of the xCORE200 chips do not need to ve Ethernet disabled and may be useful for your scenario. If you ve not already checked this, some link below:
http://www.xmos.com/products/silicon/xc ... /xl-series
-
- Member
- Posts: 11
- Joined: Tue Mar 03, 2015 10:57 am
Hi,
Thanks for the answer. Yes we have checked the general purpose version of the XE216, it would have been the perfect solution but unfortunately we have already place our order for XE216.
I thought using TDM was a good solution until I realized that the TDM slave was not developed yet in the library.
So I will have to choose between developing the TDM slave myself or modifying the I2S library in order to use a 4-bits port.
Any comment, help on this subject is welcome.
Thanks for the answer. Yes we have checked the general purpose version of the XE216, it would have been the perfect solution but unfortunately we have already place our order for XE216.
I thought using TDM was a good solution until I realized that the TDM slave was not developed yet in the library.
So I will have to choose between developing the TDM slave myself or modifying the I2S library in order to use a 4-bits port.
Any comment, help on this subject is welcome.