Inside a TTL Logic IC

Uncategorized 2 Comments

Since 2014 is generally considered the 50th anniversary of TTL logic, I thought I’d take a TTL logic chip apart and do a little analysis.

So I started with a DM7438N, lot code M:P9006Y. Looking at National Semiconductor’s device marking convention document, I take this to mean that it was manufactured in week 6 of 1990 at a subcontractor’s fab in the United States and assembled in Malaysia.

The 7438 is a quad 2-input NAND buffer with open-collector outputs. That means the die should look symmetrical to a degree.

To take it apart, I used a rotary tool to carve out the encapsulation material on the top and the bottom, and then picked at it with side cutters until the chip fell out. Sadly I cracked off a corner of the die including one bond pad, but it’s still possible to figure out how it works.

What does all this do? See the image below. I’ve cropped all but one gate and highlighted the various semiconducting regions in different colors. I’ve also given designators to all the components.

Red represents the N-type collector epitaxial diffusion. Cyan represents the P-type base diffusion, and purple represents the N+ emitter region.

The schematic looks like this:

That dual-emitter transistor (Q1) sure looks strange!

How does it work? Well, if both A and B inputs are a logic high, then Q1 is off, but some current flows from R1 (4K ohm) through the base collector junction (since it is, after all, a PN junction) and feeds the base of Q2. Q2 turns on, and its emitter current feeds R3 (1K ohm) and Q3. Q3 turns on as well, and the output Y gets driven low. The non-inverted version of the output signal is available at the collector of Q3 (biased through R2, a 1.6K ohm resistor), but this particular chip doesn’t use it.

If either A or B goes low, then Q1 gets turned on. Current flows through the base emitter junction and the base gets pulled to about 0.6V above ground. No current flows through the base of Q2 because the voltage on the collector of Q1 is just too low for any current to flow. Q3 therefore stays off, and the output Y goes high impedance. By the way, this is what open collector means–the collector of the output stage transistor is left “open” with no corresponding transistor above it to pull it high.

Diodes D1 and D2 are just for input protection.

There are a couple of unused components. There is a resistor right below R1, and another resistor below R2. There are two extra transistors with a shared collector to the left of Q3. A different top metal mask could connect these extra components into the circuit and change the function of the device.

Can you think of some other gates that could be built by changing the top metal mask? Remember that there is only one metal layer which limits where you can route the traces.

XL741 – Discrete Op-Amp

Uncategorized 5 Comments

We’ve done it again! My friends at Evil Mad Scientist Laboratories have a new kit for sale. Following on the success of our Three Fives discrete 555 timer kit, we’ve had a lot of requests for a discrete 741 op-amp.

The XL741 is based on the datasheet schematic of the original uA741 op-amp IC from 1968. You can wire it up in a classic op-amp circuit and probe nodes inside the IC so you can see how the chip works. Play with differential pairs, modify the compensation, and change bias currents to your heart’s content!

Flea Market Find–Dual Gun CRT

Uncategorized 5 Comments

At the electronics flea market on Saturday, I found a 3ABP7 dual gun CRT. This one was built by DuMont, most likely intended for the 3″ version of their 5″ Type 279 Dual Beam Oscilloscope.

So of course I had to fire it up. There are two sets of deflection coils, so I drove them with one deflection board and cross-wired the deflection coils to flip the image around on the second gun.

The guns themselves have a common cathode connection and separate grids, which forces me to drive them both in parallel since my deflection board video amplifier keeps the grid at a constant potential and drives the video onto the cathode.
Dual gun 3ABP2 CRT

Here’s a closer look at the guns. The filaments are connected in parallel so this tube uses twice the normal current.
Dual gun 3ABP2 CRT

Compensating CRT Deflection Coils

Projects 16 Comments

Things look really weird when you use an uncompensated deflection coil with a vector graphics display. This is because the coil looks like an inductive load to the driver amplifier, and the parasitic capacitance makes it ring. Ringing and overshoot create the strange-looking display, basically extending every line past its destination.

