Email or username:

Password:

Forgot your password?
Top-level
Tube❄️Time

I'm going to leave it this way at least overnight and see how it goes. 5V on GPIO0 with no voltage on VDDIO (which is sitting at around 150mV due to some back bias leakage)

Rotten Pi board with an attached 7805 regulator and a 9V battery
26 comments
Rue Mohr replied to Tube❄️Time

@tubetime shouldn't the protection diodes bring it almost all the way up?

Tube❄️Time replied to Rue
Tube❄️Time replied to Tube❄️Time

the results? a *very slight* change in the curve trace. but it's basically identical, you could handwave this away with a temperature difference between the two sets of measurements.

curve trace with VCCIO=3.3V, no pullups or pulldowns
curve trace with pulldown turned on. VCCIO=3.3V
curve trace with pullup turned on, VCCIO=3.3V.
Tube❄️Time replied to Tube❄️Time

somewhat more concerning is that the threshold (vih) of the pin has shifted up by about 50mV. ~1.36V -> 1.41V. EDIT: i measured it again with the curve tracer instead of directly with the voltmeter/ammeter combo, and it appears to be identical to the other GPIO pins. it's tricky to measure the threshold with the source current bug affecting the measurement.

Tube❄️Time replied to Tube❄️Time

hmm, there does seem to be an effect on the Schmitt trigger circuit. GP0 has a lower falling threshold than the other pins when Schmitt trigger mode is turned on.

Tube❄️Time replied to Tube❄️Time

i'm thinking about the effects of hot carrier injection (HCI), which usually causes the threshold voltages to shift. then there's also negative bias temperature instability (NBTI). both of these could cause timing issues.

Tube❄️Time replied to Tube❄️Time

to sum up the results so far: beating the crap out of this GPIO pin, taking it up to over 6V, letting it sit at 5V for 24h, etc, has resulted in a tiny shift in the falling threshold with Schmitt trigger mode turned on. no functional changes.

Tube❄️Time replied to Tube❄️Time

the next step is to write a little PIO program to copy the input state of the pin to another GPIO configured as an output. and then i can start measuring timing.

or maybe copy the state of two pins so i can do a side-by-side comparison.

Tube❄️Time replied to Tube❄️Time

the program is written:
wait 1 pin 0
set pins, 1
wait 0 pin 0
set pins, 0

Tube❄️Time replied to Tube❄️Time

and the propagation delay data is in. i increased persistence. as expected, the variation in the delay is approximately 6.6ns which is one sysclk cycle. this is the synchronization time. minimum delay is 36.4ns which seems long--i'm going to try and figure out why.

Tube❄️Time replied to Tube❄️Time

ahh, they have a 2-flop synchronizer on each input to the pio. but there's a way to disable them on a per-pin basis.

11.5.6.3. Input Synchronisers To protect PIO from metastabiltes, each GPIO input is equipped with a standard 2-flipflop synchroniser. This adds two. ycles of latency to input sampling, b the benefit i that state machines can perform an I PIIS at any point, and wil see only a clean high or low level, not some intermediate value that could disturb the state machine circuitry. This s ‘absolutely necessary for asynchronous interfaces such as UART RX. Itis possible to bypass these synchronisers, on a per-GPIO basis. This reduces input latency, but it then up o the user to guarantee that the state machine does not sample its inputs at inappropriatetimes. Generallythis s only possible for Synchronous interfaces such as SPI. Synchronisers are bypassed by setting the corresponding bt in INPT_SYHC_B1PASS. © WARNING

‘Sampling a metastable input can lead to unpredictable state machine behaviour. This should be avoided.
Tube❄️Time replied to Tube❄️Time

23.6ns minimum delay now. that's 2 clock cycles removed. hmm.

Tube❄️Time replied to Tube❄️Time

i halved the sysclk, so now we have a variability of 13.2ns and a minimum delay of 35.2ns.

Tube❄️Time replied to Tube❄️Time

did a little math and it looks like there is a 2 sysclk delay plus the input propagation delay and output propagation delay. the prop delays total about 8.8ns.

Tube❄️Time replied to Tube❄️Time

hmm so i understand why there is 1 sysclk delay because it takes a cycle to go from the WAIT instruction to the SET instruction. but why 2 sysclk delays?

Tube❄️Time replied to Tube❄️Time

anyway i can overclock to 300MHz sysclk, and now the minimum delay is 15ns. that is 2 cycles of 3.3ns plus 8.4ns propagation through the input and output.

Tube❄️Time replied to Tube❄️Time

argh, i forgot that i put 20MHz BW on the two input channels. anyway, this looks better, the rise time is super fast and the propagation delay is 13.7ns.

Tube❄️Time replied to Tube❄️Time

all right, i'm going to run another 24h aging experiment with 5V on the unpowered pin. let's see how it does. i'll do the measurements at 150MHz. my suspicion is that hot carrier injection could increase the propagation delay of the input, but we shall see.

Tube❄️Time replied to Tube❄️Time

i could dig into this some more, but for now, it looks like the RP2350 is 5V tolerant. i didn't see any evidence of HCI or metal migration. these aren't exhaustive tests since i didn't do them over the full supply voltage and temperature range, so i wouldn't use it for 5V tolerance in a commercial project, but this should be fine for hobby projects.

doragasu replied to Tube❄️Time

@tubetime Sorry if you already said it and I lost the info, but did you test only on FT pins or also no non FT pins?
Great work BTW!

Ian Scott :apple_inc: 🐙 replied to Tube❄️Time

@tubetime now do the RP2040, that one is a bit more of an open question 😅

Tube❄️Time replied to Jeff

@jhaluska you better, your name is on the back.

Go Up