Open Source DSP XOs

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
I've had some time to work on my 4300 based DSP+DAC project lately, an offshoot of which is the attached spreadsheet for tracking pin assignments. NXP's cancelled packages and defined new pinouts since I started working on this but it should be correct barring typos or changes on NXP's part that I missed---it's based on the early June datasheet and manual. Anyone who happens to find errors, PM me the changes.
A smart move is to reorient your DSP+DAC project into a DSP + WM8580 (or WM8581) plus some salt and pepper enabling the same (credit card sized) board to sit into three different applications :
- general purpose stereo digital XO (with SPDIF in)
- DSS preamp (with SPDIF in)
- DSS speaker XO (mono XO - thus up to 8 channels per speaker - excellent for line arrays)

About DSS, read this : AES E-Library Philips DSS 930: A New Concept in Active Loudspeaker

With DSS, Philips used a trick to convey side-information on top of SPDIF, like the volume control info. They added a low frequency modulation on top of the SPDIF stream. We may replicate this. The scheme is documented in the Philips DSS930 and DSS940 Service Manuals. If you don't like this, you may add, as an option, a second Cinch for conveying the side info separately, kind of audiophile option.

A typical stereo DSS configuration needs one DSP in the preamp, and one DSP in each speaker. Thus, three credit card sized DSP boards in total.

Microchip PIC32MX2 28pin can deliver two I2S (bidirectional), plus one I2C. Microchip PIC32 tools are reliable, and inexpensive. This would be the inexpensive, uncomplicated starting point. WM8580 slightly underexpoited, not a big issue.

Wanting more bells and whistles like more GPIOs for driving LEDs and other peripherals? An infrared remote control? An external volume controller? Use a 44pin PIC32MX2. Consider this as the big brother of http://electrodesigns.net/blog/diyaudio-basics-digital-age/#more-1821

Infineon XMC4500 can deliver five (unidirectional I guess) I2S, plus one I2C. Slightly more expensive. More MIPS also. This time we get the WM8580 or WM8581 fully exploited.

Interoperability would exist between boards equipped with the 28pin PIC32MX2, the 44pin PIC32MX2, and the Infineon XMC4500.

After having done this, some demand will show for DSS boards only equipped with the DSP, designed for external DACs. Don't be fooled by this now. Only deal with such demand later on.

In a nutshell : keep it simple and stupid.

Manage to get your boards distributed by Sparkfun, Watterott and Elektor. With press coverage from Elektor and Hobby-Hifi.
 
We discussed most of that a few pages back. I guess the one remark I have is if the analog portion of the playback channel has a good gain structure there's enough utilized bit depth in the DAC sending divided down samples over SPDIF for volume control isn't a big deal. Particularly if you've a source like a Squeezebox that automatically pads 16 bit data to 24 bit.

I'll spin up a separate thread once my build's farther along. The 43x0 parts have the IOs to make a basic board that's quite extensible---without really trying I ended up with schematic that supports up to 14 I2S links and at least five clock domains. I only need four links and one clock so that's all I'll write code for. But the extra routing is so trivial it'd be rather silly not to put the hardware capacity there in case need arises to write software to do something with it.
 
This is exactly what we have waited for so long. Will you help us getting this running on NGX LPC4330 Xplorer? Using KEIL MDK ARM with ULINK2/ME or using LPC-Xpresso with NXP LPC-Link?

Sorry for late reply.
I am using Keil & J-link with my custom made development board based on LPC4330FBD144 chip.
Examples from NXP are available here: LPCware.com GIT server :: lpc43xx.git/tree
Now I am developing UAC2 firmware for full multichannel output testing...
 
Hmm, is it possible to buy a ULINK-ME on its own or is it always bundled with an eval board? I checked all the US distributors and they're always bundled, though $210ish for for an eval board + ULINK-ME isn't hugely far from $170 for a Red Probe with the 10 pin Cortex debug adapter. Main difference is MDK-Lite's 32k limit and steep licensing fees versus LPCXpresso's 128k limit and considerably less agressive pricing. But I'd be surprised to hit 32k and $40ish can quickly pay itself back in hassles avoided. ($300-400 for a ULINK2 is more than I'd prefer to spend.)

