Content originally posted in LPCWare by avr458 on Thu Aug 22 22:50:40 MST 2013
Quote: mark03
The LPC43xx should have the power to handle a wide range of audio DSP. Having said that, my understanding is that the CMSIS DSP is just a C library, without optimizations for any particular processor; the performance you can get will depend on your compiler, and you will generally take a hit of something like 2x versus the achievable speed of hand-crafted assembly. NXP had/has a DSP library for its Cortex-M3 chips that was hand-optimized assembly, but they declined to port it forward to take advantage of the extra DSP instructions on the M4. I've read on these forums that this library on the M3 performs about as fast as CMSIS DSP on the M4, i.e. on the M4 you gain more SIMD instructions but that advantage is offset by the fact that there are no freely available assembly libraries for FFTs, filters, etc. (I think an NXP rep countered by saying the M3 library would run fine on the LPC43xx, which is obviously true, but rather misses the point.)
But none of this should really deter you. Look at it as a learning opportunity. When I was in school we did baseband I/Q processing for ham radio (basically some long FIR filters) using a Motorola 56002 dedicated DSP processor. Today's Cortex-M4 controllers have significantly more power, so there is lots you can do.
Re: memory, I think the bottleneck in SPIFI would not be the interface but the flash device itself. If you're OK with the speed and endurance limitations of flash memory, I would probably use the SD card interface instead. That would give you an easy route to data interchange with a PC. Of course, SRAM or DRAM on the EBI will be much, much faster.
Thanks for your thorough response! Thats unfortunate to hear about the CMSIS DSP library but not too surprising. Having been working at an audio company as a hardware design intern this summer I totally understand how assembly can be much faster than compiled C, all the devices made at this company are coded by hand on the assembly level using every single clock cycle possible. As far as memory goes I think I'm going to want to use SRAM on the EBI because I want to attempt processing stereo audio at 24 bits in real time, I doubt the internal memory on the LPC4337 is going to be enough to handle that kind of audio but I could be wrong, I'll have to run some tests.
For this design I will be recycling most of the schematic for my original LPC4337 board the marlin, what will be new to the hardware design is an SRAM bank, Wolfson WM8778 audio codec, line level preamplification, switching regulators for power, and an SD card slot. I have everything figured out hardware wise except the SRAM over EBI, and connecting the audio codec over I2S. I have designed using I2S before at work but the naming conventions on the two parts I was working with are very different from the NXP naming conventions. I setup a Wolfson SPDIF transceiver with an ADI DSP, the naming conventions of the I2S interface on the codec I want to use are similar to the transceiver but for the LPC4337 Its very confusing. Would you mind showing me how to wire up the WM8778 to the LPC4337?