Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!

 



Forgot your password?
typodupeerror
×
Hardware

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 discussion has been archived. No new comments can be posted.

Building Your Own Digital Device?

Comments Filter:
  • 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
    • I wasn't planning on making anything permanent. I'm all about just laying it out on a good ol' breadboard.
    • actually, this is called "learning". try it some time.

      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)

    by dstanfor ( 175527 ) on Thursday November 29, 2001 @03:51PM (#2632690)
    While this sounds cool, it would end up being a ton of work. However, you can do some searches at slashdot or google for free VHDL cores and you'll find some pretty interesting things. I'm assuming you'd like to program an FPGA instead of an ASIC and instead of using an off the shelf processor so this would be the place to start.


    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.

    • Blah...I don't want to use VHDL or FPGAs. That's what we used in my ELEN class and while it makes doing labs a lot easier, I want to build something out of discrete components instead of just drawing out a schematic and uploading it to a FPGA.

      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...
      • Discrete components is cool too, but tougher still. It sounds like you want to go from and, or, and mux gates then? or are you gonna be really tough and do it from the transistor level?


        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)

    by m_evanchik ( 398143 ) <michel_evanchikATevanchik...net> on Thursday November 29, 2001 @04:07PM (#2632809) Homepage
    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.
    • Well...one thing's for sure: I'm not building this thing for anyone but myself. So even if somebody has already done it, i'm fine with re-designing it in my own way. Really I just want to build a digital device with its own input (keyboard) and output (LCD) that I can write programs for. I found a website with command sets [museophile.com] of several old processors. I'm thinking about using a stripped-down version of one of these command sets to build my device....
      • So what are the important factors for you?

        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.
    • 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.
  • 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)

    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 /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.

    -Adam
    • That's exactly the kind of screen i was looking for. As for the chip, I was hoping to do most of the design myself, not use a prefab processor. Any suggestions in that respect?
      • Re:Have fun! (Score:3, Informative)

        by stienman ( 51024 )
        You can get that LCD from jameco, 128x64 Graphics LCD [jameco.com]

        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
    • As far as the power thing goes, it sounds like he might be best off hooking it up to a 5 volt power supply instead of trying to worry about batteries, at least until he has something actually on the bread board.
  • 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 [viridiandesign.org] 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:

    • A phaser, or at least a model thereof that made the noises. This, of course, required considerable machining and plastics work as well.
    • A dedicated tic-tac-toe machine
    • A dedicated pico-foami machine
    • Alternate electronics for the Mattel Power Glove to get high resolution output
    • Robots, the old standby. (My first broken bone resulted from my dropping one on my toe.)
    • Some simple non-computer video games (There's a purity in weaving the game logic into the video circuitry that you just don't get by writing a program)
    • A "printer" for a programmable calculator that took signals from the LED display and used it to move solenoids on an electric typewriter.
    • Alarms and detectors for home security
    • Lots of various helper devices such as light controllers, joystick controllers, button boxes, etc.

    (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:

    • A model rocket telemetry setup
    • An electronic pill box, using LED's to show which pills needed to be taken
    • A "301" dart calculator
    • A dedicated RPG game

    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...
  • 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.

  • 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 [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.
  • There is a bunch of work available at www.opencores.org [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).

    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 /. 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...
  • 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.)

The Tao is like a glob pattern: used but never used up. It is like the extern void: filled with infinite possibilities.

Working...