2
\$\begingroup\$

I've recently graduated university with an MEng degree in Electrical and Electronic Engineering. As a third year project, I've used an ST-Microelectronics ARM Cortex-M4 based Nucleo microcontroller board as the basis of a programmable guitar pedal.

I would like to begin designing my own pedals as a hobby, starting with digital effects. To do this, I'm putting together my own 'evaluation' board for prototyping with the following core components:

  • ADC
  • Anti-aliasing filter
  • Microcontroller
  • Memory
  • DAC
  • Re-construction filter
  • Peripherals (jack connectors, buttons, toggle switches, I2C display etc.)

I would like to keep my designs professional and relatively low cost (below £100 to prototype).

To produce a device of high quality, I've thought about the following specification:

  • Sample Rate: 96kHz

    This allows maximum frequency of 48kHz to be captured. As the upper limit of human hearing is around 20kHz, this should provide oversampling for greater fidelity.

    This also sets the requirements for pre/post filtering, a higher frequency sample rate will also result in simpler filter design.

  • ADC / DAC Bit depth: 24-bit

    Greater bit depth will allow for higher quality (16-bit produces 96dB dynamic range, whereas 24-bit provides 144dB). As there was not much difference in price using an external DAC will increase the dynamic range over the MCU internal DAC / ADC.

  • Memory requirements 512kB SRAM:

    At 96kHz / 24-bit, 1 second of audio requires 96 * 1000 * (24/8) = 288kB therefore 512kB should be suitable, if memory for delay style effects is needed.

As I'm relatively new to this field, I wanted to ask what Microprocessors, ADCs, DACs, Memory would be recommended and does my design approach seem suitable?

So far I've selected the following:

  • MCU: DSPIC33FJ32GP202-I/SP
  • ADC: NXP UDA1361TS/N1
  • DAC: NXP UDA1334ATS/N2
  • MEMORY: AS6C4008-55PIN

Any advice appreciated.

\$\endgroup\$

closed as too broad by Rev1.0, Scott Seidman, Dmitry Grigoryev, Voltage Spike, Dave Tweed Jul 7 '18 at 16:07

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

1
\$\begingroup\$

If you have experience with an ARM Cortex M4 based toolchain, I highly, highly recommend sticking with that. An ST M4F based part with a decent amount of memory, should do everything you need, and is way better than trying to fool around with some new toolchain on a part with less support and libraries.

I'd look at different ADCs and DACs. Those are end of life, so support will probably suck for them. Really, don't worry about 24bit. It's very difficult to get the analog design good enough to get 16bits worth of real information, so 24bit is just going to have you bogged down processing noise.

If you get an M4F with 1MB of on-board memory, you may not need to bother with external memory. I did an audio spectrum analyzer on an M4F with 512k of memory, and it was more than enough to do overlapping 2048bit FFTs at 48KHz.

\$\endgroup\$
  • \$\begingroup\$ Thanks for the reply, your comment certainly makes sense, the less time spent configuring the toolchain, the more I can focus on hardware. Just out of interest, I appreciate what youre saying about the analog design making it hard enough to get 16 bits (harmonic distortion from components, non ideal filtering, EMI etc) but how do you know that 16 bits is the limit for meaningful data (or is that just from your experience?). Could you also explain a little more on the proocessing noise you mention as the cortex M4 is 32 bits so shouldnt that be fine for a 24 bit adc? Thanks \$\endgroup\$ – TheAndyEngineer Jul 2 '18 at 10:11
  • \$\begingroup\$ It's mostly just rule of thumb, but typically getting 16bits of noise free data is reasonably challenging to achieve, and probably more than you will actually realize unless you plan on rolling several revisions to get the it just right. It's really a red herring for what you are trying to achieve. Since you probably will only have about 13-14bits of real, useful information, there's no point in trying to accommodate a 24bit value. You can use a smaller data type if you are using 16bits, and that'll save memory. Some instructions can also be sped up by only using 16bit values as well. \$\endgroup\$ – Obi_Kwiet Jul 3 '18 at 14:18
  • \$\begingroup\$ That makes sense, certainly about being able to speed up the processing as a result. Would it still be worth me using the external DAC / ADC or is the internal on the M4 board likely to be good enough? what do you use in your analyzer? thanks again for the help! \$\endgroup\$ – TheAndyEngineer Jul 4 '18 at 15:07
  • \$\begingroup\$ Honestly, you can probably get away with a dev board if the chip has decent peripherals. However, and I2S add on will make your life a lot easier. I used a K64F dev board, but you can use an ST equivalent. Just take a look at the on chip peripherals and make sure it has what you want, or just get one that's loaded, since chip cost isn't really a big factor here. \$\endgroup\$ – Obi_Kwiet Jul 10 '18 at 15:43
1
\$\begingroup\$

If you are interested in what is being used in commercial designs, I have here an Electro-harmonix Memory Man. It uses an Analog Devices BlackFin ADSP-BF531 with an ISSI 42s16800 RAM chip. They're using a CS4272 converter and 33078 op amps to get the signal in and out, and an ADC108S022 which is probably used to digitise the various pots. That's it apart from power supply components.

\$\endgroup\$
  • \$\begingroup\$ Thanks for the reply. Certainly some parts worth checking out! Using the converter, RAM and op Amps youve mentioned with a cortex M4 (as in the comment below) would make for a high quality solution on a platform Im used to, Thanks \$\endgroup\$ – TheAndyEngineer Jul 2 '18 at 9:54

Not the answer you're looking for? Browse other questions tagged or ask your own question.