One way to compensate for that is to add a series RC snubber in parallel with each deflection coil. You can perform some calculations to figure out the values of the resistor and capacitor but they won’t get you very close to the answer. There are just too many parasitics to model. It’s much faster just to build a RC substitution box and tweak the values until you get the result you want.

CRT Board BOM Updates

Uncategorized 1 Comment

I have corrected some mistakes in the bills of materials for the CRT driver boards (the files in GitHub have already been updated):

  • ScopePower U2 part number from TS271CN (DIP package) to TS271IDT (SOIC).
  • ScopePower R3 part number from VR37000003305JR500 (33 meg) to VR37000001005JR500 (10 meg).

If you already ordered parts, I apologize. The TS271CN is a great little op amp and the DIP package version will work fine in a breadboard. That’s what I will do with the ones I accidentally ordered. The 33 meg resistor is useful as a bleeder resistor if you build the post deflection acceleration module (to be posted soon).

Mel, Blackjack, and the LGP-30

Cleverness No Comments

A friend passed on the following articles regarding a rather famous hack:

https://news.ycombinator.com/item?id=7869771
http://www.jamtronix.com/blog/2011/03/25/on-the-trail-of-a-real-programmer/

The LGP-30 was an early computer manufactured in 1956 and sold by the Royal McBee division of the Royal Typewriter Company. It had 113 vacuum tubes, 1450 diodes, a magnetic drum memory, and an oscilloscope screen with a template marking the register bits (instead of the more traditional panel with blinking lights). Mel wrote a lot of code for this machine, including a blackjack demo program, entirely in raw machine code, taking advantage of various quirks in the machine to keep the program very compact.

The Jamtronix blog has a link to a purported paper tape dump of Mel’s program.

Foolishly I decided to figure out the paper tape dump. I succeeded, and it looks like it’s in a format that a bootloader was supposed to understand, but not the bootloader documented in the LGP-30 manual. So first I ran the raw file into a popcount routine to see what the most common letters were. It was a subset of the alphabet, but had all the numbers except for the number ‘1’.

Wat?

Back then they did a few strange things. One of them was using the lowercase letter ‘L’ as the number 1. Right. Also, since the LGP-30 was hexadecimal, they used extra letters to represent numbers beyond 9, but instead of using a-f, they used fgjkqw.

Then the single quote ‘ is used as a record delimiter, and the letter ‘v’ at the beginning of the block of records identifies the track and sector where the data is to be loaded. Each block has 64 words, 8 per line (which fits perfectly in a single track on the magnetic drum memory). To save space, they omit leading zeros, so incoming characters of 4 bits each are shifted left 4 at a time. At the end of the block is a stray word whose purpose I cannot figure out. I suspect it’s a parity or checksum, but it doesn’t match a simple checksum of all the data.

This machine’s architecture is a clever nightmare. Self modifying code was encouraged and was the standard way to accomplish common tasks. For example, to branch to a subroutine, you do this:

1000: r 3050     <- Set up return address by writing PC+2 to the destination address of the instruction at 3050.
1001: u 3000     <- Unconditional branch to address 3000.
1002: ...        <- Magically we pop up back here!
...
3050  u 0000     <- Looks like a unconditional branch to location 0 right? No, it's just a placeholder address. Yay, we can do without a link register!

And Mel coded this up in machine code. Probably because the “assembly” mnemonics are not particularly helpful, he must have quickly memorized the opcodes themselves. And why did he use instructions as data? The machine doesn’t decode the upper 12 bits of a word, so if you didn’t use it, it was just wasted. Basically the architecture of the machine naturally led Mel down this slippery slope.

So you might think that Librascope/Royal McBee, based on customer feedback for this machine, must have simplified the design for a later machine, the RPC-4000. And you would be wrong–it’s even worse…

Anyway, here’s my disassembled version: blackjack.txt. The track number is listed first, once for every block. In each block, every line has the sector number first, followed by the instruction mnemonic, following by the track and sector numbers of the instruction’s target. After that are the raw bits. The first two instructions are clear instructions followed by an unconditional branch. This goes to track 49 sector 34. You can follow the instruction flow from there.

