DSPRelated.com
Forums

bargain 32-bit dsp shopping guide?

Started by gst November 16, 2006
...i'm looking for a guide about the low-end dsp market... any
suggestion?



if i may dare, i would be happy if someone had suggestions even on the
choice i'll have to do: details follow.

i have to find a dsp (or a fast mcu) with 32bit registers, an adc of at
least 10 bit of precision, a decent amount of on chip ram (48Kb or
more) and not insane power consumption.

right now we are using a low end 150mhz more-cisc-than-risc dsp and we
can loose say max 30-50% of raw performance, but we are forced to cut
peak power consumption as much as possible (say 70% or more) because of
the... usual problems...

... and of course the replacement should be cheap as hell, better if
almost free ;-)

i'm not an expert of the field and i'm a bit puzzled; e.g. i was
reading about the TMS470 _mcus_ (which are risc based and clocked
around 48-60mhz) and can't figure how fast they can really go... they
are quite a different beast than the dsp we are using right now...

thank you and excuse me for my english...
gst

gst wrote:
> ...i'm looking for a guide about the low-end dsp market... any > suggestion? > > > > if i may dare, i would be happy if someone had suggestions even on the > choice i'll have to do: details follow. > > i have to find a dsp (or a fast mcu) with 32bit registers, an adc of at > least 10 bit of precision, a decent amount of on chip ram (48Kb or > more) and not insane power consumption. > > right now we are using a low end 150mhz more-cisc-than-risc dsp and we > can loose say max 30-50% of raw performance, but we are forced to cut > peak power consumption as much as possible (say 70% or more) because of > the... usual problems... > > ... and of course the replacement should be cheap as hell, better if > almost free ;-) > > i'm not an expert of the field and i'm a bit puzzled; e.g. i was > reading about the TMS470 _mcus_ (which are risc based and clocked > around 48-60mhz) and can't figure how fast they can really go... they > are quite a different beast than the dsp we are using right now... > > thank you and excuse me for my english... > gst >
You might want to check out TI's F280x family of DSPs as well. It is a family of pin-for-pin compatible devices starting at $3.50 (1ku) for this one: http://focus.ti.com/docs/prod/folders/print/tms320f28015.html That's a 100-pin device (LQFP) with 32KB flash, 2KB OTP, and 12KB RAM. It's a 60MHz device and quite a powerful core behind it. It's a 32-bit processor that can do single-cycle MACs and also has an efficient instruction set. It includes a 12-bit A/D as well as other peripherals such PWMs, I2C, UART, SPI, CAN. Personally I found it very easy to get started with these processors using TI's "C/C++ Header Files and Peripheral Examples": http://focus.ti.com/docs/toolsw/folders/print/sprc191.html It's a dual-supply processor (1.8V and 3.3V) so remember to budget a little extra there. Good luck with your search. Brad

Brad Griffis wrote:

