Building Your Own Digital Device?
Skaven04 asks: "After finishing up my Digital Design class this semester I've suddenly got the urge to build something really cool. I'm leaning toward a processor/pda/calculator thingamajig. Not really a processor, considering that it wouldn't be following any set standards, like x86, but basically a machine that I can program with my own assembly language, have keyboard input, and (most likely) an LCD output (like on your TI85 or whatever). What I'm seeing in my head right now is an 8-bit design with an ALU (like the 74LS181) as the centerpiece and naturally a few 64K RAMs and various registers, counters, etc. as necessary to implement my command set. Has anybody else out there ever undertaken this kind of project? What are some sites I could visit to get a good outline of the best way to approach it? What are some good places to get the parts cheap? Any suggestions on displays? Links to similar projects?"
Son, once you graduate you'll have plenty of time to invent shit. Where were you gonna get your design fabbed by the way? It's not a cheap process.
Thanks,
Travis
forkspoon@hotmail.com
Probably a better option, though, will be to continue taking design courses. look into a computer architecture course. In mine, we made a non-pipelined CPU in VHDL. Also look into what you may do for your senior design course. This is where you'll get free reign over a lab and a budget from school.
For any project, the most important aspect is to have some clear objective.
A cool digital thingamajiggy just doesn't cut it. I'd say your first step is to get ideas for a purpose for your thingamajiggy first. Ask your fellow students and professors what they would like but can't find already made.
Once you have a purpose specced out, you can make a design to match that purpose. Even just making one modification to a design type can be cool. Like a calculator with a cool-looking or durable form factor (great excuse to play around with a plastic mold-maker), or unique input or output options.
Ultimately you should think about your end user and what will serve him or her best for some list of tasks. Design for the nontechnical humans.
I know I'm giving just added questions rather than options, but you will find when you get out of the classroom that in the best designs form follows function. Figure out the function and then design around that.
evanchik.net
Radio Shack! Duh!
As far as figuring out what you want to build... you've got questions they have answers.
:)
symetrix. We are building a religion, a limited edition.
You're obviously doing this for fun. Don't get any crazy ideas about making it useful for other people. There are far better and cheaper things you can get now. (think $100 palm)
/very/ nice line of flash 16 bit chips for under $20), hook it up to the LCD, slap a touchscreen on there, and you'll still have tons of room to add other gizmos.
So, for a display you can start off with the expensive $50 64x128 graphics LCD. (can't remember the source - email me), but I'd stay away from FPGAs or ASICs, they tend to suck current, and you'll be changing batteries every day. Look for an inexpensive 16 or 32 bit chip (mitsubishi makes a
-Adam
I understand what you are feeling. You've learned some cool stuff and now you want to do something with it. Think of it as a "hello world" program in hardware.
I remember going to a local college's "Engineering Fair" when I was in highschool. Lots of cool stuff:
A tic-tac-toe computer made out of discrete parts
A program which printed random poetry.
Various "Op-art displays on a monitor (This was in the early '70s)
...
A couple of suggestions:
Implement a simple two player game in hardware. Like the little poker calculators.
Check out sites like Viridian which have thingamajiggy design contests from time to time.
Don't listen to the people who tell you that this is a waste of time, or that you need someone to fab it, or whatever. Do it for fun. People who do these things for fun get smarter and make more money. They also have more fun. Don't worry about whether it's practical.
First, find a magazine store that sells Poptronics. This represents the last journal of a dying electronic hobbyist culture. Even if you don't get too many specific ideas, it will make you feel good.
For parts, there's Digikey. Also, many manufacturers will give you free engineering samples. Motorola is particularly good for this; they sent me for free the parts for my 7th grade science fair project just for my writing a letter to them. Also, don't discount Radio Shack. The selection is limited, but occasionally they have just the right thing.
Just for ideas, here is a list of cool things that I've built:
(This omits the purely analog devices and digital devices built with neon bulbs, which is all I could afford at one time.)
Here's a list of cool things I never got around to building:
Alas, after I achieved "respectable" adulthood and computers seemed an easier way to do most things, I've gradually kind of gotten away from tinkering. However, I'm glad I did it once. You'll be glad, too.
well, i've talked to skaven about this project. it's not so wide open sounding as he suggests. he has a general direction. but i don't think he's gonna say i'm going to make any specific processor or controller type until he's secure with a raod-map to completion... but knowing skav. he'll prob just jump in... :o)
and why wait til you graduate? then you'll get busy with work and crap. do it now, when you want, carpe diem - look what Linus did with Linux, what if he waited til he graduated to build his little toy OS...?
at least once you make a usable proc. your profs can help you with design, (maybe be some credit for some bigger/better project Sr. year!)
i still say go for it. Stupid crazy silly mad props if/when you get it running...
Try asking on the sci.electronics hierarchy.
I never finished this project, but I designed a simple CPU with about 4 16-bit registers and 4-bit instructions, sort of like Chuck Moore's chips.. except I was building it out of adders, shifters, latches, a 32k SRAM, etc. Brad Rodriguez actually built a processor from TTL chips and posted the plans at http://zetetics.com/bj/papers/
On further thought, I think it's cheaper to just play around with old PC's, handhelds, etc. rather than build your own. One lousy 128x64 LCD costs more than it should..
Tom Novelli
Serendipity and curiosity led to more useful inventions and discovery than necessity.
After all, Linus made Linux because he wanted to have fun.
My advice to this kid: Spend more time on this than you do studying. You'll learn a lot more, and plus, if you show this to a recruiter, and say you did it on your own time, you are almost guaranteed a *good* *fun* job. Better than a good grade in my book.
The radical sect of Islam would either see you dead or "reverted" to Islam.
I thought about this after my digital design class. I'd built a "single board" computer before with a whopping 2K of RAM and another 2K of EEPROM, so I wanted to make an expanded version with real I/O. Character LCD displays are really cheap, as in $7-$15 for small ones. Graphics displays might cost you $50-$100 for a small monochrome one. Check out Marlin P Jones for okay deals on surplus stuff.
For my own project, I decided that the display portion alone was difficult enough to merit an A in my lab, so I built a PIC microcontroller-based NTSC video game (Breakout -- check out the links at the bottom of the page for PIC Tetris!). Looking at Altera's UP1 FPGA evaluation board, displaying VGA at 640x480x60Hz with 16 colors isn't even very difficult (Altera UP1 at GA Tech). Try using a standard method of output like this, and you'll have a lot more fun and be able to do a lot more than with a $7 20x2 LCD module.
Input is pretty much the same. Sure, you could use a custom keypad, but why bother when you can interface with a PS/2 mouse or keyboard? Specs are widely available, and this will impress people much more than a row of DIP switches. This can be done on a relatively small FPGA (~20K gates) which Altera's university program sells on full development boards for $150.
For even more fun, try interfacing with compact flash for storage (Circuit Cellar Article). Then realize that you've just implemented a basic IDE interface, and expand it to do hard drives. Design a character generator for your NTSC or VGA output, write a simple filesystem, and have a whole computer with standard parts that you built yourself!
If that's still too intimidating, just look at company Application notes for ideas. You can find some strange ideas and take them all the way.
Be very careful about trying to do too much at once- you can quickly make a system that is just too complex to debug. Try to design in small, testable parts that you have the tools (scope, DVM, etc.) and the knowledge to debug. For this type of design, wire-wrap works great. It lets you try out things easily and make changes quickly. You will get things wrong, you will mis-wire, and so forth. Avoid high speed clocks (>10 MHz) at this point- they can throw all sorts of weird things in your way that are difficult to track down. Stay away from those white plastic proto boards that you can plug wires into- unless you are willing to run with very slow clocks (less than 1MHz), since the parasitic capacitances and leakages can also do very weird, unpredictable things.
I tried to do a similar project a few years ago with a dual-slope A/D converter. A project like this can be very useful in honing your design skills, but it can also very easily frustrate you. This is the project that makes me be very careful about what projects I tackle. You want to learn, but you also need some success in the meantime to keep you going.
For a design like this, something like an FPGA based project is a good idea since there are good simulation tools available, and you can very quickly re-design. Also, this will be a lot closer to what you will be doing in the "professional" world if you do go into digital design. The tools are expensive, but you may be able to get discounts or borrow from your school or the local FPGA rep (Altera and Xilinx are the two that come to mind). They know that once you graduate, you may have infuential power over design decisions, so they will be willing to listen.
There is a bunch of work available at www.opencores.org, which I would guess is a really good place to get some ideas. It's rare that these things will just work out of the box; but it seems like the point here is personal education, not agressive schedules, customers, and deadlines. I always find good value in seeing how others have written their designs; whether those designs are good or bad. Experience is always the best teacher!
Try to find old copies of older (1970s, early '80s) TAB Books - especially the robot books by David L. Heiserman or Frank DeCosta (actually, look for some of my earlier posts on these books - I give all of the ISBN info in them). These give a ton of design info - on the Heiserman books details a full 8 bit processor design based around the 8080 (I think that is right).
/. article - I remember the design was pretty monstrous, but was exactly what you were trying to do. If I find it, I will post to this thread...
Anyhow, I know you want to go even deeper from scratch, and get down into the dark and dirty underworld of processor design. If that is what you want to do, go for it - I am sure it would be an interesting thing to do to design your own CPU and instruction set.
I tried to find a link to a site that had such a design up - I remember I found the link in another
Reason is the Path to God - Anon
I highly, highly recommend looking at http://www.fpgacpu.org. (I have no affiliation with this site, never even joined the mailing list, but I've learned tons looking around there.)
I've had this sig for three days.