Now let's take a look at the non-inverting push-pull driver circuit. There are two significant differences. First, the inverter formed by Q3/R3 is now in the path of the low-side driver rather than the high-side driver. Second, since it's the high-side driver that needs the higher voltage provided by the bootstrap load, R2 is now 2.2K and R3 is 4.7K.
Sunday, January 17, 2016
Inverting Push-Pull driver characteristics
I haven't had time or motivation to dig into the shoot-through analysis described in the previous few posts, but I thought I'd look into another aspect of the same problem: the push-pull drivers.
These come in two basic categories: inverting and non-inverting. I then have two implementations of each, depending on whether the high-side driver is an FDV301 or a BSS83 FET. Each of these requires separate evaluation. In this post we'll look at only the inverting flavors, leaving the non-inverting flavors for the next post.
These come in two basic categories: inverting and non-inverting. I then have two implementations of each, depending on whether the high-side driver is an FDV301 or a BSS83 FET. Each of these requires separate evaluation. In this post we'll look at only the inverting flavors, leaving the non-inverting flavors for the next post.
Monday, January 11, 2016
Whittling down the suspect count
All I wanted to do as a first pass was to identify those that need a closer look and which don't. But since I don't have an index of which FETs are used for what purpose I had to take a look at all 105 FETs connected to Vdd to identify them. Searching for a FET by part identifier and recognizing one of the common configurations I listed in the previous post only took a few seconds per part.
It turns out there are eight tri-state drivers, reducing the number of suspect circuits from 20 to 12. Here's the list:
It turns out there are eight tri-state drivers, reducing the number of suspect circuits from 20 to 12. Here's the list:
- T0667 -- ACC D0 input latch precharge
- T0668 -- ACC D1 input latch precharge
- T0669 -- ACC D2 input latch precharge
- T0670 -- ACC D3 input latch precharge
- T0857 -- I/O D3 output(?) precharge
- T0858 -- I/O D2 output(?) precharge
- T0859 -- I/O D1 output(?) precharge
- T0860 -- I/O D0 output(?) precharge
- T1333 -- unknown
- T1477 -- unknown
- T1510 -- ALU D1 precharge
- T1512 -- ALU D3 precharge
Sunday, January 10, 2016
Looking for more potential short-circuits
Although the shoot-through problem in the incrementer will be fairly easy to address, I'm concerned that similar situations could exist elsewhere. I consulted with Lagos Kintli, the author of the awesome 4004 simulator, about modifying it to automatically detect these situations. We've concluded that it's not technically feasible, but I might be able to analyze the internal state log the simulator already provides.
This got me thinking about the scope of the problem. For this problem to occur, there must be an active pull-up transistor with the drain connected to Vdd. This can be determined by searching the simulator's netlist; there are 104 of them. Of these:
That leaves20 12 potential problems to be reviewed. That's a manageable number for a manual search.
This got me thinking about the scope of the problem. For this problem to occur, there must be an active pull-up transistor with the drain connected to Vdd. This can be determined by searching the simulator's netlist; there are 104 of them. Of these:
- 58 are used in push-pull drivers (see below).
- 12 are used in Read Precharge circuits in the Instruction Pointer array.
- 8 are used in Read Precharge circuits in the Scratch Pad array.
- 6 are used in the IP Incrementer; one of these is a problem.
An undetermined number8 are used in Tri-state push-pull drivers.
That leaves
Friday, January 1, 2016
A second i4004 design flaw?
The designers of the Intel 4004 CPU were innovative and talented, but like all humans they make mistakes. One, affecting the Instruction Pointer counter, I described in a previous post. The more I look at this, the more I think this is a second mistake.
Subscribe to:
Posts (Atom)