For folks who've used both environments all the way though to debugging, what's your preference? (I've only toyed with LPCXpresso so far.)
 
Last edited:
Those last weeks the LPC4330 support improved thanks to:
- NGX LPC4330-Xplorer board ($56.42 - I already own two of them)
- LPCware
- lpc43xx.git (especially the lpc43xx SGPIO I2S for UDA1380)
- nxpUSBlib (grabbing audio from USB)
- LPC43xx Pin Mux Tool
Within a series of Open Source projects, let's develop a few "capes" or "shields" for the NGX LPC4330-Xplorer, and some demo softwares.
Do we get access to the two ARM cores?
 

Attachments

  • NGX LPC4330-Xplorer.jpg
    NGX LPC4330-Xplorer.jpg
    146.6 KB · Views: 173
  • LPC43xx Pin Mux Tool.jpg
    LPC43xx Pin Mux Tool.jpg
    107.7 KB · Views: 53
  • lpc43xx SGPIO I2S for UDA1380.jpg
    lpc43xx SGPIO I2S for UDA1380.jpg
    162.4 KB · Views: 59
  • lpc43xx.git.jpg
    lpc43xx.git.jpg
    86.9 KB · Views: 49
  • nxpUSBlib.jpg
    nxpUSBlib.jpg
    123.8 KB · Views: 157
  • Board connections and configurations.jpg
    Board connections and configurations.jpg
    266.1 KB · Views: 154
  • LPCXpresso IDE.jpg
    LPCXpresso IDE.jpg
    169 KB · Views: 160
  • Keil µVision 4 IDE.jpg
    Keil µVision 4 IDE.jpg
    77.3 KB · Views: 158
  • Keil Ulink 2 ARM Multi-Function Emulator for SCM - White.jpg
    Keil Ulink 2 ARM Multi-Function Emulator for SCM - White.jpg
    61.2 KB · Views: 47
  • J-Link V8 ARM USB-JTAG Adapter Emulator - Black.jpg
    J-Link V8 ARM USB-JTAG Adapter Emulator - Black.jpg
    60.2 KB · Views: 45
I suppose I could have been more explicit about this when I linked that page back in post 279 but, to recap, it's a moving target:

LPCXpresso 4.2.2 - no meaningful LPC185x or LPC43xx support
LPCXpresso 4.2.3 - cumbersome support as described on the wiki
LPCXpresso 4.2.4 - TBD

I would guess by 4.2.5 writing M0+M4 code could be pretty smooth. From a glance at the sample code a5856 linked Keil's been there since at least March. So I'd be cautious about inferring the state of dual core Cortex development from Code Red starting to catch up. (This is not to say all's well with Keil. I'm not hands on with MDK yet as Keil's download page thinks the email address I've been using daily since 1994 is invalid---haven't gotten a response from Keil support yet.)

It's worth pointing out NXP lists all 43xx parts as in either development or qualification---none are actually in production yet and the datasheet is still marked preliminary. I'd say things are past the alpha stage but it's probably unrealistic to expect a baked developer experience at this point; currently it's more of a beta/early adopter ecosystem it seems.
 
Avnet has the LPC1114 Cortex M0 in DIL28 package in stock now, so no excuses that the available packages aren't DIY-friendly enough to roll your own DSP :

NXP Semiconductors LPC1114FN28/102,12, - Avnet Express

Price even for a 1 off is an astonishingly reasonable $1.26 for a 45DMIPs chip - at less than 3cents per DMIP is this some kind of record for an SoC? :D

<edit> Incidentally, has anyone got any info on the LPC4088 120MHz Cortex M4 other than this tantalizing Youtube vid?

http://www.youtube.com/watch?v=0fFv6SlTFk8&feature=plcp
 
Last edited:
Infineon XMC4500 is now supported by Hitex.
See it here XMC4500 HiLight Kit
The debug interface adapter ULink-ME is included in the package and can be used with Keil-MDK.

The Infineon XMC4500 looks great on paper for a DSP audio crossover, thanks to no less than six flexible serial interfaces, each supporting I2S. Does it mean we can have one I2S as stereo audio input, three I2S as stereo 3-way outputs, one I2C as WM8581 Codec control, and one SPI as general serial control (like for adding an audiophile-grade analog volume control) ?

So, here is the updated list of some inexpensive boards that could execute some simple audio-DSP before feeding two or more audio DACs :

- the Microchip DM330013-2 PIC32MX2 Starterkit (onboard debugger)
- the Embedded Artists NXP Cortex-M0 and Cortex-M3 carrierboards (onboard LPCXpresso debugger)
- the STM 32F4 Cortex-M4 Discovery Kit (onboard debugger)
- the Freescale Kinetis K20 Cortex-M4 carrierboard (aka Teesny 3.0 - bootloader)
- the T.I. LM4F Cortex-M4 Evaluation Kit (onboard Keil or IAR debugger)
- the T.I. LM4F120 LaunchPad Evaluation Board (Onboard Stellaris In-Circuit Debug Interface) (promo at $4.99)
- the Hitex Infineon XMC4500 HiLight Kit (onboard Keil debugger)

By the way, why continuing embedding a debugger chip or an external bootloader chip on such boards ? Is it so difficult producing a simple, lowcost board featuring the ARM Cortex-M4, only adding the 10-pin 0.05 inch Cortex-M debug connector on the board, for hooking some external debug probe like the keil ULink-ME ? What's the issue ? Can somebody explain ?
 
Last edited:
- Five UARTs with fractional baud rate generation, internal FIFO, DMA support, and RS-485/EIA-485 support.
- Three SSP controllers with FIFO and multi-protocol capabilities. The SSP interfaces can be used with the GPDMA controller.
- I2S (Inter-IC Sound) interface for digital audio input or output. It can be used with the GPDMA.

Archaic approach regarding the serial interfaces.
Time to blast all this with flexible serial interfaces like in the Infineon XMC4500.
Time to add I2S, TDM and TDMCA as supported protocol.
Why not eight flexible serial interfaces? Is ARM unable to design this, as standard?
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.