As for me, I’m going to stop now before I accidentally learn how to program the LGP-30.

 

P10 Dark Trace CRT – The Skiatron

Uncategorized 3 Comments

I have a little story to tell. Years ago, I met someone who had a very large collection of CRTs. He had everything from common 3BP1s all the way to rare little gems like the 1EP1 and some vintage prototype CRTs. He showed me an item in his collection which was a rectangular CRT with a P10 phosphor. Finding a CRT with the P10 phosphor is like finding a unicorn. P10 is not really a phosphor; it designates a screen coated with some sort of alkali-halide (potassium chloride) that darkens when hit with an electron beam–a scotophor. The darkening effect lasts until the coating is heated, and typical P10 CRTs have a built-in heater that erases whatever was recorded on the screen.

Anyway, a few years go by and I lose contact with the guy. Rumors are flying around, and it turns out that he has decided to sell his entire collection. Bits and pieces of it start showing up at auction houses and flea markets. Another friend of mine mentions that he picked up a lot of CRTs at an auction house and asked if I wanted to pick through it. While sorting through it, I recognized the rare beast and bought it on the spot.

P10 Dark Phosphor CRT

So I finally got the time to hook it up and try it out. There doesn’t seem to be any documentation. The part number is 06E024P10, made by Thomas Electronics. It works, but not particularly well. Since the pin connections are nonstandard and the electron gun has some extra elements, I’ve probably got it connected all wrong. Anyway, I was able to put some scribbles on the screen.

P10 Dark Phosphor Screen

Notice the dark purple areas. I am shining a lamp through an aperture in the top of the CRT.

P10 Dark Phosphor Screen

Looking through the aperture, you can see how the CRT has a standard green phosphor section on the top third. This might have been used to verify that the tube’s electron gun was in focus. It could also have been used for status information. Most likely this tube would have been used in an early form of storage oscilloscope for capturing single-shot high speed events, although most examples of P10 tubes were designed for radar displays.

Electrostatic CRT Driver Design

Projects 62 Comments

Update 23-December-2014: Richard at LabGuy’s World has wiring diagrams for the RCA 913 and the 3JP7, and other neat stuff.

Update 23-June-2014: Please see the CRT Board BOM Updates page for important changes.

Update 3-June-2014: Added OSH Park links so you can order PCBs easily and quickly!

Well, it’s here! I’ve put together an open source release package for my CRT driver design. See all the glorious details at the GitHub project. It contains the fab data (Gerbers, NC drills, etc) as well as the CSV-formatted bills of materials for three boards. All the parts are available at Mouser Electronics (and the Mouser numbers are listed in the BOM). It’s the same set of boards that I used for my Asteroids and Flappy Bird arcade machines at Maker Faire.

The design can drive most 2″, 3″, and some 5″ electrostatically-deflected cathode ray tubes, such as the popular 3BP1 or the precision 3RP1A. It can be modified to drive some of the oddball 2″ and 3″ CRTs that have a shared heater and cathode connection.

The three boards are:

The 1KV power supply takes +12VDC and uses a Royer oscillator with an off-the-shelf CCFL transformer to create filtered 800-1200VDC. The voltage is tuned by adjusting R1. Use a plastic-handled pot tweaker tool please! The supply can easily source several milliamps, which at 1KV could stop your heart. This is a serious power supply, so please be safe if you decide to build it. Keep one hand in your pocket while using it. Turn the supply off before poking at it, waiting at least a second or two after switching off the DC supply to allow the sense resistor divider to bleed off the output voltage. Don’t work alone.
ps_board
The design is inspired by CCFL circuits designed by Jim Williams–see the very long and wonderful AN65, especially Jim’s hand-drawn notes at the end. While Jim used a switching regulator to drive the Royer circuit, I used a simpler linear FET approach which works well but generates more heat. You will need to screw a metal heat sink to the plated through-hole located above Q1. Use a mica washer and a nylon screw if you want electrical isolation since this node is NOT ground.

