Update 26 January 2013
I inadvertantly used the TI Piccolo dual processor spec when I made the blog.
I will make an updated C2000 Launchpad blog soon.
Analysis of the TI C2000 Piccolo Dual Croe Processor.
As some of you might have guessed, I have spent a lot of time in my career analyzing computer architectures.
In my younger days, I assessed several-advanced signal processing systems that used the early versions of the 320. For its day, it was very fast compared to a lot of its rivals. If the current version follows suite, then I might very well have the processor I need for my lightning research.
The second reason was that TI embedded an Arm M3 core to coordinate the other functions on the chip. If you look at my review of the Freedom board, I explained how the combination of the 8-bit M0 core to control the features around the M3 core. So having an M3 controlling the 320 core is like super sizing its functions.
To give you some perspective, an Arduino UNO is like the good dependable model T.
The TI MSP-430 is the equivalent of a dozen or so UNO’s. Say like a corvette Stingray, to keep with the car analogy.
That puts the C2000 Piccolo the equivalent to several dozen MSP-430 chips, or say a Formula I car.
Bottom line, you get a tremendous amount of capability with the C2000 Piccolo processor.
Enough of the marketing pitch lets look closely at the Specifications:
1 SM320F28335 DSC
- 1.1 Features Resolution
Up to 6 Event Capture Inputs
– Event inputs are very useful for interacting with your system. Say if you need to detect and process something very quickly. The C2000 Picccolo gives you six inputs that can be responded to very quickly.
12• High-Performance Static CMOS Technology – Up to 2 Quadrature Encoder Interfaces
Quadrature interfaces are very useful if you want to process radio signals. Say for a digital radio receiver so that you can process the In Phase and Quadrature RF signals to pull out phase information. Great for combining radio signals with your computer.
Up to 150 MHz for TC = -55°C to 125°C
and Up to 100 MHZ for TC = 210°C
Compare these speeds to the normal 8 MHz speed for the TI MSP430. This means the C2000 Piccolo is very fast. It is also stable at high temperatures for applications where the surrounding system must operate in very warm environments.
Up to 8 32-bit/Nine 16-bit Timers
Eight 32-bit timers gives you a lot of high accuracy timing loops. This precision is essential when you are decoding real time communications signals, especially if they are encrypted. Your time base stability is critical.
The nine 16-bit timers gives you a bunch of lower accuracy timing loops that you can setup to tie into the high accuracy timing for sub-timing loops. You can also use them as counters for applications where you need to count the occurrence of signal events.
• Three 32-Bit CPU Timers
Having three accurate internal timers lets the CPU to place timed software events in response to hardware events. This is a key feature if you need to synchronize your CPU to an external master clock system. Needless to say, another very useful feature.
- 1.9-V Core, 3.3-V I/O Design
These are the de-facto current chip standards, so you could build your mobile device around the C2000 Piccolo using the current Li-ion battery technology.
• Serial Port Peripherals
Always a useful feature, as most support devices communicate serially. If nothing else, you can drive your LCD screen with information off these links.
• High-Performance 32-Bit CPU
As I stated in the intro, you really get two 32-bit devices within the single chip. Plus, 32-bits are essential to do good signal processing applications, even if your result is only 8-bit messages.
Up to 2 CAN Modules
I have not used this interface, but if your application is for the automobile industry, then I suspect that two are better than one.
IEEE-754 Single-Precision Floating-Point Unit (FPU)
If you are making a serious project, you should always use standards. If you do, then you can spend your efforts on the algorithm development using standard software modeling tools and then port the result into the C2000 Piccolo. Very useful and it makes your algorithms simpler to debug.
Up to 3 SCI (UART) Modules
SCI is a standard communications interface and you can never have too many of these, especially if the C2000 Piccolo is just part of an overall system.
16 x 16 and 32 x 32 MAC Operations
Fast integer math at 16 and 32 Bit levels is perfect for basic calculations and data reduction to prepare your signal data for Floating Point math. If you have ever done these in software, you will see a huge improvement in speed.
Up to 2 McBSP Modules (Configurable as SPI)
Additional high speed communications ports.
16 x 16 Dual MAC
Having one of these is rare, having two means you can do a lot of concurrent basic calculations for your data. Having these available lets you keep your Floating Point operations for those that need it. You would be surprised how useful these can be once you learn how to use them.
One SPI Module
One more serial port, the more the better.
Harvard Bus Architecture
Standard for almost all computers. It is a tried and true method of fetch, execute, write results before next fetch.
One Inter-Integrated-Circuit (I2C) Bus
If you know how to use these, they are efficient to conduct multi-processor architectures.
Fast Interrupt Response and Processing
An absolutely essential feature if you are going to do real time event capture and processing. The last thing you want is an un-necessary delay in responding to timing events.
• 12-Bit ADC, 16 Channels
Twelve bits are more than enough accuracy for most signals. If you need higher resolution then you should consider some analog amplifiers and signal conditioning circuits.
Unified Memory Programming Model
I like this memory model a lot. It is in almost all TI processors and makes timing much easier as all operations take nearly the same time to execute. It also facilitates debug information transfer to external support equipment.
80-ns Conversion Rate
In a word “wow”. You can digitize a lot of data at high resolutions with these devices. Now you know why I an excited about the 320 core. It was built to support these kind of data rates. You can do a lot of neat stuff with this kind of data capability.
Code-Efficient (in C/C++ and Assembly)
TI has done a lot of work over the years to provide you with huge libraries of most signal and image processing routines. The amount of code available for the C2000 Piccolo is immense. You can even get access to the Assembly code if you think you need to tinker with some of the algorithms.
2 x 8 Channel Input Multiplexer
Very useful if you need to sample multiple data streams. If you look deeper into the specs, the switching time between channels is very small. Very cool.
Six Channel DMA Controller (for ADC, McBSP, ePWM, XINTF, and SARAM)
Once you learn how to use DMA, you will wonder how you every worked without them. Having six channels lets you move a lot of data without tying up the CPU doing memory actions. With DMA, it all happens in the back ground so the 320 can keep on chunking data while the data passes in or out.
Two Sample-and-Hold
When you get deeper into signal processing, you will always end up need a sample and hold circuit to capture rare signal or event occurrences. Given the other features of the chip, having two of these can be really useful.
16-bit or 32-bit External Interface (XINTF)
You can configure the GPIO pins so that you can read or write to 16 or 32 Bit interfaces with one instruction. Very useful if you need to pass a lot of data in or out of your system. Another wow factor.
Single/Simultaneous Conversions
Another useful feature if you have multiple data streams, then being able to maintain time synchronized conversions is essential.
Over 2M x 16 Address Reach
Sometimes you need to access a huge memory space to extract information from digitized signals. I need to dig into how well the C2000 Piccolo lets you add memory. I suspect that you can setup the GPIO pins to act as an address and data stream to link to an external memory bus.
Internal or External Reference
This statement reinforces my speculation about using the GPIO pins. Once set up, the C2000 Piccolo would treat any external bus as a part of the internal memory space.
On-Chip Memory
Standard for any high speed processing chip.
Up to 88 Individually Programmable, Multiplexed GPIO Pins With Input Filtering
If you have not looked into the TI input configurability, you should. They provide a wealth of simple things like interrupt capability, pull up or pull down resistors, rising or falling signal triggers, and a whole bunch more.
256K x 16 Flash, 34K x 16 SARAM
A little light for signal processing buffer space, but not bad.
JTAG Boundary Scan Support
Lets you plug in full JTAG debugging devices.
1K x 16 OTP ROM
Lets you setup your initial configuration and as you will see later, you can set it up with locking settings so that it cannot be re-engineered.
Advanced Emulation Features
Lets you explore your code without first committing it to the device.
Boot ROM (8K x 16)
Another essential feature when dealing with complex signals. You essentially need to set up your configuration before you can properly synchronize your decoding algorithms before you can begin to pull in and process the data.
Analysis and Breakpoint Functions
Normal debug features.
With Software Boot Modes (via SCI, SPI, CAN, I2C, McBSP, XINTF, and Parallel I/O)
Important capability if you want to use the C2000 Piccolo as a slave device on a larger system. I have seen dozens of the 320 DSP cores setup in a system for complex signal processing applications.
Real-Time Debug via Hardware
Another part of the standard JTAG debugging capability with some very nice features.
Standard Math Tables •
I cannot stress this feature enough. If you use any of the current engineering analysis tools, you need to make sure that your final code can go back and forth so you can enhance features or fix defects. Otherwise you need to run a separate debug and test on each set. Not an easy task.
Development Support Includes
Clock and System Control
Signal processing is usually TIME based, so having full control of timing and system control enables you to make the most of the C2000 Piccolo for complex signals.
ANSI C/C++ Compiler/Assembler/Linker
Some vendors tie you down with custom extensions and/or libraries. TI keeps to the standard call methods so that your code is portable.
Dynamic PLL Ratio Changes Supported
Phase Locked Loops (PLL) is one of those communications and data features that you need to learn and use. Having these features built in saves you a lot of time. Combined with fast sampling time this capability lets you maintain signal lock with very high precision.
Code Composer Studio IDE
TI keeps making the CCS more usable all of the time. They have added a lot of user interface support to version 5.2 that lets you build a lot of useful debug and monitoring tools your system.
On-Chip Oscillator
I like this feature a lot. Sometimes you end up with very odd crystal frequencies and you have limited space on your board to add them. TI gives you a good base frequency internal to the chip that lets you setup your internal timing to meet your application.
DSP/BIOS
TI has developed a very useful BIOS to support digital signal processing. They give you a lot of already integrated capability to quickly exploit the full features of the C2000.
Watchdog Timer Module
Another standard and essential features. You always need to keep track of your system. It is useless if it gets lost or accidentally reset. A good WDT keeps everything on track.
Digital Motor Control and Digital Power Software Libraries
These features lets you exploit the new LED lighting designs and the new brushless motors. Go to the TI website to see how much control you can have over the new motors.
GPIO0 to GPIO63 Pins Can Be Connected to One of the Eight External Core Interrupts
In English, this means that you can group GPIO pins into sets so that input on them can be handled with the same interrupt.
Low-Power Modes and Power Savings
It is nice to have these features, though you usually do not use power modes with DSP devices. That said, I can see how this feature could be very useful to setup timed data acquisition or transmitting using the DSP to encode or decode signals and then go to sleep to save power. Great for mobile devices.
Peripheral Interrupt Expansion (PIE) Block That support IDLE, STANDBY, and HALT Modes
TI has separated the processing portions of the chip from the IO portions. You can put the processor to sleep while you are waiting for an event to process. Very cool.
Supports All 58 Peripheral Interrupts
Another wow feature. Each IO pin can be used to generate different types of interrupts depending upon your needs.
Disable Individual Peripheral Clocks
TI gives you additional capability to control connected devices as needed. You could turn different time bases on and off, depending upon your application.
128-Bit Security Key/Lock • Package Option Protects Flash/OTP/RAM Blocks
Sadly in the modern world, we must make efforts to secure our devices so that they cannot be tampered with or used for other purposes. Luckily, TI provides the tools to secure your product.
Ceramic Pin Grid Array (GB)
I have to be honest, I have only a little idea as to why this is a feature.
Prevents Firmware Reverse Engineering •
Another way to help protect your intellectual property. In my day, we did not have to worry about this problem, but we are in less peaceful times then we were.
Temperature Range: Enhanced Control Peripherals – –55°C to 210°C
I do not think the delivered C2000 supports the full temperature range, but they do have parts qualified for those extremes. Unless your device is mobile and to be used in hostile environments, I suspect that most of us will not need to worry about these.
Up to 18 PWM Outputs
If you need robot servo control, all you can say is wow. It actually gets better, they use a very tight PWM waveform generation method so that your servos will be rock steady during use. I suspect that a lot of the robot builders will appreciate this feature.
So I hope you can appreciate the power and capability of the C2000 Piccolo.
I look forward to exploring its capability in detail as I experiment to see if it can meet my signal processing needs.
Now if you are new to MCU programming, I would not ask you to leap to the C2000 Piccolo line. Go to the MSP430 first. Learn Code Composer Studio and get familiar with the debugging features. When you think you have mastered the MSP430, you can begin to think about the C2000 Piccolo, but not before, unless you can take in a lot of information very quickly.
DSP programming takes a lot of skill and knowledge. Plus learning to deal with complex signals is not something that you should do unless you have taken a lot of mathematics and engineering classes. You need to be able to connect the software with the mathematics associated with your functions. Otherwise, you will not be able to understand what the C2000 Piccolo is telling you about the signals you are sampling.
For those of you who accept the challenge, the C2000 Piccolo will be an incredible experience in DSP programming.
Once you unlock its secrets, you will become empowered to many new things. Plus if you can demonstrate that you can use it effectively, it will greatly enhance your ability to get a good engineering job. DSP’s separate the men from the boys so to speak.
So ladies, if you find it hard to earn the respect of men engineers, being able to work and speak DSP will put you in a class way above those who cannot.
Just a thought,
DAB