> gst wrote: > >> i have to find a dsp (or a fast mcu) with 32bit registers, an adc of at >> least 10 bit of precision, a decent amount of on chip ram (48Kb or >> more) and not insane power consumption. >> > > You might want to check out TI's F280x family of DSPs as well.
On the other side, the TMS28xx is very power hungry, requires the dual power supply with the sequencing, has the ADC with the lousy accuracy of 9 bits of 12, the flash programming procedure is miserable. It has the 3.3V only I/O which implies the need for the glue logic to interface it to the power components. The assembler of 28xx is a mess. By design, the TMS28xx is a common microcontroller, not a DSP. The DSP performance of the TMS28xx is comparable to that of a real DSP running at about 1/4 of its clock rate. Although the timer related peripherals of 28xx are impressive. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
Vladimir Vassilevsky wrote:
> > > Brad Griffis wrote: > >> gst wrote: >> >>> i have to find a dsp (or a fast mcu) with 32bit registers, an adc of at >>> least 10 bit of precision, a decent amount of on chip ram (48Kb or >>> more) and not insane power consumption. >>> >> >> You might want to check out TI's F280x family of DSPs as well. > > On the other side, the TMS28xx is very power hungry,
The original post never gave a power target. The definition of "insane power consumption" is open for interpretation. I would take that to mean under a watt. The core (1.8V) consumes around 220 mA at 100 MHz down to 60 mA at 10 MHz. Not bad for the amount of computational power.
> requires the dual > power supply with the sequencing
Sequencing is not necessary in all systems. If Vdd,io reaches 0.7V before Vdd,core then you might see some of the pins drive low for a moment. If that's not an issue in the system then you don't have to pay attention to the sequencing.
> has the ADC with the lousy accuracy of > 9 bits of 12
ENOB is 10.9 bits in the datasheet. If you're only seeing 9 bits of accuracy then you're doing something wrong.
> the flash programming procedure is miserable.
What's so hard about calling flash_erase(...) and flash_program(...)? Pretty much every post I've seen in this forum regarding flash programming on the F28x compliments how well the TI-supplied flash programming APIs work.
> It has the > 3.3V only I/O which implies the need for the glue logic to interface it > to the power components.
Yep, a buffer is needed if your system requires interfacing to 5V I/O. There are a lot more 3.3V parts available now so this isn't always necessary.
> The assembler of 28xx is a mess.
What's messy about it? It's a unified memory map so you don't have any ugly instructions for accessing program memory as data or anything like that. It allows math to be done right in the registers so you don't have all the headache of constantly moving data into and out of an accumulator. I really like the instruction set.
> By design, the > TMS28xx is a common microcontroller, not a DSP. The DSP performance of > the TMS28xx is comparable to that of a real DSP running at about 1/4 of > its clock rate.
How many common microcontrollers can fetch a filter coefficient, a data element, do a multiply accumulate, write the result, and circularly increment the pointers all in one cycle and sustain that performance for many cycles? Doesn't seem like a common microcontroller architecture at all to me. It has all the hallmarks of a DSP.
> Although the timer related peripherals of 28xx are > impressive.
I agree with you on that one!
Brad Griffis <bradgriffis@hotmail.com> writes:

> Vladimir Vassilevsky wrote: >> Brad Griffis wrote: >> >>> gst wrote: >>> >>>> i have to find a dsp (or a fast mcu) with 32bit registers, an adc of at >>>> least 10 bit of precision, a decent amount of on chip ram (48Kb or >>>> more) and not insane power consumption. >>>> >>> >>> You might want to check out TI's F280x family of DSPs as well. >> On the other side, the TMS28xx is very power hungry, > > The original post never gave a power target. The definition of > "insane power consumption" is open for interpretation. I would take > that to mean under a watt. The core (1.8V) consumes around 220 mA at > 100 MHz down to 60 mA at 10 MHz. Not bad for the amount of > computational power. > >> requires the dual power supply with the sequencing > > Sequencing is not necessary in all systems. If Vdd,io reaches 0.7V > before Vdd,core then you might see some of the pins drive low for a > moment. If that's not an issue in the system then you don't have to > pay attention to the sequencing. > >> has the ADC with the lousy accuracy of 9 bits of 12 > > ENOB is 10.9 bits in the datasheet. If you're only seeing 9 bits of > accuracy then you're doing something wrong. > >> the flash programming procedure is miserable. > > What's so hard about calling flash_erase(...) and flash_program(...)? > Pretty much every post I've seen in this forum regarding flash > programming on the F28x compliments how well the TI-supplied flash > programming APIs work. > >> It has the 3.3V only I/O which implies the need for the glue logic >> to interface it to the power components. > > Yep, a buffer is needed if your system requires interfacing to 5V > I/O. There are a lot more 3.3V parts available now so this isn't > always necessary. > >> The assembler of 28xx is a mess. > > What's messy about it? It's a unified memory map so you don't have > any ugly instructions for accessing program memory as data or anything > like that. It allows math to be done right in the registers so you > don't have all the headache of constantly moving data into and out of > an accumulator. I really like the instruction set. > >> By design, the TMS28xx is a common microcontroller, not a DSP. The >> DSP performance of the TMS28xx is comparable to that of a real DSP >> running at about 1/4 of its clock rate. > > How many common microcontrollers can fetch a filter coefficient, a > data element, do a multiply accumulate, write the result, and > circularly increment the pointers all in one cycle and sustain that > performance for many cycles? Doesn't seem like a common > microcontroller architecture at all to me. It has all the hallmarks > of a DSP. > >> Although the timer related peripherals of 28xx are impressive. > > I agree with you on that one!
The one real show-stopper for me in using the 28xx as a workable DSP is the lack of a DMA subsystem. Having to bit-bang each and every A/D and D/A sample in and out of the processor is damned expensive. OK, that's not exactly true - there is a ADC FIFO, but it's still primitive. -- % Randy Yates % "She's sweet on Wagner-I think she'd die for Beethoven. %% Fuquay-Varina, NC % She love the way Puccini lays down a tune, and %%% 919-577-9882 % Verdi's always creepin' from her room." %%%% <yates@ieee.org> % "Rockaria", *A New World Record*, ELO http://home.earthlink.net/~yatescr

