[sdiy] FFTs on 8 to 16 channels
rsdio at audiobanshee.com
rsdio at audiobanshee.com
Tue Feb 23 06:10:31 CET 2016
For programming serial flash memory, some third parties offer utilities for sale, buy they're usually specific to one processor family. Unfortunately, tools for the TMS320 are Windows only, and I wasn't keen on paying a licensing fee for a limited solution. My workaround was to write a very simple firmware in C with a giant array containing the real firmware. When that simple firmware runs, it reads the serial Flash and compares against the array. If any discrepancies are found, the offending Flash sector is erased and then programmed with the correct data. This manufacturing firmware can be loaded from USB, and it only has to be run once. After that, the TMS320 boots from serial Flash.
If you end up using the Blackfin, you might consider u-boot. It can be loaded from a UART port on the Blackfin, and from there you can load Flash. I've only used the parallel Flash utilities in u-boot, but I assume they have serial Flash utilities as well. Once you've loaded the serial Flash, it's probably a simple matter to boot from the serial Flash. I've not studied the non-parallel Flash support in Blackfin, though, so don't quote me.
As for your "hello world" or 'blink' program, I always recommend going to the manufacturer. They usually have both an evaluation board for each processor family and several examples. I recently started a project with the Texas Instruments TM4C ARM chip, and they had USB-Audio and other examples that worked right away. In that case, I had to make sure that I had the right evaluation board, because some do not have audio. We're talking about boards in the $20 range, so they don't always have all features.
In addition to providing evaluation boards and example software, the manufacturer page for the processor will also have lots of documentation on bootloaders, how to support serial Flash, how to get started, and just about anything you might need. Of course, different manufacturers make different tasks easier than others, depending upon their expertise and chosen focus.
p.s. I designed the Soundplane - I don't think there's any product called a Soundboard. I just wanted to make sure people had the correct spelling in case they want to look up the product online.
Brian Willoughby
Sound Consulting
On Feb 22, 2016, at 1:28 PM, ackolonges <ackolonges at hotmail.com> wrote:
> That sounds like an amazing system you designed for the Soundboard Brian. I'll follow your advice and try to calculate whether the Blackfins will be able to carry out the processing that I'm after. I'm also considering the BF592 as I have an example board which uses that chip. I believe I can get away with serial flash memory, but it may take me some time to comprehend how to write a binary to the external flash from a PC which the Blackfin can boot from.
>
> If you have any suggestions of resources which outline this process to help me get my first 'blink' program running or have a straight-forward description of how to set up a baremetal programming workflow for these chips, that would be much appreciated. I'm having a hard time finding much information that doesn't assume a whole lot of prior knowledge in the area.
>
> Thanks a lot.
>
> > From: rsdio at audiobanshee.com
> > Date: Wed, 17 Feb 2016 19:01:35 -0800
> > To: synth-diy at dropmix.xs4all.nl
> > Subject: Re: [sdiy] FFTs on 8 to 16 channels
> >
> > I designed the Soundplane using the 108 MHz TMS320VC5506, available in PQFP-144 packaging, and a couple of ADS7951 8-channel, 12-bit ADC chips. It performs 16,000 128-point FFTs per second in 16-bit fixed point and delivers the results on Full Speed USB over two Isochronous endpoints. That's a total of 16 input channels (the design also generates 32 output channels through a high-speed 14-bit DAC on the parallel bus).
> >
> > These ADC chips are not I2S, but are SPI. The 18 MHz clock rate is just enough to handle 8 channels at 125 kHz sample rate each. The TMS320 has three MCBSP ports, and I recall that they could handle I2S as easily as SPI.
> >
> > Before I selected the TMS320, I looked at Texas Instruments' web pages to see cycle counts for various FFT implementations. Knowing the size of FFT that I needed, and the maximum clock rate of the DSP, I was able to predict the percent CPU needed for the FFT portion of the calculations.
> >
> > I've used the Blackfin for Linux, but not for DSP. I'd recommend looking for benchmarks that will predict whether the BF533 can keep up with your processing needs.
> >
> >
> > External Flash is not always complicated. The TMS320 boots from a serial Flash, using that third SPI port that doesn't have an ADC attached in my design. However, I'm guessing that your Blackfin design is looking at needing external parallel Flash, which would be a bit more resource intensive. My first question here is whether the external Flash is needed just for Linux, or if you could possibly skip the Flash if your worked with a simpler RTOS or bare metal.
> >
> > Have you considered Analog Devices SHARC? Not sure how that compares to their Blackfin. I assume SHARC is rather expensive to develop for.
> >
> > Brian Willoughby
> > Sound Consulting
> >
> >
> > On Feb 17, 2016, at 6:37 PM, ackolonges <ackolonges at hotmail.com> wrote:
> > > I was wondering if the group had any suggestions of chips for embedded real-time processing of many channels of audio (8, 16, more?) at 44.1khz 16bit on a single DSP chip? The largest workload would probably be carrying out realtime FFTs on all of the channels at once. I have some experience with using dsPICs for signal processing and synthesis (thanks to Eric's designs), and have done a reasonable amount of work with AVRs. I'm ordering an STM discovery board to see how I fare with that as well.
> > >
> > > So far the best candidate seems to be chips like the Blackfin ADSP-BF533 which can come in LQFP packages and can support up to 8 stereo I2S channels. Does anyone on the list have any experience with these chips? For a DIYer the implementation seems quite complicated, needing external flash memory etc.
> > >
> > > Any suggestions of methods of doing this kind of processing, or advice on the Blackfins would be greatly appreciated.
> > >
More information about the Synth-diy
mailing list