Building Your Own Digital Device? 35
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?"
This is called "working" (Score:1, Insightful)
Thanks,
Travis
forkspoon@hotmail.com
Re:This is called "working" (Score:1)
Re:This is called "working" (Score:1)
i have to laugh at all the people here who are trying to work out the costs and marketing issues with creating a "product".
this isn't an inventer folks, he's a hacker. he want's to learn digital design in the best way possible - by doing it.
work (Score:3, Interesting)
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.
Re:work (Score:1)
And I'm not really interested in becoming a computer architect; I just want to build a device that I can tinker with in my spare time...
Re:work (Score:1)
If you're thinking transistor level design, look into some BEAM robots (Mark Tilden is the originator). They can do some really cool stuff with just a few transistors. Solarrobotics is a good sight to check out from there.
Before you try to accomplish something too complicated, you may want to start with something easier. For example, making an ALU on a bread board is definately doable.
Spec it out (Score:4, Insightful)
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.
Re:Spec it out (Score:1)
Re:Spec it out (Score:2)
Should it be durable? Will you want to take it to the beach, operate it in a rainstorm?
How small does it need to be, do you have to fit it in a pocket?
How about lighting? Do you want to be able to use it without additional lighting? Can you use it in a dark room? Will the input be illuminated?
Will it be useable in very bright conditions (some LCDs wash out in sunlight?
Power consumption? How long should you be able to operate it without a recharge? Will it use batteries?
And will you want it to be upgradeable? Will you want input other than keyboard? I would suggest at least some sort of link, like a serial port, or something, if you have to input lots of data. You don't want to have to manually input a large data array.
And how about output? (this can usually be combined with your input) Do you want to download results or work unto another computer?
It sounds like you want a mobile programming platform, sort of like a handheld dumb terminal.
Anyway, it sounds like a cool project and I wish you the besty of luck. Just make sure you explore all the design questions before you break out the soldering iron, becase by then you're probably already committed to the design.
And of course, you'll learn from your mistakes, so set a schedule and deadline. You can always make another one after the first, but you need to complete the first on first.
Re:Spec it out (Score:1)
Re:Spec it out (Score:2)
Re:Spec it out - BAH! (Score:1)
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.
Re:Best place to get parts? (Score:2)
Is radio shack the only retailer that sells electronic parts piecemeal? What are the good, reliable vendors on the 'net?
Re:Best place to get parts? (Score:1)
EPO and Fry's has the stuff too...need to go by and check prices.
Re:Best place to get parts? (Score:1)
If you want ideas for a project, hanging around in the back of Radio Shack might get you started, but I'd encourage you to read manufacturer app notes. Phillips has all sorts of consumer audio/video stuff you could build all laid out in their app notes.
Check out things like the PIC or SX microcontrollers. For ~$10 you and the price of a cheap ROM programmer kit, you can have incredible design flexibility
Yeah, there's a certain appeal to using lots of 74xx chips, but there's really no reason to when it's smaller, cheaper, and much more flexible when you put it on a microcontroller. And VHDL/Verilog may both suck at first compared to the beauty of _real_ hardware, but their potential for semi-intelligent glue logic between your microcontrollers, memory, system busses, etc cannot be overlooked. And, unlike 74xx's, you can rewire without laying out your entire circuit again.
Re:Best place to get parts? (Score:2)
Have fun! (Score:2)
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
Re:Have fun! (Score:1)
Re:Have fun! (Score:3, Informative)
The current ratings on the web site are wrong, check out the data sheet first. Very low power.
As far as designing your own chip, the only suggestion I'd have is to pay very careful attention to power consumption which is (relatively) very high for nearly every configurable chip you can get. You may end up looking towards CPLDs.
-Adam
Re:Have fun! (Score:1)
hello world (Score:2)
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 [viridiandesign.org] which have thingamajiggy design contests from time to time.
Go for it! (Score:1)
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.
uP construction (Score:1)
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...
Re:uP construction (Score:1)
;-)
Design Ideas (Score:1)
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 [mpja.com] 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 [uiuc.edu] -- 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 [gatech.edu]). 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 [chipcenter.com]). 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.
Build up in a modular sense (Score:2)
I tried to do a similar project a few years ago with a dual-slope A/D converter [hazmat.com]. 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.
Check out opencores.net. (Score:1)
Want some real fun? (Score:2)
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
Great Resource (Score:1)