Brad Griffis wrote:

> Vladimir Vassilevsky wrote:
>> On the other side, the TMS28xx is very power hungry, > > > The original post never gave a power target. The definition of "insane > power consumption" is open for interpretation. I would take that to > mean under a watt. The core (1.8V) consumes around 220 mA at 100 MHz > down to 60 mA at 10 MHz. Not bad for the amount of computational power.
That's a lot of power, compared to BlackFin or TMS55xx, for example. The power consumtion is important when you are running from a battery. The 28xx series were designed for the power control applications where the self consumption does not matter.
> >> requires the dual power supply with the sequencing
> Sequencing is not necessary in all systems. If Vdd,io reaches 0.7V > before Vdd,core then you might see some of the pins drive low for a > moment. If that's not an issue in the system then you don't have to pay > attention to the sequencing.
> >> has the ADC with the lousy accuracy of 9 bits of 12 > > > ENOB is 10.9 bits in the datasheet. If you're only seeing 9 bits of > accuracy then you're doing something wrong.
It is not about ENOB, it is about INL, noise and DC offset. Also, the foolish ADC has the fixed upper limit of 3.0V, not Vdd like on many other MCUs. Also, TI does not tell you the operation of the ADC pipeline, so it is difficult to know the exact sampling instants.
>> the flash programming procedure is miserable. > > > What's so hard about calling flash_erase(...) and flash_program(...)?
It is nothing hard about it except you have to wait somewhat 1 minute for flash erase and the same time for flash program. With the other MCUs it takes several seconds.
> Pretty much every post I've seen in this forum regarding flash > programming on the F28x compliments how well the TI-supplied flash > programming APIs work.
TI API is nuisance. If you want to program flash from your application, you can't use the damn thing. However developing the flashloader of your own is not a big deal anyway.
> >> It has the 3.3V only I/O which implies the need for the glue logic to >> interface it to the power components. > > > Yep, a buffer is needed if your system requires interfacing to 5V I/O. > There are a lot more 3.3V parts available now so this isn't always > necessary.
The 5V I/O is preferrable, since almost all of the power components have the 5V interface. High/Low side switches, MOSFET drivers and such.
>> The assembler of 28xx is a mess. > > What's messy about it?
The syntax has no logic in it, so is the core structure. A bunch of non-orthogonal registers and the meaningless abbreviations of the commands. It's a unified memory map so you don't have any
> ugly instructions for accessing program memory as data or anything like > that. It allows math to be done right in the registers so you don't > have all the headache of constantly moving data into and out of an > accumulator.
???? TMS28xx has a classic accumulator-based ALU. I really like the instruction set. ???? To me, it is one of the most ugly.
>> By design, the TMS28xx is a common microcontroller, not a DSP. The DSP >> performance of the TMS28xx is comparable to that of a real DSP running >> at about 1/4 of its clock rate. > > > How many common microcontrollers can fetch a filter coefficient, a data > element, do a multiply accumulate, write the result, and circularly > increment the pointers all in one cycle and sustain that performance for > many cycles? Doesn't seem like a common microcontroller architecture at > all to me. It has all the hallmarks of a DSP.
This looks like a marketing BS since I had to do the biquad filters in the TMS28xx asm. It was so inconvenient and inefficient compared to the real DSP like 55xx or 21xx.
>> Although the timer related peripherals of 28xx are impressive. > I agree with you on that one!
Actually, it is a peripherals which often determine the selection of the CPU. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com

