VOGONS


First post, by mkarcher

User metadata
Rank l33t
Rank
l33t

I recently ran experiments on my MB-8433UUD-A at FSB50. That board has the latest revision of the north bridge, including EDO RAM support (usefulness is quite debatable, but that's no topic for this thread) and the 1:2/3 PCI divider. This divider seems to be perfectly made for FSB50, resulting in PCI33. Yet, I get strange issues with missing characters on the graphics card and I got a crash running a program off a network drive, so likely corrupted network data, too. These issues were perfectly fixed by changing the PCI divider to 1:2, and they also don't appear at 33MHz with the PCI divider at 1:1.

So, time to take out my scope and look at the PCI clock signal. The signal has been scoped on a card, after a 33 ohm series termination resistor. This might slightly increase the rise time/fall time. Likely, that's not the primary limitation in the signal fidelity on my scope pictures. They were taken with a cheap 60MHz 1:10 probe and a flying ground leap clamped to the case near the card I was probing the clock on. So, don't try to judge signal quality, including undershoot/overshoot from these picture. That's not the point of the measurement and the signal detail fidelity might be unsufficient make definite conclusions.

Let's first look at the 33MHz PCI clock signal generated at FSB33 and a 1:1 divider:

The attachment PCI33_cycle.gif is no longer available

The box in the lower right edge of the scope screen displays the time between the two "cursors" (the dashed vertical lines). It is 30ns. If the lines delimit a whole cycle of a periodic wafeform, this would represent a frequency of 33MHz. The PCI clock is meant to be symmetric (it should be "high" as long as it is "low"). The specification calls for a 11ns period in which the signal is "clearly high" and a 11ns period in which the signal is "clearly low". The transition time (rise time / fall time) is allowed to be up to 4nsEDIT: up to 1.2ns from 0.8V to 2.0V for both getting high and getting low. This signal is clearly in specification. Let's look at the "low" time:

The attachment PCI33_low.gif is no longer available

If the signal is symmetric, the lower half and the upper half of the waveform should take 15ns each. I tried to measure the "low half", and got 14.8ns, which is close enough to 15ns, to be true, considering me eyeballing what "the low half" is, and the general precision of my measurement setup, this is spot-on. As I already mentioned in the introduction, my measurement setup is definitely increasing rise/fall times, so even if you get 9ns or 10ns "really low" (below 0.8V, as the specification for 5V PCI requires) from that scope picture, there is no reason to believe that the requirement of getting 11ns is violated.

Now, let's look at the PCI clock at FSB50 and a divider of 1:2/3:

The attachment PCI50_cycle.gif is no longer available

This signal looks anything but symmetric! The most likely reason how this happens to happen: The board is running at a 50MHz clock. This means a whole clock period takes 20ns. So the input clock signal is 10ns low and 10ns high. There is an edge every 10ns. There is no edge 15ns after another edge! So the easiest way to divide by 2/3 is to keep the PCI clock low for two edges (20ns) and keep it high for one edge (10ns). As long as your hardware only care about the time between two rising edges of the PCI clock (the clock period), this is fine. The clock period displayed in the bottom right box is 29.8ns, which is close enough to 30ns. On the other hand, the requirement of the clock being "clearly high" for at least 11ns is obviously violated.

As the signal I measure is a reaction to the chipset trying to pull it low or high, it is valid to assume that the chipset starts outputting "high" around the time where the signal suddenly starts to rise, and starts outputting "low" around the time where the signal starts falling after being high for a short time. Let's measure the duration of suspected "high" output:

The attachment PCI50_high.gif is no longer available

And indeed: 9.5ns. Maybe the actual time point where the chipset started outputting low is a bit later than the "E"(nd) cursor in that screenshot. The decreasing voltage at that instantant might just be ringing of the high level. Yet, this is close enough to 10ns to validate my hypothesis of a 10ns high output. Obviously, the suspected low part is around 20ns:

The attachment PCI50_low.gif is no longer available

So, what does this mean in practice: My non-representative study shows that a Trio64/V+ graphics card, a ARK2000PV graphics card and an RTL8029 network cards all operate unreliable with this shape of PCI clock. This is all the cards I have tested, so the result is a failure rate of 100%. If you get issues at FSB50 with the seemingly correct PCI divider 1:2/3, just switch down to 1:2. This post explains the technical reason for it.

EDIT: Fixed a bad quote from the PCI specification: The rise/fall time is not allowed to be 4ns, but the rate must be between 1V/ns and 4V/ns, so the maximum rise time for "clearly low" (below 0.8V) and "clearly high" (above 2.0V) is 1.2V / (1V/ns) = 1.2ns. The minimum permitted rise time is 0.3ns. That's what I get for not reading the specifications with enough attention to detail...

Reply 1 of 9, by feipoa

User metadata
Rank l33t++
Rank
l33t++

Interesting analysis. I vaguely recall having PCI network transfer issues on this motherboard at 2/3 * 40 MHz, but that was a long time ago and I don't recall the details. Now days, I run at 1/2 * 66.

Did you run into the same issues at 2/3 * 40 and 2/3 * 60 MHz?

Plan your life wisely, you'll be dead before you know it.

Reply 2 of 9, by appiah4

User metadata
Rank l33t++
Rank
l33t++

Very interesting. I run a MB-8433UUD as my daily driver DOS PC with a Cx5x86-120, so I run it at FSB 40 without any PCI issues. My Riva128 PCI works flawlessly as does my 3C905 NIC. I do not recall what divider I have set up, however, off the top of my head. I may be using 1:1 because everything tolerates it..

Reply 3 of 9, by Disruptor

User metadata
Rank Oldbie
Rank
Oldbie
appiah4 wrote on 2023-08-02, 10:51:

Very interesting. I run a MB-8433UUD as my daily driver DOS PC with a Cx5x86-120, so I run it at FSB 40 without any PCI issues. My Riva128 PCI works flawlessly as does my 3C905 NIC. I do not recall what divider I have set up, however, off the top of my head. I may be using 1:1 because everything tolerates it..

haha, 1:2 and 1:1 aren't asymmetric
but 1:2/3 is

Reply 4 of 9, by mkarcher

User metadata
Rank l33t
Rank
l33t
appiah4 wrote on 2023-08-02, 10:51:

Very interesting. I run a MB-8433UUD as my daily driver DOS PC with a Cx5x86-120, so I run it at FSB 40 without any PCI issues. My Riva128 PCI works flawlessly as does my 3C905 NIC. I do not recall what divider I have set up, however, off the top of my head. I may be using 1:1 because everything tolerates it..

1:1 at FSB40 will generate around 12.5ns high, 12.5ns low. This works on many PCI cards.

1:2/3 at FSB50 will generate 10ns high, 20ns low. This caused that much trouble for me that I stopped using 2/3 at all, before even measuring what's going on. I don't know yet whether the asymmetry at 2/3@50 or the duration of the high period itself is the problem. That's why feipoa's question to try 2/3@40 is interesting. This would generate 12.5ns high, 25ns low, so if the absolute time of the high phase is the main cause of the issue, 2/3@40 should work perfectly with all cards that can deal with 1@40. On the other hand, if the asymmetric clock is the root cause, I will have trouble at 2/3@40, too. I will test 2/3@40 soon. I don't see the point in testing 2/3@60, if the system already fails with 2/3@50, though.

Reply 5 of 9, by jakethompson1

User metadata
Rank l33t
Rank
l33t
feipoa wrote on 2023-08-02, 10:36:

Interesting analysis. I vaguely recall having PCI network transfer issues on this motherboard at 2/3 * 40 MHz, but that was a long time ago and I don't recall the details. Now days, I run at 1/2 * 66.

Did you run into the same issues at 2/3 * 40 and 2/3 * 60 MHz?

If I remember right, you had issues with very bad onboard IDE performance on the 8433UUD if the PCI bus speed is over 33 MHz.
I don't know if it's related to this issue with the waveform; if the bus speed is 40 or 50 MHz, does the IDE portion also attempt to divide it down to 33 internally, or as we have discussed before, does it just the alternative "number of clocks" tables and each clock is 20 ns or 25 ns instead of 30 ns.
In any case, I think you did a lot of testing and 40 MHz hurts IDE performance for some reason, driver or no driver.

Reply 6 of 9, by feipoa

User metadata
Rank l33t++
Rank
l33t++

I just checked my notes on this matter. I tested Am5x86 at 3x60 on UUD. PIO set to 4 in BIOS.

If PCI = 1/2*60 = 30 MHz
IDE speed (no driver) = 4318 KB/s
IDE speed (FIFO enabled) = 7700 KB/s

If PCI = 2/3*60 = 40 MHz
IDE speed (no driver) = 5154 KB/s
IDE speed (FIFO enabled) = 4626 KB/s

From these results, the PCI speed doesn't hurt the non-FIFO speed. For the FIFO tests, it isn't clear if the 2/3 divisor is altering the IDE performance (due to mkarcher's observations) or if the PCI frequency itself is leading to some chipset timing alteration which occurs when PCI > 33 MHz. My notes stopped here.

I don't recall if running the system at 3x40 (120 MHz) and leaving the PCI at 1*40 also caused this strange slow-down in IDE performance. I think I tested for this condition and also witnessed the slow-down, and if that [very] foggy memory is correct, then it would imply that the 2/3 divisor issue is dissimilar from what mkarcher has shown. However, the memory is too fuzzy and this would need to be retested.

Plan your life wisely, you'll be dead before you know it.

Reply 7 of 9, by mkarcher

User metadata
Rank l33t
Rank
l33t
feipoa wrote on 2023-08-02, 10:36:

Did you run into the same issues at 2/3 * 40 and 2/3 * 60 MHz?

I just tested with an S3 Trio/64V+: It works fine at 1/2 * 50MHz, 2/3 * 40MHz and 1/1 * 40MHz, but it shows glitches at 2/3 * 50MHz and 2/3 * 60MHz. So the issue seems to be the short time of the high pulse of the PCI clock, not the asymmetry of the clock by itself. As asymmetric clock isn't forbidden by the specification, as long as the high period and the low period both exceed 11ns, this result confirms what one should expect.

Reply 8 of 9, by feipoa

User metadata
Rank l33t++
Rank
l33t++

This would render the 2/3 divisor setting almost useless. 2/3 * 50 and 2/3 * 60 are the most useful configurations for this divisor option. Maybe try a few other graphics cards as well?

Do you have an M919 v3.4 to test as well? The M919 automatically implements the 2/3 divisor for PCI at 40/50 MHz.

Plan your life wisely, you'll be dead before you know it.

Reply 9 of 9, by Disruptor

User metadata
Rank Oldbie
Rank
Oldbie
feipoa wrote on 2023-08-04, 23:33:

This would render the 2/3 divisor setting almost useless. 2/3 * 50 and 2/3 * 60 are the most useful configurations for this divisor option. Maybe try a few other graphics cards as well?

Do you have an M919 v3.4 to test as well? The M919 automatically implements the 2/3 divisor for PCI at 40/50 MHz.

No, sorry, we don't have an M919.
My ATI Rage IIC + DVD fails too.
Same with a Matrox Millenium II.
And a Virge DX.