If you want to put this in an enclosure, keep a clearance gap of 1cm or more between HV connections and low voltage nodes or a metal chassis. The power supply produces stray magnetic fields that will cause the electron beam in a CRT to deflect in ways you don’t want, so you should keep it far away from the CRT and use a CRT shield made out of high magnetic permeability material, like mu-metal or soft steel.

You can also add a voltage multiplier circuit, tapping in to diode D1, to generate post deflection acceleration (PDA) voltages. A 2-stage multiplier (as shown on the schematic) can generate 3KV which is fine for 3″ and 5″ tubes that require it.

At the heart of the design is the electrostatic CRT deflection and video amplifier circuit, which takes 0-3.3V analog signals for X and Y deflection as well as the video input, and outputs high voltage drive signals to the CRT.
defl_board
There are two deflection amplifiers, one for X and one for Y. The core of the differential amplifier is a matched dual NPN transistor with a bias circuit for setting the gain and offset (width/height and position potentiometers). A cascode stage made out of two high-voltage NPN transistors increases the bandwidth slightly and level shifts the signal up to about 1KV. There are two 220K resistors that form the load for the circuit. Don’t substitute these with plain carbon composition resistors–these parts have to be rated for high voltage use. Bandwidth of the amplifiers is about 10-15KHz, so you could drive ramp signals in to X and Y and generate an NTSC sweep if you wanted.

The video amplifier is a pretty simple class A design with a cascode stage to increase the speed. Bandwidth is about 6MHz, so the circuit can easily handle NTSC video. A simple-minded approach for driving a CRT electron gun is to ground the cathode and drive the grid negative, but the circuit design ends up being tricky. An easier way is to drive the grid to ground (or in my case, to an adjustable brightness voltage from a potentiometer) and connect the cathode to the amplifier output. The end result is the same, although there is a slight impact on the focus electrode. The video amplifier uses a +60V bias voltage which needs to be rather stiff since the drive current is fairly high (required to get 6MHz bandwidth).

A focus potentiometer produces a bias voltage for the focus grid in the CRT. It’s adjustable over a fairly wide range covering most 2″, 3″ and some 5″ CRTs, but if you’ve found some oddball CRT, you could always change some of the other resistor values.

The astigmatism potentiometer changes the final accelerator voltage relative to the average deflection plate voltages. Adjust this potentiometer if the spot on the screen looks oval instead of round.

There is a connector for a 6.3VAC filament supply. You don’t have to use an AC voltage, but be aware that pin 1 is tied to ground. You might want to measure the actual output voltage of the filament transformer (under load of course). I’ve found that most of them tend to run high (7V is not uncommon). Adding a series resistor can help prolong the life of the CRT.

Finally, a video amplifier bias supply generates +60V for the video amplifier. As an “easter egg”, you could modify this circuit to operate as a Nixie tube power supply by changing the value of R1. You’ll also need to increase the voltage rating on C5.
bias_board
If you’ve already looked at the GitHub project, you might have noticed that there are no design files. I use Altium Designer for my schematics and PCB layouts. It’s a fantastic tool, but Altium’s decided that hobbyists are not a target market so this is a very expensive product that not many hobbyists own, so I don’t think there’s much point to posting design files. Maybe if Altium releases a noncommercial free license, but  I doubt that will happen. Altium recently raised their prices by $2K so the direction they are going in is pretty clear.

I’ll be posting updates with additional information, such as a CRT compatibility table, pin connection tables, and so forth.

 

CRTs with Magnetic Deflection

Projects, Uncategorized 7 Comments

Whew, Maker Faire was a lot of work, and a lot of fun!

Now that the Asteroids arcade machines are finished, I’m thinking about some suggestions that people gave me. A lot of people want a larger screen. Even with a precision 3″ CRT (3RP1A, for the curious), playing the game involves lots of squinting and hunching over.

In my collection I have a pile of 5″ CRTs, mostly electrostatic but a few magnetic. The electrostatic CRTs are quite long: 16 3/4″ is a pretty common length but some are even longer. The distance is necessary to maintain a reasonable deflection factor. 70-100 volts applied across a pair of deflection plates leads to 1″ of beam deflection. While I could certainly build a project with a very long case, this gives me a good excuse to experiment with a few of the magnetic CRTs I have.