Randy Yates wrote:


The TMS 28xx is nearly perfect for what it is intended to be used - the 
power control.

> > The one real show-stopper for me in using the 28xx as a workable DSP > is the lack of a DMA subsystem. Having to bit-bang each and every A/D and > D/A sample in and out of the processor is damned expensive. OK, that's > not exactly true - there is a ADC FIFO, but it's still primitive.
I am just curious what was your application for 28xx. Aside of the power control, we were looking at 28xx as the better alternative to 68HC12 for the automotive. However the amount of flash and RAM on chip looks too small for the serious applications. Vladimir Vassilevsky DSP and Mixed Signal Design Consultant http://www.abvolt.com
Vladimir Vassilevsky <antispam_bogus@hotmail.com> writes:

> Randy Yates wrote: > > > The TMS 28xx is nearly perfect for what it is intended to be used - > the power control.
I don't dispute that. However, Brad wrote: It has all the hallmarks of a DSP. I disagree since one hallmark of a DSP is a good DMA subsystem. But, from what I know of the intended application, it is a great part.
> I am just curious what was your application for 28xx. > > Aside of the power control, we were looking at 28xx as the better > alternative to 68HC12 for the automotive. However the amount of flash > and RAM on chip looks too small for the serious applications.
We were considering it for modulation/demodulation of signal data. However, when we realized we'd be spending 30 percent of the CPU cycles transferring samples to/from the converter interfaces, its candidacy was ended. We also needed a cheap, low-power solution. It was a political situation in which the management had made a wrong decision to use the part and it was a bit tough to overcome that momentum. The DMA problem was the tie-breaker. We finally went with the 5502, which was exactly the right part for the job. -- % Randy Yates % "Though you ride on the wheels of tomorrow, %% Fuquay-Varina, NC % you still wander the fields of your %%% 919-577-9882 % sorrow." %%%% <yates@ieee.org> % '21st Century Man', *Time*, ELO http://home.earthlink.net/~yatescr
Randy Yates wrote:
> Vladimir Vassilevsky <antispam_bogus@hotmail.com> writes: > > >>Randy Yates wrote: >> >> >>The TMS 28xx is nearly perfect for what it is intended to be used - >>the power control. > > > I don't dispute that. However, Brad wrote: > > It has all the hallmarks of a DSP. > > I disagree since one hallmark of a DSP is a good DMA subsystem. But, > from what I know of the intended application, it is a great part.
A hallmark of classic DSPs is their run time was deterministic. This precludes DMA, and DSPs didn't generally include DMA until about 10 years ago. These days people don't seem to care too much about deterministic behaviour - they just throw excess processing power at the problem in the same bloated way desktop software people do. The key exception to this is control applications, where deterministic tight loops are everything, and lo and behold that's just what the 28xx is targeted for.
>>I am just curious what was your application for 28xx. >> >>Aside of the power control, we were looking at 28xx as the better >>alternative to 68HC12 for the automotive. However the amount of flash >>and RAM on chip looks too small for the serious applications. > > > We were considering it for modulation/demodulation of signal > data. However, when we realized we'd be spending 30 percent of the CPU > cycles transferring samples to/from the converter interfaces, its > candidacy was ended. We also needed a cheap, low-power solution. > > It was a political situation in which the management had made a wrong > decision to use the part and it was a bit tough to overcome that > momentum. The DMA problem was the tie-breaker. We finally went with > the 5502, which was exactly the right part for the job.
Regards, Steve
Vladimir Vassilevsky wrote:
> > > Brad Griffis wrote: > >> Vladimir Vassilevsky wrote: > >>> On the other side, the TMS28xx is very power hungry, >> >> >> The original post never gave a power target. The definition of >> "insane power consumption" is open for interpretation. I would take >> that to mean under a watt. The core (1.8V) consumes around 220 mA at >> 100 MHz down to 60 mA at 10 MHz. Not bad for the amount of >> computational power. > > That's a lot of power, compared to BlackFin or TMS55xx, for example. > > The power consumtion is important when you are running from a battery. > The 28xx series were designed for the power control applications where > the self consumption does not matter. > > >> >>> requires the dual power supply with the sequencing > >> Sequencing is not necessary in all systems. If Vdd,io reaches 0.7V >> before Vdd,core then you might see some of the pins drive low for a >> moment. If that's not an issue in the system then you don't have to >> pay attention to the sequencing. > > >> >>> has the ADC with the lousy accuracy of 9 bits of 12 >> >> >> ENOB is 10.9 bits in the datasheet. If you're only seeing 9 bits of >> accuracy then you're doing something wrong. > > It is not about ENOB, it is about INL, noise and DC offset. Also, the > foolish ADC has the fixed upper limit of 3.0V, not Vdd like on many > other MCUs. Also, TI does not tell you the operation of the ADC > pipeline, so it is difficult to know the exact sampling instants. > > >>> the flash programming procedure is miserable. >> >> >> What's so hard about calling flash_erase(...) and flash_program(...)? > > It is nothing hard about it except you have to wait somewhat 1 minute > for flash erase and the same time for flash program. With the other MCUs > it takes several seconds.
After many erase cycles the flash begins to get depleted and some extra code gets called as a subroutine to flash_erase to do depletion recovery. When that happens it takes up to 10 seconds for a flash erase. Programming is very fast.
>> Pretty much every post I've seen in this forum regarding flash >> programming on the F28x compliments how well the TI-supplied flash >> programming APIs work. > > TI API is nuisance. If you want to program flash from your application, > you can't use the damn thing. However developing the flashloader of your > own is not a big deal anyway.
I was wary of TI's when I first heard of it, but everything worked as advertised.
>>> It has the 3.3V only I/O which implies the need for the glue logic to >>> interface it to the power components. >> >> >> Yep, a buffer is needed if your system requires interfacing to 5V I/O. >> There are a lot more 3.3V parts available now so this isn't always >> necessary. > > The 5V I/O is preferrable, since almost all of the power components have > the 5V interface. High/Low side switches, MOSFET drivers and such. > > >>> The assembler of 28xx is a mess. >> >> What's messy about it? > > The syntax has no logic in it, so is the core structure. A bunch of > non-orthogonal registers and the meaningless abbreviations of the commands. > > > It's a unified memory map so you don't have any >> ugly instructions for accessing program memory as data or anything >> like that. It allows math to be done right in the registers so you >> don't >> have all the headache of constantly moving data into and out of an >> accumulator. > > ???? > > TMS28xx has a classic accumulator-based ALU.
I should clarify what I meant. Yes, the MAC operations go through the accumulator. I was referring to many of the other ALU operations which can be done on registers or memory, etc. This was a big improvement over the 24x in which pretty much everything needed to be moved to the accumulator to do anything.
> I really like the instruction set. > > ???? > To me, it is one of the most ugly.
Pretty much every instruction set has its drawbacks. It takes a little getting used to the syntax, register set, etc. but once you get going the 28x instruction set is quite powerful.
>>> By design, the TMS28xx is a common microcontroller, not a DSP. The >>> DSP performance of the TMS28xx is comparable to that of a real DSP >>> running at about 1/4 of its clock rate. >> >> >> How many common microcontrollers can fetch a filter coefficient, a >> data element, do a multiply accumulate, write the result, and >> circularly increment the pointers all in one cycle and sustain that >> performance for many cycles? Doesn't seem like a common >> microcontroller architecture at all to me. It has all the hallmarks >> of a DSP. > > This looks like a marketing BS since I had to do the biquad filters in > the TMS28xx asm. It was so inconvenient and inefficient compared to the > real DSP like 55xx or 21xx.
I did FIR filtering and it cranked along as fast as any other DSP, i.e. a little intro and exit code, but 2 taps per cycle in the loop kernel using a RPT DMAC instruction.
>>> Although the timer related peripherals of 28xx are impressive. >> I agree with you on that one! > > Actually, it is a peripherals which often determine the selection of the > CPU. > > Vladimir Vassilevsky > > DSP and Mixed Signal Design Consultant > > http://www.abvolt.com