LDSP - audio optimised i.MX 8M Plus QuadLite

Today I've been working on a new DSP board that should allow for some really interesting new projects.
I have exposed the maximum audio and clocking I/O available on the i.MX 8M Plus QuadLite MCU - currently $38.
Target is low latency Linux kernel with custom kernel/linux DTS overlay config and an app to configure the audio I/O.

1674851377720.png

i.MX 8M Plus QuadLite "MIMX8ML4"
4 x 1.8Ghz Corext A53
6GB LPDDR4
1 x MicroSD card slot
1 x mini pcie slot for wifi / bluetooth
1 x Ethernet with AVB,1588
1 x Ethernet with AVB,1588, TSN
13 x I2S interfaces (26 ch in/out) - 8ch DS512 supported on some pins.
Header for upto 4 master clock Inputs
S/PDIF Tx & Rx
32 channel ASRC with an insane pre filter unit - upto 128 filters per channel or 128-taps.
HDMI 2.0a with eARC for up to 16ch/192kHz or 32ch/48kHz LPCM
Dimensions : 125mm x 58mm
 
  • Like
Reactions: 1 user
Hi!

BGA are fine. Just so many pins....

The bottom of the range 8M Plus quad core (no gpu / neural engine) has enough. You need to use a phy with RMII 2pin 50MHz rather than RGMII 4pin 25MHz. That releases more pins to the SAI units.

I have the full complement of
SAI 1 - 8TX/8RX including DSD512
SAI 2 - 4TX/4RX
SAI 7 - 1TX/1RX

I hope. Datasheet for the 8M Plus here.
http://www1.futureelectronics.com/doc/NXP/MIMX8ML6DVNLZAB.pdf
 
Last edited:
Target is low latency Linux kernel with custom kernel/linux DTS overlay config and an app to configure the audio I/O.
If you build it then I'll buy it. I've been looking for ages for an SBC that has

1) feature complete I2S, as many channels as possible (i.e. not a RPi that lacks MCLK)
2) a DTS overlay that allows me to actually use the hardware without writing the overlay myself (i.e. no Rockchip, Amlogic or Allwinner based boards that have the hardware but lack the software support)

I've tried my hand at writing my own overlays and have failed multiple times. My pile of nearly-working or somewhat-working ARM boards is quite big. I'm not going to buy another board that lacks either point 1 or point 2 above. Been burned too many times.

A board with properly working, mainline Linux supported I2S would be a dream come true.
 
1). I have to use RMII to do this. SAI_1 shares some pins with ETH pins. No way around it other than use 100Mbit RMII interfaces.
The TI DP83826 seems on paper to offer very latency between transactions. It would be interesting to compare a round trip to RTL8211.

I have exposed MCLK i/o or SAI_1, SAI_2, SAI_3, SAI_7. These pins could tx/rx clocks to any of the SAI units.

2). I have the basic dts from the pin mux tool. I'd need to pad out the relevant fsl,pins in the dts with the new pin map.

Start with the "imx8mp-evk.dts"
https://github.com/nxp-imx/linux-imx/blob/lf-5.15.y/arch/arm64/boot/dts/freescale/imx8mp-evk.dts

Include the "imx8mp-evk.dts" and override/disable where needed. For example.
https://github.com/nxp-imx/linux-imx/blob/lf-5.15.y/arch/arm64/boot/dts/freescale/imx8mp-evk-dsp.dts

In theory it should be simple...
 
A board with properly working, mainline Linux supported I2S would be a dream come true.

At the moment six connnectors ( FH52-24S-0.5SH ) along the back of the board provide

J12 = SAI_1 TX - 16 ch
J13 = SAI_1 RX - 16 ch
J14 = SAI_2 TX - 8 ch
J15 = SAI_2 RX - 8 ch, SAI_7 TX RX 2ch
J16 = GPIO, I2C, SPDIF_IN, SPDIF_OUT
J17 = MCLK1,2,3,4

Each connector has a 5V 1.5A capabale supply rail & i2c from the boards DC-DC. For example.

Still working on the pin plans though...

1675005552674.png
 
You don't need 1GBit Ethernet for AVB?
100 endpoints work fine in avb networks.
Will the USB port be either 2.0 or 3.0? I'd like to have gigabit ethernet for file transfers. Even with 100MBit/s being adequate for audio, I'd hate to saturate the dedicated LAN connecton by uploading or downloading files while the board plays via AVB.

By the way, does the LAN port support hardware timestamps up to the application layer?

Those CS43131 boards look impressive and it's a great little chip. It really makes my IEMs sing and even drives my other cans that need a lot more power. Reading the datasheet it looked like dual mono mode would be great for hifi and always wondered why no one used them for symmetrical line level outputs. Very cool indeed.

So far I've played around with PCM5102a and PCM1808 because they are nice and easy to work with. They do not require any setup apart from setting a few pins high or low. I used the simple-dai driver with the 5102a, that also helped keep things straight forward.
 
Those CS43131 boards look impressive and it's a great little chip. It really makes my IEMs sing and even drives my other cans that need a lot more power. Reading the datasheet it looked like dual mono mode would be great for hifi and always wondered why no one used them for symmetrical line level outputs. Very cool indeed.
Thanks! Been a while in the making to be honest. In mono mode they do have some output swing. :)
 
In theory it should be simple...
Your definition of "simple" seems to be a bit different from mine :LOL:

So what are your plans with this board, if I may ask?

My long term goal is to build something that looks and operates like a classic preamp. A source selector, a volume knob and a familiar look. On the inside it should be a regular linux box running something like CamillaDSP or filters in Pipewire. That's why I've been looking into ARM boards, I2S, various sound card options, USB based studio interfaces and the likes. I have not found anything that I was happy with, so far. From a technical standpoint, my best bet would be a studio audio interface, but I'd rather not have something that looks like a 1940s telephone switchboard in my living room.