• Stars
    star
    206
  • Rank 189,386 (Top 4 %)
  • Language
    C
  • Created about 11 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

MCPU - A Minimal 8Bit CPU in a 32 Macrocell CPLD

MCPU - Minimal CPU for a 32 Macrocell CPLD

MCPU is a minimal cpu aimed to fit into a 32 Macrocell CPLD - one of the smallest available programmable logic devices. While this CPU is not powerful enough for real world applications it has proven itself as a valuable educational tool. The source code is just a single page and easily understood. Both VHDL and Verilog versions are supplied. The package comes with assembler, emulator and extensive documentation.

This is an old project from 2001. Since it still seems to be of interest to many, I migrated it to Github for easier maintenance. Please refer to the original project description (pdf) for further information.

Addendum

A very nice write up on this design can be found on the blog of Jean-Claude Wippler here. --Nov 10th, 2018

Version History

  • v1.0x - 2001
    • Released on university homepage
  • v1.06b - 2008
    • last release on opencores.org
  • v1.1 - 2013/06/23
    • Initial release on github
    • Converted readme to markdown
    • Included bugfixed verilog version submitted by A. Wood.

Archive content

ASM/
	- example programs.
	- simulator.
	- include file for smal.
	- smal.exe - see license for smal !
VHDL/
	- VHDL source of CPU.
	- VHDL testbench.
	- Memory files.
	- The testbench requires a simple sram implementation.
          I used this one: 
          http://tams-www.informatik.uni-hamburg.de/vhdl/models/sram-simple/sram64kx8.vhd          
 	  From the Hamburg VHDL archive (http://tams-www.informatik.uni-hamburg.de/vhdl/)

verilog/
	- Verilog conversion of CPU source 
	- A small Verilog testbench

SMAL-source/
	- SMAL sourcode.

SIM-source/
   - WIN32 Simulator sourcecode. Porting to other platforms should be easy.

License

SMAL license:

/* smal32.c   language: C
   copyright 1996 by Douglas W. Jones
                     University of Iowa
                     Iowa City, Iowa  52242
                     USA

   Permission is granted to make copies of this program for any purpose,
   provided that the above copyright notice is preserved in the copy, and
   provided that the copy is not made for direct commercial advantage.

   Note: This software was developed with no outside funding.  If you find
   it useful, and especially if you find it useful in a profit making
   environment, please consider making a contribution to the University
   of Iowa Department of Computer Science in care of:

                     The University of Iowa Foundation
                     Alumni Center
                     University of Iowa
                     Iowa City, Iowa  52242
                     USA
*/

The other source is licensed under GPL2.

I am always interested in possible uses and modifications to it. Let me know what you are doing with it.

More Repositories

1

light_ws2812

Light weight library to control WS2811/WS2812 based LEDS and LED Strings for 8-Bit AVR microcontrollers.
C
940
star
2

BitNetMCU

Neural Networks with low bit weights on low end 32 bit microcontrollers such as the CH32V003 RISC-V Microcontroller and others
C
215
star
3

PCBFlow

VHDL to Discrete Logic on PCB Flow
Python
109
star
4

RealCandle

Analysis of the flicker pattern of a real candle
MATLAB
91
star
5

Nanite

Nano-Sized ATtiny85 devboard with USB Bootloader
C
88
star
6

TinyTouchLib

ANSI-C Library for touch-button input on ATtiny AVR microcontrollers with integrated ADC
C
75
star
7

CandleLEDhack

Candle LED reverse engineering and emulation
C
73
star
8

SimPad

Work towards an open source programmer for Padauk MCUs
C
70
star
9

u-wire

Smallest possible USB compliant device with V-USB
C
66
star
10

uTFT-ST7735

Small memory footprint library to control ST7735 TFT Displays
C
42
star
11

MisguidedAttention

A collection of prompts to challenge the reasoning abilities of large language models in presence of misguiding information
41
star
12

TinyTouchButton

A touch controlled light with 4xWS2812 RGB LEDs and ATtiny 10
C
34
star
13

BitNetPDK

A proof-of-concept (hack) to implement neural network inference on a very tiny 8-bit microcontroller.
C
32
star
14

USBasp-t

USBasp for ATtiny85
Assembly
31
star
15

Dice10

Tiny electronic dice based on ATtiny10
C
20
star
16

LPC812breakout

Breakout Board for the LPC812 MCU
Prolog
17
star
17

Gluon

A size optimized bootloader and software library for the AVR ATtiny
C
17
star
18

Gen2-Addressable-RGB

Analysis of the Gen2 Addressable RGB protocol
C
12
star
19

tinytapeout_mcpu5

8 bit CPU optimized for the constraints of tinytapeout
C
9
star
20

Addressable_7-Segment

Addressable 7 Segment Display based on the Padauk PFS154 Microcontroller
C
4
star
21

LLM_HDL_Design

Some hardware design experiments using large language models
Python
2
star