Monday, March 22, 2010

More photos

A couple more photos to show what things are looking like

Sunday, March 21, 2010

Counter is Counting...


I've reached one (of many) important milestones this evening: the program counter is now counting! It's surprising how much work it takes just to arrange four 4-bit counters and extract the resulting 16-bit address. But it's working! I've verified that the counter is able to count successfully from 0x0000 to 0xFFFF (65,536 for you decimal readers) without any missed bits or anything.

I went ahead and wired it up so that I have a 2x10-pin header that matches with my logic analyzer's termination adapters. That way it's simple to bring the ADDR signal into the analyzer as a trigger.

This accomplishment is important for a couple of reasons, because it proves a number of ideas that I will be using going forward:

  1. The buffers on the clock/control board can drive 4+ chips on an external board without any clock jitter or slew.
  2. I can pull 5V and GND through the 10-pin ribbon cableon the clock/control board without causing voltage sags or any latent current on GND.
I still have a lot of work to do on the program counter, though:
  1. Wire up the 7-segment displays and driver/decoder so that I have an address display that is always available.
  2. Wire up the ADDR LOAD pins and socket
  3. Wire up the EEPROMs and verify that 24-bit program data can be read successfully.
  4. Install two sets of buffers/line drivers for the program data
Frankly I'm not sure if I'm going to have enough real estate on the board for all this. But we'll see...stay tuned!

Wednesday, March 17, 2010

Back on track!

Hooray! I believe I've found the source of my problems. First off, there *was* a short on the board:

Notice the tin "whiskers" connecting the center pins to the pins directly to their right. Cleared those out, and I thought everything would be fine....

But it wasn't. So I pored over the whitepapers, ran Ohm's law calculations till my head started spinning, and finally went to bed really frustrated. But then I had an idea -- what if my problem isn't with the design at all? What if I was just over-driving my power supply?

My power supply is a cheapo Micronta 13.8V, 1.75A unregulated supply that I got at radio shack a zillion years ago. Could *that* be the problem?

So as an experiment, I wired up an Antec compute (regulated) power supply to the system. Bonus: computer power supplies have big fat 12v *and* 5v rails (24A on the 5v rails for my 500W supply!!). And wouldn't you know -- everything worked fine. The clock didn't get all wonky, and the program counter ticked just fine.

So next step: rip out all of my 7805s from the design and leave power generation and regulation to the power supply. I'm just going to solder in a standard Molex 4-pin power supply header to the control board, and distribute the 5V and 12V supplies like usual.

Sunday, March 14, 2010

Started on program counter

I've started working on the program counter. The sockets for the EEPROMs and the parallel load counters are all soldered in. I then prototyped the counters on my breadboard and all was well, but after soldering them up, there seems to be a short somewhere. The board is pulling almost 100mA @ 12v. To make matters worse, I blew the fuse in my multimeter while looking for the short. So...not a whole lot of progress this weekend. Once I get a new fuse, I'll keep hunting for that short. Could also be two outputs connected. Lots of pins to check. Pics of the new board to be posted soon.

Sunday, March 7, 2010

Program Counter Prototyping

I started prototyping the program counter, and ran into a bit of a jam. The 74161 synchronous counters that I ordered...looks like I inadvertently picked up the "S" version (74S161) which is rated at 80Mhz and draws a whopping 475mW at 5V. With four of them (for 16 bits) in parallel, I measured 2 ohms across the power leads:

V/R=I

5/2 = 2.5A

Yikes! My little 1A 7805 simply can't drive them. What I *wanted* was the 74LS161, which is rated at "only" 30Mhz, but uses a reasonable 35mW at full load.

I'm also considering running an unregulated 12V rail to each sub-board, so that if a sub-board needs more power than can be provided by the clock/control unit, a 12V rail is available for a 7805 to bolster the power capacity.

Clock/Control unit is DONE!

All done! The clock unit is assembled:

Now on to the program counter...

Saturday, March 6, 2010

More bus transceiver work

I managed to get the majority of the wiring for the bus transceivers done today. Check out this bundle:

The first two plugs are wired up; I should be able to get the other four done this weekend. Then the clock/control unit will finally be complete!!

Friday, March 5, 2010

Demonstrating a Schmitt Trigger

In my last batch of parts from Jameco, I also picked up a hex Schmitt Trigger. Schmitt triggers are nice because they don't suffer from the bouncing effects of a normal inverter. The input signal must drop below a certain threshold for the output to go high, and it must go above a different threshold for the output to go low. I did some traces on my analyzer to demonstrate the difference.

The circuit involved looks like this:


The RC circuit gives a slow rise from 0 to 5v when power is first applied. That input goes into an inverter, so that the RST signal goes low some short time after power up. The OR gate collects the RC circuit and the RST toggle switch into a single signal. The debouncer cleans up the mess that the (non-Schmitt Trigger) inverter makes of the RC signal, and the D-flip-flop ensures that the RST signal only changes on the falling clock edge (and conveniently provides a !RST signal too).

Here's what the timing run looks like with a normal inverter:

Notice that the output of the initial inverter bounces for over 12ms as the voltage rises. The debouncer removes the jitter and provides a clean edge to the signal, which is picked up on the flip-flop output at the next falling clock edge (not shown).

Now here's the same trace, but I've replaced the inverter on my board with the Schmitt Trigger:

No bouncing! So if I'd used a Schmitt Trigger in the first place, I could have avoided the debouncing step, right?

Not really. The clock circuit I'm using depends on an inverter that behaves in a somewhat analog fashion. With the Schmitt Trigger in there, the clock doesn't tick properly. So rather than have a whole separate IC on the board just for power-on-reset debouncing, I just utilized a few more channels from the debouncing chip (which was already on the board anyway for the toggle switches).

Bus transceivers

I've started installing the bus transceivers for the clock/control module. There will be six other boards to control, so I'm putting in six 10-pin shrouded sockets. Each socket will provide two 5V lines, 2 GND lines, CLK, !CLK, RST, and !RST. Each of the non-power signals will be driven by one channel of a 74HCT245 transceiver chip. These transceivers are designed to drive up to 15 TTL chips per channel.



As you can see from the backside of the board, I'm not quite finished with the wiring yet. I've only wired up the "head" transceiver, which itself will drive the three "sub" transceivers.

Monday, March 1, 2010

Open-source Logic Analyzer

My friend over at neodux.com pointed me to this link at hackaday for a $45 open-source logic analyzer. Pretty cool stuff. 32 channels @ 100Mhz. You can get similar functionality from something like a USBee, but those are closer to $100. I got my monstrous HP analyzer for $100 on Craigslist. So $50 or so for the open-source one is still a great deal!

Logic Analyzer Cart

My logic analyzer came with a pretty nice steel cart. It had big casters so it slid over the carpet easily, built-in storage, and fit the analyzer just right. Only problem -- the damn thing was wider than my closet doorway! Logic analyzers are useful, but they're sure not "pretty". My wife and I got a bit tired of the analyzer sitting in our office instead of it being in the closet where it belonged. So I whipped up a new cart for it this weekend. The new one has more storage than the old one, which is good. Only downside is that since the casters are directly under the corners of the analyzer, it's a bit unstable when pushed around. I have to be careful to not push it around too fast or it's liable to fall over. The old cart was wide for a reason: so you didn't have to worry about such things. Some test rolls with the new cart show that it's indeed mobile, however. And it fits in the closet. Which was really the point all along.