mcx16

 

mcx16 is a free 16-bit microcontroller written in VHDL.  It was inspired by PicoBlaze, written by Ken Chapman at Xilinx.  mcx16 is tested on Xilinx FPGAs, though the core VHDL should be portable.  Some of mcx16′s features:

  • 16-bit addresses, data, port addresses and ports
  • Can use 1 (non-pipelined) or 2 (pipelined) clocks per instruction
  • 74MHz (74 MIPS) on a Spartan 3 XC3S200AN-4 non-pipelined, and 119 MHz when pipelined (59 MIPS), using 110/114 slices (area optimized, 16 registers, 32 deep stack, 512 word program, distributed stack)
  • 107 MHz (107 MIPS) on a Spartan 6 XC6SLX9-2 non-pipelined, and 166 MHz when pipelined (83 MIPS), using 46/41 slices
  • Pipelining, register count (1 – 256), stack depth (1 – 65536), and program memory size (1 – 65536 instructions) are all user-set generics
  • Cross-platform assembler
  • Optional JTAG loader using Kris Chaplin’s technique and cross-platform Xilinx tools

You can view the documentation alone, or download the complete package. Enjoy!

Documentation: mcx16.pdf

Complete package: mcx16.zip

An example of mcx16 built on the Avnet Spartan-6 LX9 MicroBoard is also available:

Demo documentation: mcx16s6mb.pdf

Demo package: mcx16s6mb.zip

UPDATES

2011-12-23: Updated packages and documentation with Virtex 4 support
2011-11-24: Updated packages with newer mcx16uart.vhd (changed while loop to a for loop to avoid implementation errors)
2011-11-23: Updated mcx16s6mb.zip with corrected mcx16s6mb.vhd (a stray process label was removed).

 Leave a Reply

(required)

(required)


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>