Avionics Node Microcontroller Reqirements
Here's the requirements for the microcontroller that will run all of our non-flight computer "nodes" - small boards usually centered around some application-specific task, like the IMU or magnetometer or whatnot. Note the differentiation between "must" (a hard requirements) and "should" (a not so hard requirement).
- Architecture
- Must be >= 32 bits.
- Should have many implementations, by more than one manufacturer if possible.
- Should have decent integer math ALU (e.g., 32 x 32 -> 64, MAC, etc).
- Development Tools
- Must have current and active OSS tools: gcc, gdb, binutils, etc.
- Must have useful open debugger protocol (e.g., JTAG)
- Should have existing open source real time operating system (e.g., eCos)
- Packaging
- Must have "usable" packaging: packaging that can be used on two layer boards.
- Must not be a DIP or PLCC or BGA with > 32 pins.
- This leaves a "Quad Flat Pack" (or QFP, e.g. a TQFP or LQFP), or possibly a BGA with < 32 pins.
- QFP should have <= 64 pins. >= 100 pins is possible but a pain. 144 pins absolute maximum.
- Peripherals
- Must have onboard memory: >= 128 KB flash, >= 32 KB SRAM.
- Must have necessary communication busses (CAN and/or USB).
- Should have one or more serial busses: UART, SPI, etc.
- Should have a >= 10 bit ADC.
- Should have >= 3 PWMs.
- Should have a watchdog timer.
- Should have brown out reset.
- Computational Horsepower
- Must have > 10 MIPS, but should have >= 60 MIPS.
- Power Consumption
- Should have reasonable voltage requirements (e.g., 3.3V only (best) or 3.3V/5V).
- Should have low power modes.
- Should be relatively low cost
Why ARM? Why 32 bits? Why...?
The requirements dictate our choice, but the reality is that so far we've only found ARM7 chips that come even close to matching this spec. The PowerPC, MIPS and x86 chips we've seen are too "microprocessory" in that they lack onboard flash, RAM, and peripherals, else they come in some giant BGA package which forces us to 10 layer boards which we just can't afford to do. And looking for a 16 bit processor doesn't make sense: we can get 32 bits for about the same price given that our quantities are just a few dozen chips.
Comparision chart for microcontrollers
See the ARMs.xls attachment.
Manufacturers of Relevant ARM7 Microcontrollers
- Atmel ARM7 chips
- Freescale
- Micronas
- LPC2146/48 Philips
- STMicro
- Texas Instruments
Big list of companies that make ARM chips, and why those company's chips don't meet our requirements.
Final Cut Microcontrollers
See the final candidates discussion page.
Justification for Final Choices
- CAN only
- Freescale's MAC714 and Texas Instrument's TMS47OR1A384PZ were the two best candidates with 100 pins.
- Freescale wins over TI
- Both of these are 100 pins.
- Freescale has 512KB flash; TI has 384KB flash.
- Freescale seems to have more of everything we want (low power modes, A/D channels, UARTs, 16-bit timers, and PWM channels). However, it does have only 1 I2C while TI has 3.
- Freescale requires 5V and 2.5V for power, which is more desirable than TI's required 1.85 and 3.3 volts.
- However, the STR712F2 is 64 pins. Pin count is the most important requirement, which makes this an excellent choice.
- USB only
- Atmel's AT91SAM7S256 and Philips LPC2148 were the top two candidates.
- Both chips are 64 pin packages, and both only require 3.3V.
- STM's STR711F2 is also 64 pins, but it may require an additional 1.6 volts.
- CAN and USB
- Atmel's AT91SAM7A3 provides the most of what we want (A/D channels, PWM channels, 16 bit timers), although it only has 32KB RAM and no brown-out reset.
- Atmel's AT91SAM7X256 and AT91SAM7X256 are a close second, with 64KB RAM and brownout resets. However, adding ethernet seems to take away from the peripherals we want (A/D channels, PWM channels, 16 bit timers).
- NOTE: all three of these choices only require 3.3V for power (they have an internal voltage regulator that can be used to power the PLL and I/O pins). They are also 100 pins.
The best choice (besides the 100 pin CAN and USB Atmel chip) seems to be STMicroelectronics' microcontrollers. They're either CAN or USB only, and the pins are similar enough that we could swap them out without much trouble. It was decided in the February 22nd Avionics meeting to go with the STM chips. We'll design both the CAN and USB revs, but only fab the USB design first. If the USB design meet our avionics system needs, we'll still have the CAN version we can fab.
Tim's Thoughts
Atmel AT91SAM7x256: ARM7TDMI-USB/CAN, package LQFP100
- Max. Core frequency 55MHz
- Flash Wait states @ Max. Core frequency (1) (pre-fetched)
- 10,000 Flash cycles, 10 yr retention
- Supply Voltage 3.3V+/-10%, 1.85V+8%/-10%
- Absolute maximum Supply Voltages 3.6V/1.95V
- Must have I/O voltage >= Core voltage at all times including transients.
- Power consumption @ Max. Core frequency 50mA @ 1.85V (Max 90mA)
- system dependent I/O consumption @ 3.3V
Philips LPC2129: ARM7TDMI-CAN (USB => 2148), package LQFP64
- Max. Core frequency 60MHz
- Flash Wait states @ Max. Core frequency (0) (128 bit access)
- 100,000 Flash cycles, 20 yr retention
- Supply Voltage 3.3V+/-10% 1.8V+8%/-10%
- Absolute maximum Supply Voltages 3.6/2.5V
- Power consumption @ Max. Core frequency 60mA @ 1.85V (Max ???mA)
- system dependent I/O consumption @ 3.3V
Philips LPC2148: ARM7TDMI-USB, package LQFP64
- Max. Core frequency 60MHz
- Flash Wait states @ Max. Core frequency (0) (128 bit access)
- 100,000 Flash cycles, 20 yr retention
- Supply Voltages 3.3/1.8V nominal, tolerance unknown
- Absolute maximum Supply Voltage unknown
- Power consumption @ Max. Core frequency unknown
ST STR711FR2: ARM7TDMI-USB (CAN available STR712FR2), package TQFP64
- Max. Core frequency 50MHz (66MHz from SRAM)
- Flash Wait states @ Max. Core frequency (1) (pre-fetched)
- 10,000 Flash cycles, 20 yr retention + smaller 100,000 cycle "data memory"
- Absolute maximum Supply Voltages 4.0/2.0V
- Power consumption @ Max. Core frequency 60mA @ 1.85V (Max 100mA) + system dependent I/O consumption @ 3.3V
Roughly ARM7 offers 0.9 MIPS/MHz assuming no wait states.
An ST part offers CAN+USB in the 144pin package. I don't think this is desirable.
The ST CAN and USB parts both use pins 42/43 as their differential outputs, so they are potentially drop-ins for each other.
All these parts have problems and advantages.
The Philips is fastest, then Atmel, then ST, but the differences are not very large. (Roughly 54, 49, 45 MIPS respectively) This is not totally clear however, since running from SRAM the ST is spec'd fastest (59 MIPS), but there would be extra complexity.
The Atmel come in a large package (LQFP100)
The Philips CAN part has only 16kB SRAM
The Philips USB part and the Atmel are sampling. Also the Philips USB part has only a very preliminary datasheet.
The ST part has a 4ch/12bit ADC
The Philips USB part has a single 10bit DAC
Some things yet to be determined:
- adequate/available USB code base
- open JTAG protocols
- actually working peripherals
The Philips line is the most mature, yet their USB part is the least far along. (It is odd they seem to be the fastest.)
The Atmel does have things to recommend it (5V tolerant I/O for example), but the 100 pin package is a pain compared to the 64pins.
Power supply notes:
- At least 100mA at 1.8V
- Preliminary 100mA at 3.3V
- Quiescent current < 15mA
- Nominal efficiency >= 80%
Misc
- An ARM microcontroller Wiki, info about different vendor chips
- list of microcontrollers supported by eCos
- Most of the PowerPC architectures supported by eCos don't have USB or CAN. The few that do have USB or CAN (MPC555, MPC823, MPC850) are BGA packages.
- list of processors supported by FreeRTOS
Did someone say Atmel AT91SAM7A3 ?
Data sheet
- http://www.keil.com/dd/docs/datashts/atmel/at91sam7a3_ds.pdf
- http://www.atmel.com/dyn/products/product_card.asp?part_id=3578
Distributors
- Atmel is sampling the part at this time.
- Digi-Key: http://www.digikey.com/scripts/DkSearch/dksus.dll?Criteria?Ref=8821&Site=US&Cat=33227674
Eval boards
- http://www.at91.com/Pages/products/EvaluationBoard/SAM7A3EK/at91sam7a3ek.html
- http://www.atmel.com/dyn/products/tools_card.asp?tool_id=3783
eCos
Attachments:
- AT91SAM7A3.pdf
- AT91SAM7A3 fullspec.pdf
- AT91SAM7S256 128.pdf
- AT91SAM7S256 128 fullspec.pdf
- AT91SAM7X256 128.pdf
- AT91SAM7X256 128 fullspec.pdf
- AT91SAM7XC256 128.pdf
- AT91SAM7XC256 128 fullspec.pdf
- LPC2141 42 44 46 48 1-1.pdf
- MAC7100 family - 7101 7111 7121 7131 7141.pdf
- MAC7100 family all.pdf
- ST71x.pdf
- tms470r1a384.pdf