Takin’ Care of Business

Whew, it’s been a long time.  Sorry about that, but I’ve been pretty busy with the business end of this business.  There is a lot of work involved in setting up a new business.  Even though I have been doing “business” for several years, now I am starting a new phase of my business – up until now, I have been doing service work only; service work is not subject to sales tax in Pennsylvania.  This is my first experience with selling products to consumers.  I have gotten my store “up and running”, I have selected most of my board of directors and my infrastructure and I have started my market research and have started my Business Plan.  I just filled out the PA-100, Application for Pennsylvania Enterprise.  My accountant will be coming over tomorrow for Easter (he is also my son) and he will be reviewing my application.  If the PA-100 is filled out correctly, I will submit the application on Monday, and should be a legitimate business enterprise in the State of Pennsylvania.

Twitter is one of the premier social networking sites on the web.  I have heard of people who use it, successfully, to build their business.  Time to look into that as a way to boost my business.  Anyone have any ideas on this?  What about Facebook?  I have seen a tool for Twitter which will use my Twitter posts (Tweets) and cross-post them to my Facebook page.  Also, my web site (this project blog as well as my store) has tools to integrate my site with those social networking sites.  Maybe it’s time to look into those.

TI LaunchPad Booster Packs

The samples of the 10-pin pass-through female headers have finally arrived.  They look great, and now I have a supplier for these items.  That makes the last item that I was waiting for to start selling the Prototyping Booster Pack (http://projects.granzeier.com/2011/12/30/launchpad-booster-protoboard/).  The PCBs have been ordered and on Monday, I should be able to order the pass-through headers.  Stay tuned for more information about these Prototyping packs.

Boy Scout’s Robotics Merit Badge – A Low-Cost ‘Bot

Here is an idea, which may help with anyone wanting to offer a class for Boy Scouts to work on earning their Robotics Merit Badge (https://www.scouting.org/filestore/Merit_Badge_ReqandRes/Robotics.pdf):

A few years ago, a guy named Steve from the ChiBots Mailing List (https://groups.yahoo.com/neo/groups/chibots/conversations/topics/8265) asked for help in setting up a robotics class for kids.  The catch was that he was limited to a budget of only $8.00 per kid.  This is awfully low for a ‘bot for each kid in the class, however it did get me thinking about an extremely low-cost ‘bot for classes on robotics.  You can see the reply that I sent to him to help with his class at: https://groups.yahoo.com/neo/groups/chibots/conversations/topics/8265.

With all the interest in the new Boy Scout’s Robotics Merit Badge, I have revisited that low-cost ‘bot and have updated it with today’s prices:

Here is the updated parts list – notice that some of the parts have been replaced because they are no longer available, and most of the ones that are available have higher prices:

Desc Jameco P/N

Qty

Price For 1 Total Price
24 MHZ PDIP IND TEMP 5.0V Atmel ATTiny13 765345

10

$2.29 $21.90
IC, 74LS244, Octal TRI-STATE Buffers, As A Motor Driver 1341966

10

$0.65 $5.50
Dual General-Purpose IC PC Board (Use Radio Shack product) 276-159 (R/S Part #)

10

$2.19 $21.90
SOCKET,IC,8 PIN,1-390261-2,
.300″,DUAL,LADDER,P/B,TIN (10)
683104

10

$1.30 / 10 $1.30
SOCKET,IC,20 PIN, .300″ (10) 526221

10

$1.60 / 10 $1.60
MOTOR,DC,1.5-3.0 V,0.17A 154915

20

$2.50 / 2 $21.80
BAT CLIP,FOR 9 VOLT 109154

10

$0.29 $2.60
IC,78L05,+5V,TO-92
VOLTAGE REGULATOR, 100mA
51183

10

$0.29 $2.50
CAP, RADIAL, 10%, 10μF,  29891

20

$0.60 / 10 $1.20
BASCOM AVR (Trial Version) N/A

0

$0.00 $0.00
Subtotal  

 

$11.71 $80.30

Total price per ‘bot (in quantities of 10) = $8.03 + Shipping & Handling

You must order 10 ‘bots at a time to get these prices.  The original price for 1 “kit” was $7.50+S/H and with inflation has only gone up to $11.71, still extremely respectable.  There are a couple of items which loose their quantity discount with 1 kit, and the IC sockets and .01uF caps only come in quantities of 10 (the original price of $9.94 price for a single ‘bot included extra IC sockets and capacitors).  Wiring for connecting the components can be about a foot of old cat-5 per kid, they will get enough wire to totally hook up their bots with that little bit.

Here is a simple schematic for a ‘bot which can maneuver and even sense it’s surroundings.

The Schematic – Use the capacitors in the parts list for bypass caps across the +V and Gnd of the two ICs.

You will use both PB0 and PB1 together to drive the left motor (PB0 high and PB1 low to turn the motor one way and PB0 low and PB1 high to turn the motor the opposite way.)  Likewise, you will also use PB2 and PB3 together to drive the right motor.

With the small size of the Tiny13, you only have one remaining pin for sensors.  A trick that I came across long ago is that you can use a R/2R resistor ladder combined with the A/D input on PB4 to allow up to 4 bump sensors (theoretically you can get more, but four is about the limit due to the tolerances of resistors)  You will need to play with the numbers that your A/D input provides for each button press.

You can use the A/D capabilities of the Tiny13 to read up to four seperate digital inputs.

If you do not need your bot’s motors to be reversible, you can drop two of the motor control outputs and use them for other inputs or outputs (perhaps an LED for looks?)  Some or all of the four pushbutton switches could be replaced with photo sensors to provide the ability to program in light sensing (phototrope – http://en.wikipedia.org/wiki/Phototrope, such as a photophobe [light avoider] or photovore [light follower]) or maybe two of the sensors facing down to allow a simple line-follower.  In spite of the simplicity of this robot, you can actually do some pretty cool things.

To this kit, you will need to add something like 2 round rubber pencil erasers, 2 short pieces of hot-glue sticks or just dip the motor shafts in a liquid rubber stuff to use as the wheels/tires, and then somehow mount the motors angled down so that the wheels touch the ground (see the Cybugs wheels at: http://www.jcminventures.com/ for further information about that – I’m not related to JCM, just like their ideas).  You will also need at least 1 programmer to download the programs into the ’13.  Eddy Wright has USB (http://www.wrighthobbies.net/catalog/product_info.php?cPath=7&products_id=147) and Parallel Port (http://www.wrighthobbies.net/catalog/product_info.php?cPath=7&products_id=13) programmers for under $15.00; I have been a friend of Eddy’s for years and he has great deals – especially for stuff that I do not carry in my store 😉

This is the best that I could think of and give each kid a ‘bot of their own.  And, really you need more for anything beyond the most basic (however, this can do things like the TableTop contest from Chibots – http://www.chibots.org/?q=node/1209).  You can fashion bumper switches out of paper clips, and other junk can be interfaced (tell the kids that they get a reward for bringing in electronic junk – maybe a certificate or candy or something).  That will get you at least some LEDs and maybe some other stuff that can be useful in your CBs (cheap bots).

Go to the BSA’s Scouting Store and pick up a copy of the Merit Badge Pamphlet (BSA Supply No.: 35972 – http://www.scoutstuff.org/robotics-merit-badge-pamphlet.html).  It has a lot of good information for helping kids to learn about robotics.

Also, I am nearing completion of my new ULC-Bot (Ultra Low-Cost Bot) and will be putting this up in my store soon (I need to complete the experiments in the manual.)  This will include a complete introduction text with step-by-step instructions to get a beginner up and running.  My target price is about $25.00 to $30.00, and it looks like I may be able to meet that goal.  Check back for updates on the ULC-Bot.

And now, the small print: Be aware that this is still just an IDEA.  I have not actually breadboarded this circuit yet.  That said, I do have over thirty years of computer/electronics design experience and this should work.  I will breadboard this sometime pretty soon and write up some more material for the project.  In the mean time, I would appreciate hearing from anyone who takes this idea and runs with it…  How did the class go?  Was everyone able to get their ‘bot running?  How long did it take? (I’m thinking a whole day class, or maybe two.)   Most importantly, how did the kids like the class and their robot?

LaunchPad Booster ProtoBoard

Well, my prototype boards arrived from BatchPCB (http://www.batchpcb.com.)  Thanks guys, the boards look nice and went together well.  I received two copies of my protoboard and set one up for each of the primary configurations.  The LaunchPad comes with two male, and two female, headers. For the more minimal configuration (just the board, itself,) I soldered the male headers from the LaunchPad kit to the bottom of the protoboard, with the female headers soldered to the LaunchPad.  This is opposite how the TI documentation shows, where the male headers are soldered to the LaunchPad, itself, and the female headers are left for booster boards.  Notice that I placed the headers in from the bottom of the Protoboard Booster and soldered on the top of the board:

Prototype Booster Pack – Note that this is the bottom of the board

The reason for inserting the headers from the bottom, is because of the jumper pins connecting the emulation section of the LaunchPad to the target section.  With the male header inserted from the top (component) side, there is not enough room for soldering components to the Protoboard.  Even with inserting the headers from the bottom, you will need to be careful, there is not much room.

Notice the tight space here by the jumpers.

Now, you can build your own circuit to add to the LaunchPad.  Insert the components just like you were using a solderless breadboard and then solder them down.  Wah-laa, nice and simple.  Create any kind of Booster Pack that you want, and with this solder version, you have a nice stable circuit.

Notice that with the Booster Pack installed, you still have access to the on-board programmable button, the LEDs and the reset button.

Next, for when you are starting out and still experimenting; check out the solderless version:

The solderless breadboard version – Notice that you still have access to the programmable button, the two LEDs and the reset button.

When you want to do some quick-and-dirty experimenting, this will give you everything you need to add your own components.  I took one of my Digital Interface Kits (https://www.tindie.com/products/Granzeier/digital-interface-pack/.) and a couple of hookup wires, and added a second programmable pushbutton switch and one more LED; all in just a minute or two.

Added an additional pushbutton and LED in a minute or two.

Now with a notebook (or netbook), the USB cable that came with your LaunchPad, the above dev kit and a small assortment of components, you can do your experimenting, even while on the go.

The solderless version of the kit will include the board, two female pass-through headers, two female headers for the power rails and a small solderless breadboard.  Solder the headers onto your Booster Pack board and then peel the backing off the double-sided tape on the bottom of the breadboard and stick it in between the pass-through headers.  Add your components and wire them together with hookup wires.  Write your program and get everything running.  When your circuit is working, you can transfer it to the soldered board for a permanent Booster Pack.

The soldered version of this kit will include the board and two 10-pin male headers.  You will solder them into the board and then you can add your own components.  Plug the completed board into your LaunchPad and you have your Booster Pack!

Both versions will give you full flexibility in a compact package, yet will still allow you full access to the LaunchPad’s on-board programmable pushbutton, two LEDs and the reset button.

Now, here is what I need from you: does this look like something that would interest you?  Am I missing something extremely important?  Is RoHS (Restriction of Hazardous Substances, i.e. Lead-Free) important?  If there is lots of interest, I will order a larger initial order of boards.  Thanks for your help on this item.

Merry Christmas

The Birth of Jesus

1 In those days Caesar Augustus issued a decree that a census should be taken of the entire Roman world.2 (This was the first census that took place while[a] Quirinius was governor of Syria.) 3 And everyone went to their own town to register.

4 So Joseph also went up from the town of Nazareth in Galilee to Judea, to Bethlehem the town of David, because he belonged to the house and line of David. 5 He went there to register with Mary, who was pledged to be married to him and was expecting a child. 6 While they were there, the time came for the baby to be born, 7 and she gave birth to her firstborn, a son. She wrapped him in cloths and placed him in a manger, because there was no guest room available for them.

8 And there were shepherds living out in the fields nearby, keeping watch over their flocks at night. 9 An angel of the Lord appeared to them, and the glory of the Lord shone around them, and they were terrified. 10But the angel said to them, “Do not be afraid. I bring you good news that will cause great joy for all the people. 11 Today in the town of David a Savior has been born to you; he is the Messiah, the Lord. 12 This will be a sign to you: You will find a baby wrapped in cloths and lying in a manger.”

13 Suddenly a great company of the heavenly host appeared with the angel, praising God and saying,

14 “Glory to God in the highest heaven,
and on earth peace to those on whom his favor rests.”

15 When the angels had left them and gone into heaven, the shepherds said to one another, “Let’s go to Bethlehem and see this thing that has happened, which the Lord has told us about.”

16 So they hurried off and found Mary and Joseph, and the baby, who was lying in the manger. 17 When they had seen him, they spread the word concerning what had been told them about this child, 18 and all who heard it were amazed at what the shepherds said to them. 19 But Mary treasured up all these things and pondered them in her heart. 20 The shepherds returned, glorifying and praising God for all the things they had heard and seen, which were just as they had been told.

Merry Christmas to all my readers.  May God bless each of you for this entire year.

The TI LaunchPad Booster Pack

Well, last night I sent off for the last of the items needed for the prototype of my Booster Pack.  I should be getting all the items, including my PCB from BatchPCB (http://www.batchpcb.com.)  When they come in, I will let you know how it works, as well as show you some new photos.

Until they do, I will be starting back on the Move Computer (AKA Ultimate RISC).

A Low Cost Board – The TI LaunchPad

Well, as promised, we will discuss the LaunchPad board from Texas Instruments (many new versions available at http://www.ti.com/tools-software/launchpads/launchpads.html – look for the original near the bottom of the page.)  At U$4.30 (old price) per board (including shipping), this may “seem too good to be true.”  Let me assure you that the offer is very real.  It appears that TI is taking a loss on this deal (probably writing it off to advertising) , and hoping to make it up in higher units sold.  Let’s get started with this cool part and see if we can’t sell a gazillion of the things for them – and, by the way, selling a gazillion of our products in the process. 😉

Here is a picture of one of the LaunchPads that I recently received:

Notice that there are series of ten holes along either long edge (left and right sides in the above picture.)  These are for the male and female headers, which are supplied with the kit, so that you can easily access all of the signals to and from the MSP-430 controller chip. If you are including the entire LuanchPad in a production unit (the price is low enough that you can actually do that!), then the holes could be used to solder the additional circuitry directly to the LaunchPad.

 

TI recommends that you solder the male header into the top (component side) of the LaunchPad board, and then solder the female connectors to the bottom of a Booster Pack.  The Booster Pack, is simply their name for a plug-in daughter board, similar to the shields used to connect circuitry to the Arduino controllers (http://www.arduino.cc/en/Main/arduinoShields – Click on the list .)  Limor (AKA Lady Ada) has a nice Arduino prototyping board tutorial with lots of nice pictures on her site (https://learn.adafruit.com/adafruit-proto-shield-arduino.)

I think that, if you want to do experimenting with the LaunchPad out of the box, it would be better for you to solder the female headers to the top of the LaunchPad, rather than the Booster Pack.  This will allow you to plug simple wire jumpers into the female headers to add circuits on a breadboard, while allowing you to solder the male headers to a Booster Pack and still have full functionality from the Booster Packs.  Take a look at mine to see better what I am discussing:


This way, all you need to do to get started is to solder in the female headers, and then plug-n-play.  Plug a red wire into the Vcc socket on the uppermost pin of the left socket on your LaunchPad (when held with the top side facing you and the USB connector up), and plug the other end into the positive power rail of your breadboard.  Repeat that with a black wire going from the Gnd (upper-right pin) of the LaunchPad to the ground power rail on your breadboard.  Abracadabra, and you have (nearly) instant prototyping.  Plug a wire from one of the port pins on the LaunchPad and into a socket on your breadboard and go wild adding circuitry to your MSP-430.

Actually, for really simple circuit experiments, you can even use the female headers on the LaunchPad by themselves as sort of a breadboard on their own.  Take a look at this photo:

I took one of my Speaker Packs (coming to our Tindie store soon,) and plugged it directly in to the Vcc pin and the P1.1 pin.  Now, for simple sound output, I can write a program to send a sound signal out to the P1.1 output and hear the results without even the need for a breadboard system.  Talk about portable; write a music box while riding the bus or train in to the office.  😉

I drew a protoboard Booster Pack about a week or so ago (actually before I saw Limor’s shield), and will be sending it out for a proto run (http://www.batchpcb.com.)  If the boards work properly, I will be sending out for a production run and putting them into my store.

Here is a picture of my Booster Pack:

As this is currently laid out, the outside pins, closest to the labels in the above picture, mate up to the LaunchPad’s expansion pins.  If you solder the female headers to the LaunchPad, and then solder male headers to the bottom of those pins on my Booster Pack, the Booster Pack will plug directly in to the Launch Pad.  You could use pass-through female headers (headers with extra long pins) and solder them to the top of my board, that way, you could use my board and also plug in a different Booster Pack on top of the Protoboard.  Also, when you plug my LaunchPad Prototyping Booster Pack into the LaunchPad, it will leave the on-board pushbuttons and LEDs available so that you can use them in your projects.

You can either glue a solderless breadboard onto the Prototyping Board, or you can use the prototyping area on my board and solder the circuits right to the Prototyping Board.  Either way, there is room for a couple of 10-pin headers which will provide you with Vcc and Ground, along with complete columns of Vcc and Gnd down the center to provide easy access to power for your circuit.  There is enough room on the prototype area to place a single 40-pin DIP, or up to four 8-pin DIPs.  You can quickly add new circuitry to your LaunchPad; great for learning too!

Well, that’s it for today.  Be sure to take a look at my store (https://www.tindie.com/stores/Granzeier/) for other electronics packs and kits.  Also, if you are interested in Retro Computing, check in with my RetroChallenge entry at: http://retrochallenge.granzeier.com – no longer valid.)

The Ultimate RISC Gets Hardware

(In a nasal, Andy-Rooneyish tone) “Have you ever noticed how some things just stay new?”

Well, Prof. Jones’ paper is like that.  It seems that every time I look at the paper, I see something new.  Take for instance figure 2, the block diagram: I have been going over that paper on-and-off for a few years.  Even so, I came up with the block diagram that I posted earlier.  Hmmm, it seems that when I took another look at figure 2, I just tried fitting some 74LS00 series chips in place; what do you know?  They fit!  I looked at the buffer (the triangle pointing up, on the right side of the diagram) and thought that it could be a simple tri-state buffer; perhaps a couple/few 74LS241 Octal 3-State Drivers?

Next, I looked to the left a bit and noticed that the rectangle right next to the driver was really a latch, such as the 74LS373 or ‘374 (now what is the difference between those again?  Oh yeah, one is edge triggered and the other is level triggered.)  Whoa, those latches in Prof. Jones’ figure 2 look mighty close to these chips.  In fact, with the exception of the triggers being inverted from Prof. Jones’ design, and the fact that the address latch is not buffered (just keep the output enabled for that one), those chips will work admirably.

After looking through my old, handy-dandy 7400 TTL list (http://en.wikipedia.org/wiki/List_of_7400_series_integrated_circuits), and doing a couple more replacements, I came up with this:

Notice that, as I’ve mentioned, the PC, ADDR and TEMP latches are inverted from Prof. Jones’ description.  This can be easily handled by simply inverting the bits in the sequencer for those signals.

Also, the address decoding for the PC Register is the small box in the lower-left corner.  It is simply a large AND gate looking for all the address bits to be high (the highest address) along with the write signal high.  This will latch the data on the data bus into the 74LS374 holding the PC Register.

The sequencer will be a simple 74LS188 ROM (or actually half of one) programmed with the data from figure 3 in Prof. Jones’ paper.  The address lines for this ROM will be tied to a 4-bit binary up counter (such as a 74LS161) clocked by the system clock.  The eight bits per address location will line up with the eight signals coming in on the left-side of figure 2.

Next up will be creating a schematic of each part of figure 2, and the 74LS188 ROM with the counter and clock.  I would like the clock to be variable, including down to single step, so that the operator can see each step as it is executed.

Also, January is the Winter Warmup for the Retrochallenge contest.  I will be entering again (didn’t do as well as I would have liked last summer), but am not sure what I will be doing for that.  Check out my RC blog at http://retrochallenge.granzeier.com (no longer valid.)

Additionally, I recently purchased a few of the LaunchPads from Texas Instruments.  We will be going through an introduction to them in the next few weeks.

 

 

 

 

Intro to Breadboarding

Way back in the early 1900’s, when hobbyists were just getting started in electronics, experimenters needed a way to quickly get a circuit up and running.  Nearly every kitchen had a small piece of wood for cutting the bread (remember this was before 1928 when sliced bread was invented.)  This piece of wood was about one foot, or so, long by about eight to ten inches wide and about ½” thick.  It was about the perfect size to set up for experimenting with the new electronic circuits.  The aspiring engineer could just take a few nails and hammer them in to the wood and then solder his components right to the nails.  Quick, easy, simple…, and it left your circuit wide open for hooking up meters and other test equipment.  You could also easily extend your circuit by just adding more nails and soldering your components on.  Thus the name for our rapid prototyping system: a breadboard.  The only down side was when Mom went to get her breadboard to slice the bread which just came out of the oven.  She usually disapproved of the shape of her poor cutting board, sometimes vehemently so.

The breadboards we have today are usually not found in the kitchen and are specialized tools meant to allow you to quickly set up new circuits on a temporary basis.  Once you have completed your experiments on the breadboarded circuit, you just pull the components and hook-up wires out of the board and you are ready to begin building your next circuit.  That is what we will be doing in this post.

Take a look at the breadboard drawing shown here.

Each of the squares in our example drawing represents a small hole in the plastic breadboard.  These holes are just the right size to insert a single pin of a DIP IC, or a single lead of a component such as a resistor, diode or capacitor.  Inside each hole is a metal clamp which grabs hold of any lead which is inserted into the hole.  Notice the columns of five holes numbered 1, 2, 3 and so on.  There are two parts to each numbered column.  The first column, numbered 1 consists of two sets of five holes.  These are labeled A through E and F through J.  See how the squares are connected together by small black traces?  In the same way, the metal clamps inside the holes in each set are connected together.  So any pin or lead plugged into one of the columns of holes is electrically connected to any pin or lead plugged into any other hole in that column.  This is how you will be connecting components together in your circuit.

Also, notice that there is a trough down the middle of the breadboard, between the two parts of each column.  This not only separates the two sets of holes physically, it also separates them electrically.  There is no connection between row E and row F of each column.  This trough is exactly 0.3” wide, which is just wide enough to fit a single “narrow” DIP IC across with one set of pins plugged into row E and the opposite set of pins in row F.  See the drawing with the DIP IC plugged in for a better idea of how this looks.

Notice the IC added to the breadboard.

When inserting a DIP IC, you will need to be careful not to bend the pins under the IC and into the trough.  This is like plugging an IC into a socket; use the same precautions.  Once the IC is plugged in like our drawing, each pin is electrically connected to four additional holes for extending the circuit.  For example, look at our drawing; notice that pin 1 of the IC is plugged into hole E3 of the breadboard.  (The pins on a DIP IC are numbered starting just below the notch on the left side of the package and go around the IC counter-clockwise.)  Pin 2 is plugged into hole E4, and so on.  If you wanted to connect a wire to pin 1 of the IC, you would simply plug it into any other hole from A3 through D3, they are all electrically the same.

Finally, most breadboards also include either one or two additional rows of holes above and below the area, which I described above.

See how the power rails are connected horizontally?See how the power rails are connected horizontally?

These are called the Power Rails and are most often used to provide the positive voltage and ground along the entire circuit.  This can make it more convenient to tap into the power anywhere in your circuit that you wish.  Notice that while these are physically grouped in sets of five, the groups are actually connected to each other all the way down the length of the breadboard (as long as you have the short boards – about 3” long, longer breadboards may have each power rail split into two sets).  Many engineers will use the top rail for +5V and the bottom for ground.  If they have two rails on top and two on bottom, they may pick one rail on each side for +5V and the other side for ground.  These rails are often color coded and you may want to pick the red for +5V and the blue or black for ground.  This will make it even easier to tap into power anywhere in your circuit.  This is where the red and black wires from the battery pack on your breadboard will plug in.

 Testing Your Breadboard

To test your breadboard system, take a 330Ω resistor (the resistance is approximate and other close values could be used) and bend both of it’s leads 90˚ to the body of the resistor so that both leads are parallel and point the same way.

Plug one lead of your resistor into the ground power rail and the other lead into hole A1 of the breadboard.  Next, take a green LED, and spread the leads apart 90° from the body of the LED.  Place the LED on the breadboard and mark where to bend the leads, so that they can plug into the breadboard and the LED will be flat against the breadboard.  Plug the cathode lead (negative, the shorter lead) in to hole E1 and the anode lead (positive, the longer lead) into hole F1.  Last, take a short piece of hook-up wire (about 1” long) and strip about ¼” of the insulation off each end.  Plug one end into hole J1 and the other end into the positive rail of the breadboard.  Plug a battery pack into the power bus strips on your breadboard.  The red wire should plug into the +V bus and the black wire should plug into the Ground bus.  Be careful to get the polarity correct or you may burn out the LED (later when you plug in the controller, you may burn that out as well.)  Put fresh AA cells into the battery box and turn the switch to the On position.

A breadboard from another project. Notice the power indicator, like I described in the text.

The LED should burn fairly brightly, you should be able to see it light even in bright indoor lighting.  If your LED does not light up, check the wiring of your battery pack, the red and black power wires going to the rails of your breadboard and the LED, resistor and wire.  If the LED lights, but is dim, replace or recharge your battery.  Start off with freshly charged cells and your set should give you hours of experimenting before the battery needs to be recharged or replaced.

Now, remove the LED and the resistor.  Trim the leads so that the components sit tightly against the surface of the breadboard.  Since you will be trimming the leads of your LED, the cathode will no longer be the shorter lead and you will need to be very careful that you get the polarity of the LED correct.  This will make the circuit more stable, and your test circuit can be used as a power indicator for any future experimenting that you wish to do.  You may even want to put a few dabs of epoxy or hot-glue on the resistor and LED to hold them permanently in place.

A Revelation!

Still working on getting the hang of this blogging stuff.  Just thought of something – guess what?  I don’t HAVE to stay on one project until it is completed.  (All right, you veteran bloggers, you can stop laughing now and get up off the floor; ok, so I can be slow on some things sometimes.)  As an engineer, you will rarely get the chance to work on a single project until completion, and so it will be with this blog too.

Anyway, I do have an update to the Ultimate RISC computer that Professor Jones described.  I started to write the emulation for the Parallax QuickStart board (https://www.parallax.com/product/40000) .  I really love this little board, and when I add Bean’s Propeller Embedded BASIC (PE-BASIC, http://forums.parallax.com/showthread.php?123678-PE-Basic-Version-0.16-July-11-2011&highlight=pe-basic) it feels kind of like the old small computers from the ’70s.

Well, back in the mid-70s, I wrote an emulator for Bell Labs’ CardIAC computer (http://en.wikipedia.org/wiki/CARDboard_Illustrative_Aid_to_Computation.)   This cardboard computer taught the user how computers work on a very basic level.  Because of the CardIAC, I was light years ahead in understanding machine (and thus assembly) language.  Then, back in the early-90s, I dusted it off and morphed it into a visual CPU simulator for a microprocessor course that I was teaching.  Once more, I was starting to work on it to morph it into this Move computer.  I wanted it to be in “kinda” hardware (the Propeller would output an address and read/write to an external memory or I/O device.

After getting a good start, I decided that I was really doing a “proof of concept” project with this.  I really want to do a complete H/W Move Computer, not just a hardware emulation.  So, I am going to re-do this project:  the first implementation will be a purely software version (written in something with a little more horsepower than PE-BASIC, sorry Bean, but an integer-only language without any string handling or other things, while great for an embedded control system, leaves a bit to be desired for this Move Computer.)

My second implementation will then be a simple 4-bit proof of concept done in SSL (Small-Scale Logic) and MSL (Medium-Scale Logic) ICs, such as the 74LS00 or maybe the 4000 family chips.  This will be followed by an actually usable 16-bit or more computer, again done in SSL and MSL.

Here is the block diagram for my Move Computer:

The Control unit will need to generate 8 signals:

Internal to CPU:

  • MAR_WR (Memory Address Register Write or Load)
  • MDR_WR (Memory Data Register Write or Load)
  • MDR_RD (Memory Data Register Read)
  • PCRADDR_RD (Program Count Register Address – hardwired to all 1s, I.E. FFFF)
  • CTRL_RESET (Reset the binary counter to the micro-instruction step)

And external to CPU

  • WR (Write – for Memory or I/O)
  • RD (Read – for Memory or I/O)
  • PCR_INCR (PCR Increment)

Reset:

All control signals go to 1
ACCU (Accumulator) = 0000
PCR (Program Count Register) = 0000

The microcode for the CPU will be pretty simple.  The processor will fetch the contents of the source location and then store it in the destination location.

Fetch the contents of the next Source memory location in the program into the MDR.

1)  PCRADDR_RD = 0 & MAR_WR = 0
2)  PCRADDR_RD = 1, MAR_WR = 1
3)  MAR_WR = 0
4)  MAR_WR = 1, PCR_INCR = 0
5)  PCR_INCR = 1, RD = 0
6)  MDR_WR = 0
7)  MDR_WR = 1
8)  RD = 1

Store the contents of the MDR into the next Destination memory location in the program.

1)  PCRADDR_RD = 0 & MAR_WR = 0
2)  PCRADDR_RD = 1, MAR_WR = 1
3)  MAR_WR = 0
4)  MAR_WR = 1, PCR_INCR = 0
5)  PCR_INCR = 1, MDR_RD = 0
6)  WR = 0
7)  WR = 1
8)  MDR_RD = 1

This looks like it will work, next I will test it in software.  If I stay with this microcode, you will notice that it takes exactly 16 steps.  I would not need the CTRL_Reset signal in that case, just running the sequencer clock beyond the 15(Decimal) or 1111b would start it over again without any need to reset the counter.

Well, that seems to be it for the initial design phase, I will implement it in software and present it in the next posting of this project (with other posts between these, of course.)

The Ultimate RISC

Having been working with computers since 1975, I have long wanted to build my own CPU.  In my playing research, I ran across a paper by Professor Douglas W. Jones of the University of Iowa (http://www.divms.uiowa.edu/~jones/arch/risc/).  This article really captured my imagination, and I have not been able to get it out of my mind.  This is, pretty much, the ultimate in simplified CPU design.

Professor Jones’ paper presents the design for a computer with only a single instruction.  At first, (having grown up watching the 8080 being trumped by the Z-80 and then Intel upping it’s own 8080 with the 8085 followed by the 8086 and so on…) my mind had a difficult time wrapping itself around a single instruction actually being useful.  Prof. Jones even discusses some real-world single-instruction computers at the end of his paper.

People who deal with logic know that any logic can be generated from only NAND gates.  Thus, a computer which can only perform a NAND operation should be able to emulate all other operations.  Likewise, it turns out, a computer which does nothing more than subtracting one number from another and then jumping to a new location can emulate all other operations.  Wikipedia discusses some of those computers in their article on One Instruction Set Computer (http://en.wikipedia.org/wiki/One_instruction_set_computer).

Prof. Jones presents another type of single instruction computer, the MOVE computer.  The only instruction available to this CPU is the MOVE command.  This does bring up a few difficulties such as: how does the CPU modify it’s program flow… How do you do logic or arithmetic functions, etc.

His paper covers all that pretty well.  After reading his paper, it started to strike me as being an insanely simple architecture.  I think that this is a good way for people to get into the design of a CPU.  My next project will be an implementation of this MOVE computer in hardware (probably just an MPU emulating the CPU to begin with.)