I am looking to develop my own 8 bit computer with a really basic instruction set.

I do not know however what the best IC is to be able to perform this job.

Could I utilise an Arduino to act as the Memory Address Register/RAM to hold the instructions? Or maybe an ATTiny, or are there better ways?

  • 2
    \$\begingroup\$ You have asked a series of questions about this project: 1, 2, 3. You really should be having this conversation with the designer of the SAP-1, not us. Most people would not consider the SAP-1 to be a true "computer" because it does not appear to have any means to make a decision based on data (i.e., conditional branching); it simply executes a fixed sequency of instructions over and over again. \$\endgroup\$ – Dave Tweed Jul 29 '13 at 11:07
  • \$\begingroup\$ The questions I'm asking are not specific to that architecture, that is just an example. Sorry. \$\endgroup\$ – Jacob Clark Jul 29 '13 at 11:19
  • 4
    \$\begingroup\$ In that case, your questions are too broad, and have many different possible answers. SE is not the place for such questions. You first need to figure out what exactly it is you hope to learn from your project, and then decide what system architecture and implementation technology will best help you meet your goals. At the moment, it doesn't seem like you've had much exeprience programming existing computers, so jumping straight into designing a computer seems like a bit of a stretch. \$\endgroup\$ – Dave Tweed Jul 29 '13 at 11:38
  • \$\begingroup\$ Actually I'm a senior software engineer so for you to make that assumption is ludacris, I'm asking questions regarding technical electronical components, not something I do in my every day life as an Objective-C developer, no? \$\endgroup\$ – Jacob Clark Jul 29 '13 at 11:41
  • \$\begingroup\$ How much assembly-language programming have you done? That's where you really get a feel for the tradeoffs between hardware and software. Also, you haven't filled in your profile, so there's no way I could have known anything about the context in which you ask your questions. \$\endgroup\$ – Dave Tweed Jul 29 '13 at 11:44

Doing it with a microcontroller "feels" wrong: you might as well program the microcontroller! If you're building your own computer for learning purposes, there are two basic approaches:

1) Discrete 74 series logic. You can get an ALU: http://www.taydaelectronics.com/74ls181-74181-arithmetic-logic-unit-function-generator-ic.html and some flip-flops. This approach is hands-on and can be debugged (slowly) with a logic probe or basic multimeter. It will also involve a lot of wiring. The parts are effectively obsolete but still seem to be available.

Discrete RAM: digikey parameterised search suggests this 32Kbyte SRAM, good for speed of a few MHz. (Note: do not attempt high speed digital logic on breadboards; anything above 1MHz is likely to have trouble).

Registers/Program counter: flip-flops

Programming (in order of authenticity/effort): Toggle it in manually with a set of switches; or build a small ROM from diodes; or build a paper or magnetic tape loader; or program an EPROM; or get an Arduino to pre-fill the SRAM.

2) Use an FPGA, and write it in Verilog or VHDL. This focuses effort on the "design" side rather than the "construction" side, and can be more easily simulated on a PC to validate your design. It's much, much more flexible. The only downside is that the result is still a black blob, albeit one where you understand the internals.

For this case you could more easily program it by embedding a ROM image, and use the FPGA's internal block RAM.

  • \$\begingroup\$ Yes, however where would I use the Program Counter, MAR/RAM & Registers? How would I program the device? \$\endgroup\$ – Jacob Clark Jul 29 '13 at 8:55
  • \$\begingroup\$ See edits. I'm a bit confused by "where would I use" - what do you mean by this question? \$\endgroup\$ – pjc50 Jul 29 '13 at 9:09
  • \$\begingroup\$ See also electronics.stackexchange.com/questions/45263/… \$\endgroup\$ – pjc50 Jul 29 '13 at 9:09
  • \$\begingroup\$ Physical component wise, what component would I use to hold the Instructions in Assembly Lang? \$\endgroup\$ – Jacob Clark Jul 29 '13 at 9:10
  • 1
    \$\begingroup\$ @Jacob: instructions are typically stored in RAM. You could use paper tape but that would be very archaic. On most primitive computers you load instructions into RAM using physical toggle switches on a front panel. \$\endgroup\$ – RedGrittyBrick Jul 29 '13 at 14:36

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