MSP430 CPU core in VHDL based on the MSP430F1xx Family

MSP430 CPU core in VHDL based on the MSP430F1xx Family


Category: Processor

Created: April 24, 2014

Updated: January 27, 2020

Language: VHDL

Other project properties

Development Status: Beta

WishBone compliant: No

WishBone version: n/a

License: LGPL


This is an MSP430 CPU core in VHDL I created in 2010 as a feasibility project, based on the MSP430F1xx family.
The code is intended to be simple and efficient, the CPU itself is in a single file (cpu.vhd) including the state machine, memory interface with instruction decoder, register block, ALU and interrupt controller. The other files are for simulation and testing. Sys.vhd is an example main entity for synthesis in Altera Quartus II, tb.vhd is for simulation in Modelsim, VHDL Simili, etc.
"cpu instruction processing.xls" helps to understand the design.
Address space is 32k x 16bits, works with synchronous memory embedded in the FPGA.
Instruction cycle time compatibility with real MSP430 uC-s is not guaranteed.

Comprehensive verification was not done, only tested some of the instructions on a development board with Altera Cyclone II. The example code flashes the colors on a 800x600 VGA display.
Procedure to run software on the uC:
1. compile an assembly code with IAR Embedded Workbench for MSP430 (example in iar_test folder, asm.s43->test.a43).
2. convert the IAR output hex file to an Altera memory initialization file with hex2mif.bat (test.a43->ram_init.mif).
3. use ram_init.mif in the Quartus II project to initialize the RAM.