Starting with cardboard harvested from old toilet paper rolls, I made a tube that can slip over the neck of a CRT. Next I cut 12 notches in both ends so I could hook magnet wire around them. Then I cut the whole arrangement into two halves to make it easier to wind the first set of coils on the inside of the tube.
Hand Wound Deflection Yoke
Then I wound 19 turns of wire on each half, starting with a small set of 3 turns spanning 2 notches, and then winding 7 turns across 3 notches, and finally 9 turns across 5 notches. After taping the two halves back together, I soldered the two sets of windings together in series. The polarity is critical because the magnetic fields need to add together, not cancel out. The second set of windings used the same winding pattern only this time I wound them on the outside of the cardboard tube and rotated 90 degrees.

This coil arrangement is called a semidistributed winding: look at (c) in the figure below.
Deflection Yoke Styles

After wrapping a layer of insulating tape over the windings, I wound a thin strip of soft steel around the whole thing. This provides a high permeability path for the part of the magnetic field outside of the CRT envelope. The idea behind the winding technique and all that is to create a uniform magnetic field in the path of the electron beam. The uniform magnetic field deflects the electron beam according to the Lorentz force law:
F=q(E + v x B)
E is the electric field. In this case, it’s the potential between the cathode and the anodes in the electron gun as well as the final anode. This accelerates the electrons forward towards the face of the CRT. The deflection force is the cross product of the velocity (v) and the magnetic (B) field. You can figure out the direction of force using the left hand rule. Since the electrons are moving towards the screen, a magnetic field in the up-and-down direction pushes the electron beam from side to side. This means that the horizontal deflection coils have to be positioned on the top and bottom of the CRT neck.
5AXP4 With Yoke

And it worked! I slid the yoke onto the neck of a 5AXP4 which is a CRT designed for electrostatic focus and magnetic deflection. It took nearly 1 amp to get a bit under an inch of deflection. To decrease the current I can add more windings. There’s a classic engineering tradeoff there between response speed (bandwidth) and current, since more turns have more inductance and parasitic capacitance. Incidentally, since the magnetic field strength is proportional to the current in the coils, I’ll have to drive them with a linear amplifier design that servos the current instead of the voltage.

The next step is to figure out how to handle magnetic focus. I have a 5FP14 which requires an external permanent magnet or electromagnet to focus the beam instead of the usual electrostatic lens. My friend Kent sold me a military radar display that uses a 5FP7A, and this display has a ring magnet connected with a screw and gear mechanism to adjust the focus.
5FP7A

A great resource for me has been the MIT Radiation Laboratory Series, Volume 22: Cathode Ray Displays, available here as a free PDF download. It’s full of details on how deflection and focus coils were manufactured.

I’ll leave you with this beautiful shot of the zero-first-anode-current electron gun assembly in the 5AXP4. The visible elements are (right to left): cathode, grid, accelerator, focus electrode,  and second anode (electrically tied to the accelerator).
5AXP4 Electron Gun

Asteroids Mini Arcade Machine

Uncategorized 14 Comments

Here’s a tiny Asteroids arcade machine I built from scratch. It uses a vintage 3″ round cathode ray tube driven from an amplifier board and high voltage supply of my own design.

A friend of mine ported his 6502 emulator to an STM32F4 Discovery board so this arcade machine is able to run the original Asteroids program without any modifications. The STM32F407 processor has two DAC outputs which work perfectly for driving the X and Y deflection inputs on the amplifier board.

Turns out the ST Micro part is really good for driving displays like this. Not only do the DAC outputs work great for deflection, but the hardware floating point really speeds up things like 3D vector rotation.

Come find me at the Bay Area Maker Faire! (May 17 and 18–go buy your tickets now!) I will be located in the Fiesta Hall (the dark room with the Tesla coils). I’ll set up a second arcade machine running some additional demos, including a Super Secret Game. You’ll just have to come and find out what it is.

« Previous Entries Next Entries »