Introduction
In a previous chapter, I started looking into a ROM implementation using optical means, that is, LEDs and photo diodes. I’ve shown a sense amplifier design and some theoretical musings about performance. I left the topic off where it became clear that some experimentation with real components will be necessary.
Well, the components arrived, so it’s time to pick up the subject again.
Real photo diodes and LEDs
I’ve soldered a photo diode (B17M1PD–H9B000114U1930) and an LED (B15V1IR–A1C000152U1930) on two separate bread-boards. I’ve connected the photo-diode in parallel with a 10k resistor. This is to turn the minuscule photo current into a meaningful voltage. Then, I connected the photo diode (and the resistor) to my DVM to measure the voltage across it and the LED to my bench power supply.
I’ve used some putty to affix the two boards some distance away from each other:

Not very precise, but I measured about 46mm of distance. I verified that the DVM shows 0V with just ambient lighting, then turned on the power supply (in constant-current mode) to provide 20mA of LED current. The corresponding voltage drop was 1.27V, which is the forward voltage drop of this diode (at this current). Good to know.
The DVM reading jumped to 14mV. That corresponds to a 1.4uA of photo current.
I’ve also verified that changing the LED current (40mA all the way down to 5mA) changed the photo current linearly, at least as linearly as my measurement prevision allows for.
Next, I removed the boards from the putty and tried to get the LED and the photo diode as close to each other as possible. Still keeping the LED current at 20mA, I managed to get the voltage on the DVM up all the way to 520mV, corresponding to a 52uA photo current.
What does it tell me?
The second measurement, although not terribly scientific, gives me a lower bound on the sensitivity of this setup: 20mA LED current results in 52uA of photo diode current. This is with pretty good (I’m going to call it 100%, to be pessimistic) coupling.
Let’s compare this to the opto-coupler model in LTSpice. That one measures 35uA under the same circumstances. This tells me that the LTSpice model is a pretty good, if somewhat pessimistic representation of what I should expect in real life.
Another outcome of these primitive tests is this: If I loose 99.9% of the light in the real ROM design, the corresponding photo current would drop to 52nA. The photo diode has a dark current of 10nA. So the signal-to-noise ratio is certainly poor. Maybe workable, but borderline for sure.
A bigger problem is this: I planned on having a 1kOhm input resistance of my sense amplifier. That will only drop 52uV for this current, which is about half of what the slightly optimistic simulation results show the sense amps input sensitivity will be.
In that chapter, I concluded that I will need to improve the situation by about an order of magnitude, and it seems reality bears that out.
Now, here’s the interesting thing: the LED I’ve used here is specified all the way up to 100mA, with an absolute maximum pulsed current rating of 1A. So, provided sufficient cooling, I can get a 5x increase in light output. If I dare to pulse the current (I will have less than 50% duty cycle in the real system, probably closer to 25-33%), I can probably go all the way up to 200mA, which is exactly the order of magnitude increase I would need. So maybe there is – pun intended – light at the end of this tunnel?
LED driver recap
To make sure I have enough headroom, I will do the following:
- Design the drive circuit to be capable of delivering 200mA current into a load with a voltage drop on the load of at least 6V (this is an educated guess at what the combined forward voltage drop of three series LEDs at 200mA current would be).
- Allow for three series LEDs
- Design the drive for 250ns pulses
This is obviously not the simple drive matrix, I’ve shown in the previous chapter. It’s much closer to the X/Y line drivers in the core memory. Some simplification can be done as I still don’t need bi-directional current drive capability, but the level shifters, voltages and currents needed are of similar complexity.
The good news though is that I can probably re-use much of the circuit, including the PCB design from the core memory, if I design them carefully with both applications in mind. I just have to build more of them.
Sense amp recap
Since I wrote down my ideas about the sense amplifier, I’ve learned about a new circuit: a trans-impedance amplifier, or TIA. This is the canonical circuit to interface to photo-diodes, and this is how it normally looks:

This of course, I can’t use as-is: I need a discrete solution. Also, this circuit would normally be unstable due to the photo-diode capacitance, there usually is a stabilizing capacitance in parallel with Rf, which further lowers the operating frequency. At any rate, the learning here is this: to interface to a current-source in the nano-amp range, one wants as low of an input impedance as possible.
This might be counter-intuitive at first. As the input impedance effectively converts the input current into voltage, a high input impedance would mean larger voltages to work with. There are two reasons to not go there. One is that the input impedance, at least the resistive portion of it and the capacitance of the photo diode create a low-pass filter: a high input impedance would result in low operating speeds.
The second problem is noise: the input impedance has an (input-referenced) thermal noise component to it. Here’s what the equivalent circuit and the equation for such a noisy (i.e. real) resistor looks like:

