I harbor a secret fantasy (oops, not so secret anymore) to build a simple computer from scratch. I'm looking for an easy-to-use microprocessor to start with. I know about the usual suspects such as the 6502, 68000, 8086, Z80, etc. But I'm wondering if something better is out there. Here's my wish list:
Must have:
- Low clock rate (4-25 MHz)
- No more than 40-60 pins, preferably in DIP configuration
- Ability to address around 64KB of memory, but up to 1MB or so would be good
- Stored-program architecture (not read-only instruction space) (Edit: this rules out most low-end microcontrollers, like the PIC and AVR)
- Flat memory model, not banked or segmented like the 8086
Would like, but not necessary to have:
- RISCy instruction set (load-store)
- General-purpose registers
- Assortment of TTL I/O pins
- Built-in flash ROM
What microprocessor or microcontroller would you suggest that's relatively easy to wire up and get the first ROM routines written for?
My goal is to get a simple Forth (or similar) system going. Just to say I did it.
Edit: After doing a bit of research, I think something like the ARM7 would suit me. It comes with a non-trivial amount of flash and SRAM to play with — sometimes as much as 256K flash and 64K SRAM — along with digital I/O, ADC, serial I/O, and more.
Here's one: the STR711 ARM development board.
Best Answer
I agree that ARM is the way to go for 32-bit microcontrollers. ARM is ubiquitous and its assembly language can be used across a broad range of microcontroller families. ARM also has good support from the GCC toolchain. The ARM7TDMI chip architecture has dominated the 32-bit mcu space the last 5 years and the ARM Cortex-M3 is the emerging replacement. The Cortex-M3 does have a Harvard architecture (separate instruction and data address spaces), but I don't feel that's a limitation.
Micromint has a solid reputation, and they offer a Cortex-M3 board with configurable options for a decent price. However, if you really need DIP configuration, I've had success with the mbed
Now, the next thing is languages. You mentioned FORTH. I also recommend Python-on-a-Chip and eLua as powerful, easy to learn languages that work on this size target platform. eLua is more fully developed but has larger resource requirements than Python-on-a-Chip. Full disclosure: I'm the author of the PyMite VM used in Python-on-a-Chip. So, if your goal is to make your own language, I fully understand the joy of that exercise.