Saturday, January 29, 2011

Welcome, Reddit readers!

Wow, one of my friends posted a link to my blog on Reddit.  Welcome!

The number of followers on my blog have gone up quite a bit -- I'm glad folks are interested.  Please take a few minutes to go back and read some of my first posts about my project to get a feel for what it's all about.

To quickly answer some of the questions/comments that came up in the Reddit thread:

  • Yes, I'm building a CPU out of discrete logic, primarily 7400-series.
    • I am "cheating" on the ALU by using 4x 74LS181 units -- though I hardly think that building an EEPROM program memory, register file, RAM unit, jump processing, and an I/O unit out of discrete components can be called "cheating".  Furthermore, who cares?
  • I'm not an EE, nor do I strive to be, so those of you that are will likely notice design flaws or inefficiencies that I won't see.  Feel free to point them out in the comments.
  • No, when this thing is done it won't run Minix or Linux or anything.  First off, it's a Harvard architecture, which would make porting any "real" OSes quite difficult.  Harvard architecture computers are more akin to the old IBM punched-card computers -- the program memory is separate from the computational memory.  Secondly, I'm not  a software developer, so porting an OS would be grievously difficult and not fun for me.
  • When it's all done, I plan to write a few simple programs in assembly language:
    • A loader that lets you select a program to run.  Being a Harvard architecture, all the programs will be on the EEPROM; the loader will just handle displaying a menu and letting you pick which one to run, and give the system somewhere to go once the program finishes.
    • A few simple games, such as Pong, maybe Tetris or something.
    • If I can get a serial port or maybe even an ethernet connection to work, it would be really awesome to write a text-based game like LORD or something and let folks on the internet connect to it and play.  I'd say that getting to that state would probably be the farthest I'd take the project.
  • Yes, I know it's been done before, in a hundred different ways.  In fact, it was projects like BMOW that gave me the confidence to think I could do it myself.
  • Yes, I am aware that there are things like FPGAs and microcontrollers and various other kinds of programmable logic that would make building something like this easier.  But what's the fun in that? I don't want to write a Verilog program describing a CPU and then simply compile it and upload it to some faceless chunk of silicon on a development board.  I wanted the visceral, pat-myself-on-the-back pride that comes with building something with my hands -- to create something from nothing.
  • There seem to be two distinct camps out there -- the "PCBs are lazy/cheating/etc" crowd, and the "If you're not designing PCBs you're doing it wrong" crowd.  Somehow, I'm somewhere in the middle.  As you can see from my posts, I'm dipping my toes in the PCB creation pool, and it's got pros and cons.
    • Pros
      • Can save hours of tedious soldering or wire wrapping when there are lots of connections to make.
      • Get it right the first time by designing in a schematic, with assurance that the end product will be wired up right.
      • Along with the above, avoids the dreaded "WTF just happened" after soldering 32 new wires down, and hunting in vain for the short that mysteriously appeared.
    • Cons
      • Time-consuming for simple designs
      • Complex designs really need to have vias and at least two layers to be feasible, and etching a two-layer board is beyond my this severely limits what I can do with PCBs.
      • Expensive -- everything from the copper clad boards to the etchant is expensive.  At least with point-to-point, the incremental cost is just a few dollars per board.
    • I suspect most of this project from this point forward will end up being a hybrid of PCB and point-to-point design.  PCBs will likely be etched for things like backplanes where there are a lot of parallel connections, and point-to-point boards will plug into the backplanes to get the more complex wiring.
I'm glad folks are interested -- I'll be sure to keep you posted with posts as I continue to make progress.  Stay tuned for info about the shift/jump unit.


  1. I'd have to look into the legality of shipping via something like UPS or FedEx, but I can send you a 2.5gal container of ferric chloride (etchant) for the cost of shipping (unless you're near Pittsburgh, PA). I work in water treatment, I've got a ton (well, 800lbs) of this stuff and it's just in my way.

  2. The DorkbotPDX club puts together a PCB group order every few weeks. End-user price: 26 cents per square centimeter, where each design is delivered three times per order.

    I've have a hard time beating that price via DIY, given how much less surface area is required to execute the same circuit on a professionally etched board.

  3. @B: Thanks for the offer, but I suspect the cost and complexity of shipping would come pretty close to the cost of just picking up a bottle at Fry's. I'm not really doing enough etching to need a huge vat of it.

    @Aret: Cool, I'll have to take a look at that. I also found, which has very low prices for professionaly built PCBs -- around $40-$50, and they will do single prints, which many will not.