How can I make my own microcontroller?

How can I make my own microcontroller? I did some work using GAL chips and programmed the chip to execute simple commands like add, load, move, xor and output, but I would like to do something more like a real microcontroller.

How can i do this? I read a little about FPGA and CPLD, but not really, and therefore I was looking for some tips on what to get and how to start developing on it.

+42
embedded microcontroller
Mar 10 '09 at 23:29
source share
9 answers

Have a look here for a good wiki book. I had some term paper that I wrote when I taught Electronic Eng, but I could not find it. When I taught, most students were happy to use circuit capture tools in the Xilinx Foundation. Now they have switched to ISE and WebPACK. You can download WebPack for free, which is useful, and it has schematic capture and simulation.

If you really want to shine, study VHDL or Verilog (VHDL seems to be more common where I worked, but this is just a small number of places) and code the design, not enter it through the graphical interface.

If you don’t know anything about the development of digital logic (and some HDLs), I can say that you can have a somewhat functional 8-bit microprocessor that mimics VHDL after about 2 days. At that time, you are not going to build something incredibly fast or extremely powerful, but it is a good starting point for growth. If you need to learn about digital design, think about how the tools work and mimic some basic logic diagrams in a couple of days before moving on to uP design.

Start learning the basics of digital systems and how to build a binary adder. Proceed to building an ALU to handle addition, subtraction and / or xor, etc., and then a sequencer to read operation codes from RAM and feed them to the execution unit.

You can get an idea of ​​the design of the instruction set, but I would recommend starting REALLY simple, until you have a head around what is happening, then throw it away and start with something more complex.

Once you simulate a design well, you can appreciate its complexity and buy a suitable device. You should look at the device family development system that you have chosen. Choose a device more than you need for development, because it's nice to add additional tools for debugging it when it starts, and you will almost certainly not optimize your design in the early stages of receiving it on the device.

EDIT: Colin Mackenzie has a good tutorial on uC design and some FPGAs, as well as other things.

+25
Mar 11 '09 at 5:54
source share

Perhaps you should take a look at OpenCores.org , the smithy’s site for developing the core open source IP address. Also, consider preparing a development plan for yourself, for example, one of them , to play with it.

Most of the instrumental ecosystem revolves around VHDL , although Avalda is working on tools to compile F # for FPGAs.

+13
Mar 10 '09 at 23:38
source share

Once I saw a tutorial that stepped through the creation of a machine from TTL chips. It had the same set of commands as the PDP-8, which is very important - and I mean very - simple, so the real machine architecture is easy to implement in this way.

Frequently Asked Questions PDP-8 mentions the book: The Art of Digital Design, Second Edition, Franklin Prosser and David Winkel (Prentice-Hall, 1987, ISBN 0-13-046780-4). It also mentions people who implement it in FPGA

Given the exceptional simplicity of this processor architecture and the availability of PDP-8 code or reference implementations, this may be a good starting point for warming up.

Alternatively, a friend of mine implemented the thumb (ARM abbreviation) on FPGA as a university project run by one Steve Furber (an outstanding Acorn graduate). Given that it can be compressed into a format small enough for a university project, this could also be a good start.

+7
Mar 11 '09 at 16:29
source share

To play with soft-core microprocessors, I like Digilent's Spartan 3 Starter Board just because it has 1M of static memory. You know, SDRAM and DDR RAM are more complicated.

LEDs, switches, and a simple serial interface are a plus for debugging and messaging.

As someone has already pointed out, OpenCores.org is a good place to look for working examples. I used Plasma uC to write some documents at the university.

+3
Mar 12 '09 at 16:03
source share

A microcontroller can be as simple as a ROM (instruction * 2 ^ x + (synchronization phase) is an address, outputs are control signals, and you are good to go). Or it could be a sophisticated three-arm Harry Beast with branch prediction support hardware.

Can you give more details about your aspirations?

+1
Mar 10 '09 at 23:38
source share

After searching for some very useful links for all of you, I came across this Wikiversity course.

One of the first sentences: "Have you ever thought about creating your own microprocessor?"

+1
Mar 11 '09 at 16:19
source share

Xilinx has MicroBlaze and a soft PicoBlaze controller for its FPGAs. The latter is free, while IIRC, Microblaze is paid.
As the name implies, PicoBlaze is a small processor that has its limitations, but OTOH is compact enough to run on CPLD . In any case, a good processor to get you started.
Pablo Blair is compatible with PicoBlaze PacoBlaze . PacoBlaze was written in Verilog (which, as Adam said, is less common than VHDL).

+1
Apr 18 '09 at 19:56
source share

You need big fpga for small mcu.

You need fpga with the right hardware blocks if you need things like AD.

You need a soft core to insert it into fpga.

But how about just playing with a regular MCU before this project, so you know where you are going? How about some AVR: s from Atmel.

0
Mar 11 '09 at 6:04
source share

You can get free pic microcontroller samples on this site. The last thing I knew, you do not even need to pay for shipping.

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=64

-four
Mar 10 '09 at 23:39
source share