Rhococo prototype hardware debugging
|Project RhoCoCo Prototype hardware debugging|
|Almost all new hardware, (exceptions do exist, but are rare) will have some faults in them that must be found and solved, this page handles what I found during this quest.|
April 10, 2019 First bug finds
Unfortunately most new hardware won't be 100% functional on first try, Rhococo (Rev 1.8) is no exception. I already noticed a few non optimal things in the PCB layout. For one, I noticed that all the ceramic radial caps I had bought had wires bent to a 2/10 inch pitch, while the PCB used 1/10 inch, and 3/10 inch, that is already a reason for a new (rev 1.9) redesign.
But during first use, I also measured some voltages that were not exactly right. For one the supply voltage for the SRAM was not half a volt or so lower than 5V, but much less lower, the voltage drop over the D9 diode was just a few hundred millivolt (0.25V or so, not the expected 0.6V) meaning the current the SRAM draws is very low, a 1N4148 needs a good mA for a 0.6mA drop. Now is this more a theoretical than a practical problem, because I'm sure that when the SRAM is accessed (chip enable going low) the current consumption will immediately rise above a mA, and the diode will do its job, still I would prefer it when the voltage would be a stable 4.5V. I considered that the simple solution would be to place a resistor across C11 that draws 0.5mA from the 4.5V, so an R = V / I = 4.5 / 0,001 = 4500 Ohm, or 4K7 should work. I tried it by soldering 4K7 across C11, on the back of the PCB, and it worked, the supply voltage across the SRAM did indeed drop by 0.5V, to about 4,7V. so that should work.
a more difficult problem to solve is that I measured 3.9V across the 3V3 supply! somehow the 3V3 is pushed up, (meaning somehow more current from a higher voltage flows into the 3V3 supply line, than is dissipated from the 3V3 line, and ass the 3V3 regulator can only source current, not sink current the voltage rises above the value the 3V3 regulator tries to regulate to) I had expected that there would be a current flow into the 3V3 supply through protection diodes in the propeller chip, but not that the 3V3 supply would rise beacuse of it! the reason is that 5V signals from the Z80 end up on inputs of the Propeller chip through the current limiting 1K resistors in the data-lines, and the Z80 control output signals /RD /WR and /IORQ. unfortunately while investigating this, I also found the first real layout mistake I made, in that I forgot to insert a limiting resistor in /IORQ, but moved it to the /BUSACK signal where it isn't really needed. This will necessitate a patch!
So I have to find a solution for too much current flowing into the 3V3 supply, either loading more current from the 3V3, or increasing the resistance of the series resistors, or both.
Its true that when the propeller is started, it will draw more current. Presently the whole board draws just 60 or so mA from the 5V supply, of which perhaps only a few mA or so is drawn by the 3V3 regulator (I could check that by removing all 5V powered chips, and then measuring the consumption again) ! I expect the 3V3 consumption to rise to a few hundred mA the propeller starts working, still I have to do something about that 3,9V on the 3V3 supply, the resistors are now dimensioned to limit the current flowing into a propeller pin to no more than 1mA, I suspect that is much to much, but which resistor value is needed can really only be determined experimentally, I regret not remembering during build up to make these resistors easily replaceable as I had planned.
For R30 to R37 (data signals) and for R25, R26 and R27, I also plan to remove these resistors, and use round female socket pins instead, so that I can quickly replace these resistors with different values. However, a first attempt to remove the resistors failed, its hard to do without specialized equipment, for example I have to get better solder wick, and so I choose to take the board to my day-job, where I have better equipment. I cannot afford to damage the PCB when pulling out these resistors. Meanwhile I managed to replace the resistors with suitable sockets, as the resistors are placed very close together, I could not use 1/10" strips, but had to use loose contacts, but this "operation" was done under a microscope, and went well
One possible solution to the problem of too high voltages on 3V3 line is to mount a 3V6 2% zener across the 3V3 supply, I have looked at the datasheet of a 3V6 zener, and it seems possible to do this. I acquired a 3V6 Zener, and will try. If I can get the 3V3 supply line under control, I can use lower value series resistors, which is better when trying to drive the SRAM through them.
I looked up the quiescence current of all the 3V3 powered devices, and came to the conclusion that its in the order of a few dozen µA, so that is the main reason that this problem exists, it will probably be enough to statically load the 3V3 supply by a few mA, for this phenomenon to disappear.
April 16, 2019 solution for raised 3V3 during boot
I noticed that the current draw from the propeller, the serial EEPROM, and the I2C I/O expander, (the three 3V3 powered devices , which are all inactive at first boot) draw -very- low current, so if the propeller doesn't start up, the tiny bit of current that flows from Z80 control signals into the propellers GPIO protection diodes and then into the 3V3 supply has no path to flow away, so it raises up the 3V3 supply level to an unacceptable 3V9. To prevent this I have decided to passively load the 3V3 supply with 1mA. I chose 1mA, as its a hundredth of the expected current draw, so negligible. a 3K3 resistor across the 3V3 supply will do the trick.
Worst case there could be about ten of such leaks from the Z80 control and data lines into the 3V3, so I should dimension the limiting resistor so that no more than 1/10th of a mA (100µA) can flow into its protection diode. Given that over these series resistors about 1,7 Volt will fall (5V minus 3.3V) the resistor should be dimensioned, (at least initially) as R = 1,7V / 0.0001A = 17000 ohm, or 17K. I will try 15K resistors first, with the idea that 10K might also be enough, especially as about 0.6V should fall over the protection diode.