NEO430 Puts A Custom MSP430 Core In Your FPGA

We are certainly spoiled by all the microcontroller options nowadays — which is a great problem to have. But between the good old 8-bit controllers and an increasing number of 32-bit varieties, it almost seems as if the 16-bit ones are slowly falling into oblivion. [stnolting] particularly saw an issue with the lack of 16-bit open source soft cores, and as a result created the NEO430, an MSP430 compatible soft processor written in VHDL that adds a custom microcontroller to your next FPGA project.

With high customization as main principle in mind, [stnolting] included a wide selection of peripherals and system features that can be synthesized as needed. Not limiting himself to the ones you would find in an off-the-shelf MSP430 controller, he demonstrates the true strength of open source soft cores. Do you need a random number generator, CRC calculation, and an SPI master with six dedicated chip select lines? No problem! He even includes a Custom Functions Unit that lets you add your own peripheral feature or processor extension.

However, what impresses most is all the work and care [stnolting] put into everything beyond the core implementation. From the C library and the collection of examples for each of the controller’s features, so you can get started out of the box with GCC’s MSP430 port, to writing a full-blown data sheet, and even setting up continuous integration for the entire repository. Each topic on its own is worth looking at, and the NEO430 offers a great introduction or reference for it.

Of course, there are some shortcomings as well, and the biggest downer is probably the lack of analog components, but that’s understandable considering your average FPGA’s building blocks. And well, it’s hard to compete with the MSP430’s ultra low-power design using an FPGA, so if you’re thinking of replicating this watch, you might be better off with a regular MSP430 from a battery lifetime point of view.

18 thoughts on “NEO430 Puts A Custom MSP430 Core In Your FPGA

  1. The NEO430 is great, I used it with the MAX1000 Board and for me it is by far the easiest all in one softcore I have tried. It has a nice UART bootloader so one can easily deploy new software images while coding. An when youre done you can change one generic flag and the HEX will be embedded as ROM in the Bitstream.
    Even just reading the documentation is worth it!

  2. While I understand that there might be a use for 16-bit soft core CPUs in an FPGA due to balancing requirements and the number of logic gates used, but is there much sense in 16-bit microcontrollers anymore? On the low end, there are numerous 8-bit devices at ridiculously low prices, and then there’s 32-bit devices, while not quite as cheap, still can be had at very low cost with impressive performance. Is there really such a spread between those two where its worth bothering with 16-bit parts?

    1. In this article, where it’s specifically talking about the MSP430 core, there are two parts to answer your question.

      1: Does the MSP430 core make sense in an FPGA? Kindof. A 16-bit core will likely have significantly higher code density and per-clock efficiency than an 8-bit or 32-bit core if you’re talking about microcontroller-level functionality. You’re not likely to need better than 16-bit precision or a 16-bit address space, but you likely would need more than 8-bit. I’m still not a super-big fan of the NEO430 core because I’ve usually found if you’re space-optimizing, it’s typically better to go with cores specifically designed for the FPGAs themselves.

      2: Do MSP430s make sense in physical microcontrollers? Yes, definitely – because TI makes them, and they make them with certain features and peripherals that aren’t found in any other microcontroller. The FRAM series gives you ludicrous amounts of RAM with zero power consumption, and the I2C peripherals are actually intelligently-designed for low-power devices. TI’s also the only company to actually make properly-rated extreme-temperature range microcontrollers that you can just buy.

      It’s not really about 8-bit/16-bit/32-bit, it’s all about the actual architecture.

  3. Is this legal? It seems to me that Texas Instruments would at least copyright (if not patent) something like the MSP430 instruction set architecture (ISA); doing so would make the MSP430 design TI’s intellectual property (IP), at least for a number of years.

      1. If it s copyrighted, it won’t be run out anytime soon.

        I like the MPS430 when they first showed up – FLASH, JTAG debugger etc. Strangely haven’t done any coding for one. Comparing those early generation with more up to date 8-bit micros (not even low power series) or ARM that I actually use, the power saving isn’t enough to make me want to try it. I have samples of old parts and debugger.

        1. Copyright only protects expressions of an idea, such as the original mask set, or associated documents. It does not protect the idea in general, or original implementations by someone else.

          1. The mnemonic could also be copyrighted.

            >Because Intel claimed a copyright on their assembly mnemonics,[26] a new assembly syntax had to be developed for the Z80.

            [26] – “8080A/ 8-Bit N-Channel Microprocessor”. Intel Component Data Catalog 1978. Santa Clara, CA: Intel Corporation. 1978. pp. 11–17. All mnemonics copyright Intel Corporation 1977

    1. @Drone said: Comment to my OP… I think I should have added that for Copyright, a License is also needed. So maybe TI Copyrighted the ISA (for example) but that Copyright should be accompanied by a License. The Copyright turns the ISA into TI’s IP, but with a generous License anyone may be able to use the Copyrighted IP with certain conditions stated in the License. Example TI would Copyright the ISA while at the same time allowing anyone to use it for any purpose with or without attribution by attaching a (e.g.) BSD License. Warning, I’m an EE, not a Lawyer.

  4. Its not a MSP430 clone, the NEO430 merely uses the same instruction set. I’ve used a few versions of the core thus far and it was fine. I had to modify it to get it working on a Microchip/Microsemi/Actel Igloo2 though since the RAM initialization at configuration differs between SRAM and Flash based FPGAs . Also had to add an AHB lite interface

  5. The 430 is a beautiful processor, and just like it’s father, the PDP11, the 16 bit address space it its ultimate undoing. Having said that, and because of that, it is the perfect replacement for 8 bit processors.

  6. To be precise the MSP430 failed (2+ decades ago) when they came out with the CPUX IS. The problem they created was the IS had 20bit addressing instead of 32bit. The “thing” with the CPUX IS is it was “easy” to make the ad hoc hack instead of spending effort to realize that the scale of the architectures would grow. Otherwise it might have been MSP430 CPUX processors instead of ARM running cell phones for a while.
    Think about the early cell phones and what humble processors they used and it will make sense. The ARM took hold in the industrial sector slowly but came as a storm when it came to the cell phone. MIPS was a mess thanks to a certain person so it was no longer a contender as an architecture for a long time.
    There were good and bad things about the MSP430, that’s all I can really say. Most of the bad had nothing to do with the architecture sadly and had to do with how TI handled aspects of documentation. Oh and the MSP430 was full 16bit just had some limited forethought in it’s original IS design (LOL sounds familiar).

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.