Dr Jefyll wrote:
Interesting to see the contrast between the 0.6µ part and the 0.8µ part, BDD. For the sake of any of us who'd like to identify 816's in their possession, perhaps you could mention how the markings on the 0.6µ and 0.8µ chips differ -- thanks.
I suppose I should.
W65C816S6TPLG-14
W65 -- Western Design Center designator
816 -- Product
S -- Static core
6 -- process geometry, 0.6µ in this example; 8 would be 0.8µ
T -- Foundry that produced the die, TSMC in this example
PL -- Package type, PLCC-44 in this example; others are P (PDIP) or Q (QFP44)
G -- RoHS compliant
14 -- Maximum officially supported clock speed in MHz
There will also be a date code. The combination of process geometry, speed designation and production date can be used to help determine if a device is genuine or counterfeit.
Quote:
The LA display shows waves with, crisp instantaneous transitions, but we know that's not the reality. In fact, the voltages take time to ramp up and down.
Yep! Typical output rise and fall times for 74AC parts are extremely short, well down in the single digit nanosecond range. But they aren't instantaneous. The logic analyzer has an adjustable voltage threshold which when crossed, constitutes a logic 1 (rising edge) or logic 0 (falling edge). There's no in-between and relatively little hysteresis (see manufacturer's specs further down).
Quote:
So, here are some pitfalls to remember:
- the transition is already well under way before it's recognized by the LA.
- the actual time of recognition will vary somewhat, depending on what voltage the LA manufacturer has chosen as the threshold.
The threshold voltage can be set. I used 2.5 volts in my testing, since excepting the output of the SRAM and EPROM, everything is CMOS levels. The SRAM produces TTL levels, with a logic 1 defined as 2.4 volts minimum. In practice, that can be up over 3 volts, but not up to a CMOS logic 1 level.
It's patent that I could alter the apparent timings by changing the transition voltage to something else. However, I'm sticking with 2.5 for now, since most CMOS devices can go rail-to-rail when lightly loaded.
At this point, it is appropriate to note that despite what the data sheet says, the 65C816's inputs clearly recognize TTL levels. Scoped samples of data bus activity taken from POC V1.1 running at 12.5 MHz a few years ago showed that a logic 1 did not make it past 2.6 volts in the roughly 30ns that the SRAM was driving the bus. That is well short of the minimum logic 1 voltage (VDD × 0.8 ) specified in the data sheet. If that spec were true, the computer would not be functional.
Quote:
- as BDD noted, timing resolution is limited because samples are taken only every 2 ns.
Considering that Ø2 in this run was 20 MHz, that gave me 25 samples per machine cycle, which is good enough to get a reasonable picture of what is going on.
Quote:
BigDumbDinosaur wrote:
An artifact of the 2ns limit is the logic analyzer thinks the Ø2 clock is asymmetric.
I agree the trace depicts Ø2 as being asymmetric, but (c) isn't the only possible cause -- (b) is just as plausible, if not more so.
That could probably be determined by switching to a clock rate whose half-cycle time is a even number. However, given the manufacturer's claim for voltage threshold resolution (below), I'm more inclined to think it's a limitation of the 2ns resolution. The best the LA can do is 12.5 samples/half cycle at 20 MHz. So it's gonna have to fudge one way or the other.
Quote:
BigDumbDinosaur wrote:
there appears to be a small period of dead time after the '816 turns around the data bus following the emission of the bank address
Are you talking about the brief period around T+148ns when the value 000 (binary) is sandwiched between the initial value of 110 and the final value of 001? The seeming dead time is only an artefact.
N.B., the %001 value is the output from the SRAM—I poked that value into location $008000 before running the test code and capturing activity. The %110 right before it is the bank address ($06).
The %000 in between the bank address and the data is what I thought might be some dead time. You really can't tell if the MPU is driving the bus at that point or if it is floating. I'm pretty sure that the SRAM is not driving it, basing that assumption on the SRAM's timing specs. The SRAM appears to be driving the data bus right around when the data sheet specs would suggest. which is 6-or-so nanoseconds after /RD goes low.
Quote:
Per point (b), the LA's threshold can cause falling transitions to be detected sooner than rising transitions.
Some interesting specifications claimed by the LA's manufacturer:
- Threshold accuracy: +/-(100mV + 5% of setting)
- Channel to channel skew: 0.6ns typical, 1.0ns max
- Timebase accuracy: +/-0.005% over full temperature range
The threshold spec does give some wiggle room for saying when a logic 1 or logic 0 has been detected. However, I think we need to keep in mind the extremely fast edges that are characteristic of 74AC logic. Not much time will be spent in that +/-100mV no-man's land.
Quote:
(Also the memory chip itself may be stronger pulling low than pulling high.) That's why the bus seems to change from 110 to 000 (dead time), then from 000 to 001. But really it's just the unfolding of a single event. All the lines began their transition at the same time. And the transition was from 110 to 001.
The SRAM has a totem pole output, so it will sink harder than it can source.
Quote:
BigDumbDinosaur wrote:
[regarding the contention issue] it appears the RAM gets off the bus just in the nick of time.
Again I'm not sure when is the event you mention, but I do see an event that shows cause for concern.
Attachment:
apparent collision.png
Unless I'm missing something, at T+8ns the RAM plainly
doesn't get off the bus in time.
In my previous post, I did say to take the measurements with a grain of salt.
Limitations in resolution coupled with some uncertainty as to when the LA thinks something is a logic 1 or a logic 0 can give the appearance of timing anomalies that aren't really there. The only thing I can offer is 1) the machine works at 20 MHz; 2) the SRAM is not as warm as the physically much-larger MPU when running the "torture" code.
Quote:
We see the bus lines change from 101 to 000, which must surely be the CPU's doing. But /RD is still low, which means RAM hasn't yet been told let go. RAM and the CPU are in contention, and it appears the CPU's stronger drivers won at least a partial victory... enough to cross the LA threshold, that is. (An oscilloscope would likely reveal indeterminate voltages, neither solidly high nor low.)
Yep, that is something I'd like to scope. However, my scope is having problems when running it on the highest sweep rates. I'm in the contemplation phase of getting a replacement (see my "Scope Goes Bang" topic), as the cost to fix the one I have now (an H-P 1725A made in the early 1980s) is likely excessive—assuming parts can be gotten (the CRT was custom-made to H-P specs).
Quote:
Quote:
I took the MPU's temperature using the highly scientific method of placing the back of my little finger on the MPU.
Right -- got it! That's called a
Digital Wattmeter, I hope you know!
<Groan>
Quote:
Anyway, it would be interesting to know how much of the MPU temperature rise can be attributed to contention. (The RAM will get some heating, too.) Luckily none of this is serious enough to crash the system. But there'll certainly be some added noise (current spikes) on the power rails and data bus lines.
Once I get the scope issue settled I'll be able to further investigate. I will say even with sustained RAM accesses the chip temperature doesn't appear to rise when measured with my "digital wattmeter."