So, I went the distance and did a full polymer capacitor replacement therapy on this crappy card. May this be of too long, confusing, and baffling post, which even I don't understand why I did it. Anyways, as the new capacitors are significantly different from the originals, it means a lengthy process to consider all the things related to appropriate adjustments of the regulators.
First off, the main dual voltage controller on the card has a code 6529CBZ on it. Many manufacturers seem to implement the same controller IC, but based on the "i" on the logo, I will assume this is made by intersil, so it is probably ISL6529. It creates the voltage for the GPU via a dual-MOSFET half-bridge topology switch-mode buck converter, and using a single MOSFET controlled linear regulation for the RAM. Below is the picture of the reverse-engineered regulator & compensation circuits mapped on to schematics from the regulator's datasheet.
The attachment compensation_reverseering_markings_2.png is no longer available
In this case, I think the input capacitors will experience way less ripple than what the combined ripples in the regulated outputs are, due to technical details I will not start dvelving around here. Also, in the case of the RAMs, required ripple rating for the capacitors is difficult to be determined as it is a linear regulator, and the RMS current / "ripple" affecting the capacitors depend on the loading characteristics of the RAM chips and purely how fast the regulator is able to respond to it.
Unfortunately, I did not find any reliable source telling me what the GPU power consumption is for the FX 5200 / 5500. I am going to just guess that for the GPU, that the power consumption is about 2/3rd of this card's total. For the RAMs, this could somewhat be estimated by summing the current consumptions together for all the chips based on the datasheets, but I am too lazy to do that. I am just going to use the worst possible wattage that can be drawn from the PCI slot as the reference point, which I guess is max. 75 W, so 2/3 * 75 = 50 W for the GPU and 25 W for the RAM (surely way overblown estimates). The ripple current is probably going to be worst at the GPU regulator output, due to the highest currents being drawn there, and due to a large voltage drop from 5 V to 1.3 - 1.5 V. So, I will use that as the ripple requirement baseline for all capacitors, if I can somehow estimate it...
Here, I will do some very extremely over-simplified and lazy ripple calculation for the GPU output bulk capacitors. I will do a crude approximation of the ripple based on some elementary school level calculations, and assuming 50% PWM duty cycle at the regulator output. I.e. when the regulator switch is open, current starts draining from the capacitor, and when closed, capacitor is being charged at the same current rate. The RMS ripple current value should be the same regardless of the duty cycle percentage, as long as it is never 0 or 100 %.
The current the GPU is pulling @ 50W assumption is I = P/U = 50 W / 1.3 V ~ 38.5 A. I will consider only this as I think this will be the worst ripple current situation on the board. The amount of charge in the bulk capacitors in coulombs is represented as C = F * V = 2000 uF * 1.3V = 2600 uC. Also, Coulombs can be represented as Amps * seconds.
Using this, I form a rough estimate of the charge being transferred to and from the capacitor in one regulator cycle as 38.5 A / 600 kHz = 64,17 uC (the regulator has a 600 kHz control cycle). So the proportion of the RMS current cycling through the capacitor of the total current going to the GPU is 38.5 A * 64.17 uC / 2600 uC = 0.95021 A. This RMS ripple current is therefore extremely roughly ~ 0.5 A per each GPU output main capacitor. I will also use a 20% oversizing rule of made-up-thumb, so the new 1000 uF capacitors I will use, must have a ripple rating higher than 0.6 A @ 600 kHz.
I also can't be bothered to find out what the small linear regulator near the VGA & S-Video ports is used for, but just based on the fact that those caps are only 100 uF when the others are 1000 uF, I will assume that the ripple those must endure is much lower also. I will most likely use at minimum 0.2 A @ 100 kHz ripple rated capacitors for those. The regulator has a code EH11A, and the match google gave me seems to be AZ1117 adjustable low-dropout linear voltage regulator with max. 1 Amp output current. At least based on its footprint and pin order, and one of the chip Marking ID:s listed in the AZ1117 datasheet, it is a match... There seems to be no special mentions regarding the capacitor ESR for this regulator, other than tantalum caps were used in the examples, so I will just assume that it is going to be okay with polymer capacitors.
The ceramic capacitors on the voltage rails have extremely small ESR, but based on my experience, it is surprising how quickly mOhms accumulate on the current path, depending on the distance from the regulator, even if the Voltage rails are fully filled copper planes on the card. Therefore, I will ignore those. Also, how on earth would one check all of the voltage rail with all the components on it, other than by being insane?
After considering the things above, and looking for suitable capacitors from tme.eu, I will use the new KEMET A755KS108M0JAAE013 1000 uF 6.3 V polymer capacitors for GPU & RAM regulators, which are rated 13 mOhm @ 100 kHz and above, and for 4.1 Amps ripple.
For the mystery linear regulator, which originally had 100 uF 16 V rated capacitors, I will use 100 uF 16 V Panasonic 16SEPC100M polymer capacitors with ~2.5 Amp ripple and 24 mOhm ESR rating. In the case of an integrated linear regulator IC, even very low ESR should be fine if the capacitors are above the minimum required value...
Like always, after it is all done, only measurements can tell the whole story in the end.
Figuring out the GPU regulator feedback compensation:
This is going to be tricky, as I don't know the inductance value of the output coil in the GPU regulation circuit. First, let's figure out how the compensation is set on the board originally, as if it means something... After some reverse engineering, the Z_IN -section / second zero & pole of the feedback loop's filter is completely absent. However, this seems to be a common theme with these compensation circuits that I have seen in the past, that the phase margin of the feedback loop is very rarely considered and only the first degree filter is implemented to the compensation.
Of the first degree filter / Z_FB -section, only the first compensation zero is put in place with "R2" and "C1", but no filter pole has been set as the "C2" is absent. Therefore, the first filter pole is not set according to the ESR zero of the circuit, which is weird. As there was not even a place to put the "C2" on the board, maybe it was intentional...
In the ISL6529 datasheet, the ESR zero probably refers to frequency where the output capacitors are in resonance with their internal ESR, effectively snubbing / eliminating noise by most amount around that frequency, so that would be a good place to position the feedback filter's pole. I.e. that is where the regulator's voltage feedback will be set to be most sensitive in reacting to changes in the output voltage, and that is ok as the output capacitors are most efficient at filtering the output voltage around that frequency.
Anyways, I had to measure "R2" manually, and it seems to be ~56k. Manual measurement was necessary as no matter how I looked, clearly the markings looked like E95, even under a microscope, which is gibberish. If it was supposed to be 563, then 5 was clearly upside down and 3 looked exactly like E... Must be from a quality manufacturer. "C1" I measured to be about 1.05 - 1.1 nF.
According to the datasheet, the first zero of the feedback loop's filter must be placed where F_Z1 = 0.75 * F_LC. This is probably due to the fact that the output coil (Lo) and capacitors (Co) can form an LC self-resonant circuit, and the voltage feedback filter of the regulator must be designed so that the regulation won't become unstable at that frequency. The LC self-resonant frequency can also be thought to be a pole on the voltage feedback's transfer function. If the regulator's response based on the feedback is too much out of phase / delayed with respect to the output voltage's rate of change, when the LC circuit is in resonance region, it can amplify the amplitude of the voltage swings near that resonant frequency, which would be very bad. Placing a feedback filter's zero accordingly, where the regulator's response to feedback is at its least sensitive point, it will significantly reduce / completely eliminate this problem.
In order to try to figure out how I will need to change in the existing compensation circuit, I will first do some reverse engineering based on the regulator datasheet, to try to figure out for what the filter has been originally designed for. The, presumably output's self-resonant, frequency used based on the measured filter component values on the board seems to be:
F_LC = F_Z1 / 0.75 = 1 / (0.75 * 2 * pi * R2 * C1) = 1 / (0.75 * 2 * pi * 56*10^3 Ohms * 1*10^-9 F) = 3789.40340695 Hz.
Using this, we can solve approximately the inductor value (Lo) for what the filter circuit on the board should be good for, knowing that the output capacitance is at minimum 2000 uF. Using the datasheet, we can deduce the formula for Lo (output inductor value) as:
Lo = 1 / (Co * (2 * pi * F_LC)^2) = 1 / (2000*10^-6 F * (2 * pi * 3789.40340695 Hz)^2) ~ 0.882 uH.
Unless I made a mistake, and looking what the inductor looks like, this is way off. I am going to guess that the component values may have been goofed on the compensation side on the board. So, now I have to measure the coil ring size and the amount of wire turns around it to find the actual value. Great... Going to try to use an online calculator for that.
From rough measurements, the coil has ~9 turns, wire is ~1 mm thick, Outer Diameter of the ring is ~ 13 mm, Inner D. ~ 7 mm, and the height ~5 mm. Using these and relative magnetic permeability of 100 u_r for the core (probably about the same as powder iron core ring has at most), I get 8.713 turns in the https://coil32.net/online-calculators/ferrite … calculator.html, if the inductance value is set as 4.7 uH. This is again guesswork, as I do not have the motivation to start figuring out what the actual core material used in the coil is. The result seems believable, as I have another of these "FX 5500 PCI" cards, which actually has marking on the output inductor that reads 4R7, which means 4.7 uH. Also, iron powder cores seems to be commonly utilized in high power inductors.
Finally, I can start to somewhat calculate the actual recommended values for the compensation circuit. Of course, these compensation calculations I am making, following the regulator controller's datasheet, are not even intended to provide the exact optimal values as they can not take in to account the intricacies of the PCB layout, other components on the voltage rail, etc., but at least they should be somewhat safe "in the ballpark" values. The extent of the catastrophy I will find out only after I have implemented everything and measured the voltages afterwards :p
So first, the F_LC needs to be calculated, with the assumption that the inductor is 4.7 uH:
F_LC = 1 / (2*pi * sqrt(Lo * Co)) = 1 / (2*pi * sqrt(4.7*10^-6 H * 2000*10^-6 F)) = 1641.55789752 Hz.
Next, components for the filter zero must be chosen so that at F_Z1 ~ 0.75 * F_LC, i.e. F_LC ~ F_Z1 / 0.75:
F_Z1 / 0.75 = 1 / (0.75 * 2*pi * R2 * C1) = 1 / (0.75 * 2*pi * 56*10^3 Ohms * 2300*10^-12 F) ~ 1647.56669867 ~ F_LC.
So, just replacing "C1" with a capacitor value of 2.3 nF should do the trick. Unfortunately, this value is difficult to find, so I could use 2.2 nF and 0.1 nF C0G ceramic capacitors in parallel, stacking them on top of each other. However, using a standard value of 2.4 nF should be close enough as these are only "in the ballpark" values anyways, so that is what I am going to use. Note, that there are additional ceramic capacitors also in the output rail in addition to the bulk polymer capacitors, which I am obviously ignoring here. It is also why I rather chose 2.4 nF over 2.2 nF, out of the closest standard size options, to give a bit of headroom for the fact that the output capacitance value is actually a bit higher.
Now, the last thing I will calculate is placing the first pole of the filter, i.e. where the voltage feedback will respond most aggressively to changes in the output voltage, by first solving the ESR zero (F_ESR), taking in to account I have two bulk output capacitors in parallel:
F_ESR = 1 / (2*pi * ESR * Co) = 1 / (2*pi * 1/(2/(13*10^-3 Ohms)) * 2000*10^-6 F) = 12242.6879301 Hz.
This should closely match the positioning of the F_P1, i.e. F_ESR ~ F_P1, so we need to find suitable value for "C2":
F_P1 = 1 / (2*pi * R2 * (C1 * C2) / (C1 + C2))
= 1 / (2*pi * 56*10^3 Ohms * (2.4*10^-9 F * 270*10^-12 F) / (2.4*10^-9 F + 270*10^-12 F)) = 11710.3091395 ~ closest to F_ESR with a standard capacitor value of "C2" = 270 pF. Again, some parallel combinations to achieve more optimal capacitor value could have been used, but I am not going to do that and choose the rounded up standard capacitor value :p
So, as a summary, for the GPU voltage feedback compensation, I changed the filter capacitor "C1" to 2.4 nF, and "C2" with a value of 270 pF should be added to the compensation circuit somehow, when using the two new 13 mOhm ESR polymer capacitors at the regulator output.
However, after these changes, something on the card was now making an audible whine, which I did not like. So, I removed the "C2" and the whine disappeared... Based on complete speculation; maybe the regulator was now reacting too fast when adjusting the output voltage at low load, and it caused PWM duty cycle to go to 0 % at times making some components sing as it bounced against that limit at an audible frequency range. Maybe that was also the reason why "C2" had been left out from the compensation circuit originally. Leaving it out should not be too detrimental to the performance of the regulator, it may just cause the regulator to react slower to changes in load under some specific circumstances.
RAM regulator feedback compensation:
For the linear regulation portion of the ISL6529 used for the RAM voltage rail, there was a table in the datasheet to use as a guide how to set the feedback compensation. It seems that similar things apply when considering compensation for the RAM regulation feedback for its stability, as was the case with GPU regulation, except everything is now more load side dependent. First, it would have to be figured out where the used MOSFET's resistance in the linear region and the output capacitor form a pole in the feedback transfer function. After this has been found out, it seems the the filter zero should be set to compensate for this. Unfortunately, there seems to be no simple way of deducing the properties of the resonance of the RAM voltage output circuit on the board with the mystery MOSFET and other factors at play, without some fairly involved load analysis at different frequencies. Therefore, I will just use the closest entry from the reference table provided in the datasheet, and I think the 1000 uF @ 30 mOhms table entry is the one I will use to see what filter component values I could try.
From that, I can see that I only need the "C16" capacitor in the circuit. Originally, the compensation circuit on the board seems only have component footprints for setting the filter zero with "R12" and "C4", but on the board the "R12" was 0 Ohms and the capacitor "C4" I measured to be ~115 nF. As the "R12" is 0 Ohms, it practically already makes the circuit equivalent to where "R12" + "C4" = "C16" <=> "C4" = "C16", except the capacitor value seems to be way too high... Therefore, I changed the "C4" to 10 pF. I will have to measure how the voltage looks under load, and if it seems ok, I will just call it good enough for this swamp.
After all the pain above, the summary of the compensation changes I did were just the following:
- Changed "C1" to 2.4 nF.
- Changed "C4" to 10 pF.
Note that the designations for components I have used anywhere on this post do not match the markings of the silk screen on the board!
Other noteworthy things:
- On the card, the RAM regulator's 1 uH input choke looked so skimpy (suspiciously thin wire and significant temperature increase during use), that I just had to change it to a more sturdy choke. I switched it to FERROCORE HPI0630-1R0, which has a saturation current RMS rating of 11.5 Amps. If I go by the 25 W maximum power budget guess, which I completely pulled from the air for the RAM chips, this should be more than enough as I = P / U = 25 W / 2.5 V = 10 A. In practice, I doubt the RAMs take even 3 Amps in total, as it seems to be maximum that is even considered for the ISL6529 regulator controller in its datasheet. Therefore, the choke I used is way overkill, but whatever. Only the best for this crappy card.
- Next to the RAM compensation circuit's resistor R5, there is a another resistor against ground. These two resistors set the 0.8 Volt feedback reference point which adjusts the RAM voltage. By default, it should be set to have 2.5 Volts on the RAM voltage rail, so changing these will adjust the voltage. Important note regarding R5, that according to the ISL6529 datasheet, it must be 5 kOhms or less. Based on the markings (36B on the resistor), it is 2.32 kOhm resistor. Again, the markings on the resistor next to it were so bad that I could not make out the value for that, which is the low side resistor in the RAM voltage feedback divider circuit. Could be easily calculated.
- I drew on the picture how the feedback voltage set resistors are located for the GPU in green color. I am not interested enough to type here what those are, as markings for those should be visible in the picture. Could be different on different "production batches" of these cards though. The transistor Q14 seems to connect another resistor in parallel with the resistor against ground in the GPU feedback voltage divider. Maybe transistor Q14 and the related resistor is there for controlling the GPU voltage from software. There does not seem to exist an adjustment circuit for RAM voltage though.
- The RAM chips on this card are all rated for 400 MHz DDR CAS 2.5 @ 2.5 Volts. All seem to be rated even up to 500 MHz DDR CAS 3 @ 2.6 Volts... Surely I would not try to ever push those numbers on this crappy card :p
Finally, some results after these modifications:
The GPU voltage is about 1.46 Volts on this card, and on the RAM it was about 2.49 Volts. I used a hand held 100 MHz oscilloscope to check the GPU and RAM voltages under load, and did not see any significant swings or artifacts there. The only problem was that the switching MOSFETs for the GPU regulator were on the backside of the card, so the noise from those were picked up quite strongly by my scope probe, so it was a bit difficult to see the waveform of the GPU regulation output. The ripple seemed to be way under 2% range just by eyeballing it under load.
If the GPU was pushed above 310 MHz, the card started freezing under load. If the RAM is pushed above 350 MHz (DDR), the graphics started glitching.
300 on GPU and 333 DDR MHz on RAM seems to be fine on a K6-3 550 MHz platform. Stability might not be that high on something that could actually push the card to the limit.
Like mentioned in my earlier post, with the default 250 GPU / 266 RAM clocks, I got a score of 1777 in 3DMark 2000 Pro in W98 SE SP3-Lite, when using 1920x1200 @ 32 bit color setting, with the better green card which is almost identical to this blue card I just recapped.
With clocks at 300 GPU / 333 RAM on the blue card, I got 2117.
Below is the picture of the card after the recap and modifications.
The attachment after_recap.jpg is no longer available