I've been weighing the tradeoffs between the "latest and greatest" ARM7 offerings against the "traditional" flavor. In laymans terms, I've been trying to figure out whether to use an LPC ARM7 based MCU, or use a Luminary Micro Cortex-M3 based part.
I'll compare two micros with the following stats:
Luminary: LM3S610, 50MHz, 32kFlash, 8k SRAM, 2 UART, 1 I2C, 2x10bit ADC, $6.57@100 units
NXP: LPC2103, 70 MHz, 32kFlash, 8k SRAM, 2 UART, 2 I2C, 8x10bit ADC, $2.92@100 units
Whoa! So it looks like the LPC2103 is a clear winner. It's cheap (2.25 times less), faster (1.4 times faster), with more a/d. What's the deal here? Is it really this clear?
Having a look at the ARM stats on the ARM7TDMI vs ARM Cortex-M3, we find a few interesting tidbits:
The big note is in the Dhrystone category. Cortex comes it at 1.25 DMIPS/MHz, whereas the ARM7TDMI comes in at 0.95 (or 0.74 in thumb mode). If we re-write our MHz comparison in terms of DMIPS, we get 66.5 DMIPS for ARM7TDMI, versus 62.5 for Cortex. If the arm7 needs to be run in Thumb mode (if you're getting code-space limited) then the ARM7TDMI only rocks 51.8 DMIPS, making the Cortex *faster*. (It's worth noting that if you were code limited, the LPC series have chips with more flash/memory for less than $6.57). I'm calling the speed issue a tie.
Second talking point is power. The ARM7TDMI core uses 0.28mW/MHz versus .19mW/MHz for Cortex. On chip, that translates to ~50mA at 1.8V for the LPC2103 (if we exclude peripherals, but have the PLL turned on, etc). On the Cortex we *should* see a lower current. The LM3S610 datasheet quotes 70mA at full speed. I guess this one goes to the LPC. (To be fair, these numbers are from Datasheets....)
Third: The core. The NXP has a Von Neumann architecture, as opposed to a Harvard on the Cortex (separate code/data interface versus the same). The Cortex supports some DSP instructions like bit reversal, which could be incredibly useful in operations like DFTs. The Cortex also includes branch speculation, and has significantly decreased interrupt latency (12 cycles vs 48 for a 2.5 times improvement over the ARM7TDMI). Win one for the Luminary part.
There are a few other things that pop into my head that are, perhaps, noteworthy. First, the Cortex has some built-in components that will be required externally on an LPC chip. The things popping into my head are an LDO, a brown-out monitor, and on-chip temperature sensing. Might not seem like a big deal, but if you're short board real-estate, saving an external regulator, brown-out monitor etc might be a really big deal. The cost also shouldn't be neglected, it might easily be a dollar if you include caps and such. Second, frequency might be mis-represented somewhat... The luminary part gives you 50MHz out, whereas the LPC part PLL can only give integer multiples of the input clock-- it might not be trivial to find a cheap crystal that multiplies close to 70MHz and also suits your other needs.
Conclusions-
I'm a little surprised by the power results, and I expect to see those change when I make measurements in-system. I don't have a clear winner overall, unless I know I'll be tight on codespace or some such factor. In general, cost is a deciding factor in my designs, particularly at smallish volumes (~100 units). Given that, it isn't obvious to me that the LPC part is always a cost winner. Given the need for other components, and the apparent speed disadvantage, I think it needs careful consideration when choosing parts.