There's this thing called the weird processing unit, or WPU. It's basically an idea of various experimental processors (architectures) that try to be interesting, new, original, extraordinary, different or just plain weird. I'd like to build my own WPU, but just how could one go about doing this without:

A) Cutting too many corners with microcontrollers (I don't consider a single microcontroller programmed to emulate instructions as a computer)


B) Spending too much money on it.

With most hobby home-built computers that don't use a microprocessor, microsequencers are used. They use counters, eeproms, and gates to generate addresses for a control store that generates signals to control the processor.

My question is: Would it be considered cheating if I used a microcontroller to send control signals to peripherals such as an ALU, register file, etc. What are your thoughts?

  • 3
    \$\begingroup\$ Maybe you could use an FPGA? \$\endgroup\$ – Justin Nov 25 '14 at 22:09
  • \$\begingroup\$ Using an FPGA would be wonderful, but (and yes, I'm serious) the closest thing to a PC I have is a raspberry pi; I don't know if software exists to code an FPGA or CPLD. I'm able to write and run code for arduino and the parallax propeller. \$\endgroup\$ – OrangeCalx01 Nov 25 '14 at 22:17
  • \$\begingroup\$ Looks like you can maybe get a used laptop on ebay for under $50 (e.g., ebay.com/itm/…), so I wouldn't let that be a major limiting factor. \$\endgroup\$ – Justin Nov 26 '14 at 14:06

I don't think it would be cheating at all. That's what microcontrollers were originally designed for, after all. Nowadays, we treat microcontrollers as fully programmable computers (small ones), but they were originally built as microprogram controllers. If you use one that way, you can build all the registers of your system (the "architecture") in the conventional way, with flip-flops. The microcontroller then acts as literally the "controller" of the system, switching over multiplexers and enabling the clock input to the flip-flops.

I have a really good book on this, but it's at the office right now. The main theme is to build a PDP-8 using registers and microcode. I'll look up the title and author tomorrow.

UPDATE: The book is "The Art of Digital Design", by David Winkel and Franklin Prosser. ISBN 0-13-046607-7. Published by Prentice-Hall, 1980.

  • \$\begingroup\$ Excellent explanation! Thank you. And this book, you wouldn't happen to want to part with it, would you? ;) \$\endgroup\$ – OrangeCalx01 Nov 25 '14 at 22:20
  • \$\begingroup\$ @OrangeCalx01 No, but I bought it from an on-line secondhand bookseller. I expect they'll have more copies! Darnit, I wish I could remember the title! \$\endgroup\$ – John Honniball Nov 25 '14 at 22:22
  • \$\begingroup\$ Nothing a little googling won't find. Thanks for the book suggestion! \$\endgroup\$ – OrangeCalx01 Nov 25 '14 at 22:23
  • \$\begingroup\$ @OrangeCalx01 Aha! Found it! \$\endgroup\$ – John Honniball Nov 25 '14 at 22:43
  • 1
    \$\begingroup\$ "The Art of Digital Design" is wonderful. I spent a lot of time with a PDP-8 in college so it was a bit of nostalgia for me. I bought a used copy of the book via Amazon earlier this year. Would like to spend the time implementing their design on my Spartan-3 FPGA development board. \$\endgroup\$ – tcrosley Nov 25 '14 at 23:25

If execution speed isn't important, you might be able to use a parallel flash chip for microcode storage, and some glue logic and/or a CPLD as to build a sequencer. Since many CPLD devices have a limited number of bits of internal storage, you may wish to augment that by adding some shift-register chips. It really wouldn't take a whole lot of logic to make a CPU which could, slowly, interface with a RAM (using a serial-to-parallel and parallel-to-serial converter) and could thus behave as a very slow general-purpose CPU.

  • 1
    \$\begingroup\$ Speed and practicality have been thrown out the window in the WPU philosophy. But I don't have the means of programming a cpld. Though how hard would designing a flash chip programmer be with an arduino? Hmmm... \$\endgroup\$ – OrangeCalx01 Nov 25 '14 at 22:22
  • \$\begingroup\$ Programming a CPLD is easier than programming a parallel flash chip; basically, you need a clock output wire, two data output wires, and a data input wire. Some CPLD manufacturers will specify exactly what needs to be sent on the wires to program the device. \$\endgroup\$ – supercat Nov 25 '14 at 22:43
  • \$\begingroup\$ In any case, I'd suggest an overall design a bit like the Woz Machine (Apple II floppy drive controller), but bigger. Building such a thing entirely out of discrete logic would be a nuisance, but hardly unworkable. The biggest advantage of using a CPLD would be the fact that it could probably be made to program the flash chip in-circuit; that would be harder if you were using discrete logic. \$\endgroup\$ – supercat Nov 25 '14 at 22:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.