kB is the Boltzmann constant (1.380649×10−23 J⋅K−1) and T the temperature is in Kelvins. Re-arranging this to Irms, we get:

Putting in 1kOhms, room temperature (call it 300K to make it simple) and a bandwidth of 4MHz (to allow for 250ns wide pulses more or less) we get: Irms = 8.13nA of noise current. That’s on the same order as our dark current of 10nA. I guess that’s acceptable, though better would be … better.
So, can we do something better?
Let’s recap what my current sense amplifier looks like:
The idea is that the amplifier has to operating mode: a ‘track’ mode, where the nodes O+ and O- are simply amplified versions of the inputs. This is when ‘EN’ is held low. When ‘EN’ goes high, a positive feedback is turned on (the output is fed back to the input through Q29 and Q30 overwhelming the normal input path of Q10 and Q11), forcing the amplifier to saturate to one or the other extreme based on the small bias on the input just prior to the change of ‘EN’. This is the ‘sample’ mode of the amplifier.
I recently uncovered something rather disturbing about this design: the input current of the sense amp changes a ton around the edges on the sample (EN) signal. This current change in turn induces a lot of voltage change on the inputs. Orders of magnitude higher than the differential input signal. For whatever reason it doesn’t screw up detection, but I’m afraid that’s only because of the ideal matching of the components. In real system, this might very well not work at all.
After some digging, I started to convince myself that the problem is with the common-mode difference in the input and output voltages. (This is a fact: the input common mode voltage is much lower than the output one in this circuit. The only question is if it is what causes the problem.)
What I suspect going on, is that the voltage at the top of the current source (marked ‘common’ on the schematic) changes with the common mode on the input (or the output when I turn on the positive feedback). Since this common mode is quite a bit different, I’m guaranteed a large voltage jump on this node. Notice, how both input transistors (Q10, Q11) have their emitters facing this node. The base-emitter capacitance of these transistors then couple this voltage jump to the base and – through the emitter followers on the input – all the way to the photo diode.
The question is: should I care? This jump happens when we enable the (positive) feedback. By definition. So, when this all occurs, we try to overdrive and drown out the input with our feedback. We certainly succeed it seems, and the fact that we disturb the input along the way should not be a problem. The problem arises only if the input-side transient is so long that it disturbs the “track” operation as well. In other words, this is going to be a speed limiter. So, let’s see!
In this experiment, I have double-emitter-follower input stages and before them, an ideal voltage buffer to make sure the input current spikes don’t influence the photo diodes or their bias regulator. You see that the differential input voltage (purple) starts following the differential input (blue trace) after about 165ns. That should probably work: even if the enable pulse is 250ns long, that leaves about 100ns of tracking behavior. At room temperature at least.
Even after allowing the transient to couple all the way to the input, the behavior seems to recover within this same ~165ns window:
So, maybe this is OK?
Should we use current-follower inputs?
Back to the question of input impedance: the current emitter-follower input stage design is in essence a rather primitive voltage mirror: the output voltage follows the input. It itself has a high input impedance, but I use a 1kOhm resistor to convert the input current to voltage; I have in essence a 1kOhm input resistance.
What if I replaced the input buffers with a common-base stage instead? That would mirror the current form its input to the output. It has a low input impedance on its own and a high output impedance. At the same time, the input-output capacitance should be less compared to the emitter follower, so the isolation of the current spikes should be better. So, can we do something like that? Let’s investigate! This is what I ended up doing:
On the front-end there’s a common-base stage, feeding a common-emitter stage, that’s finally feeding the diff amp input. A zenner-based supply biases the photo diodes in the reverse direction, while at the same time forward-biases the base-emitter junction of Q3 and Q4, the common-base stages. R8 and R11 make sure that the base-collector junction is reverse-biased, in other words, set the operating point for Q3 and Q4. The circuit works, but did it help with the current spikes to the input?

Well, not really. The amplitude decreased, but it’s still there. It is still several orders of magnitude higher than the input signal, so if it was a problem, it wasn’t solved. And with all the added complexity, it is probably not worth the effort. In fact, with more components come more chances for mismatches on the two inputs which is rather problematic when dealing with such low differential signals.
Overall, I don’t think this will solve my problems.
Final words
Let’s call it quits for today. It seems I have now three applications derived from my base differential amplifier design: the sense amplifier for the core memory, the playback amplifier for the tape and the sense amplifier for the ROM. It seems worth while spending some time better understanding this class of circuits, maybe seeing if there’s a better base design I can come up with. I will come back to that question next.



