1
\$\begingroup\$

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)

and,

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?

\$\endgroup\$
3
  • 3
    \$\begingroup\$ Maybe you could use an FPGA? \$\endgroup\$
    – Justin
    Commented Nov 25, 2014 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\$ Commented Nov 25, 2014 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
    Commented Nov 26, 2014 at 14:06

2 Answers 2

3
\$\begingroup\$

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.

\$\endgroup\$
5
  • \$\begingroup\$ Excellent explanation! Thank you. And this book, you wouldn't happen to want to part with it, would you? ;) \$\endgroup\$ Commented Nov 25, 2014 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\$ Commented Nov 25, 2014 at 22:22
  • \$\begingroup\$ Nothing a little googling won't find. Thanks for the book suggestion! \$\endgroup\$ Commented Nov 25, 2014 at 22:23
  • \$\begingroup\$ @OrangeCalx01 Aha! Found it! \$\endgroup\$ Commented Nov 25, 2014 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
    Commented Nov 25, 2014 at 23:25
1
\$\begingroup\$

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.

\$\endgroup\$
3
  • 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\$ Commented Nov 25, 2014 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
    Commented Nov 25, 2014 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
    Commented Nov 25, 2014 at 22:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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