Ring Oscillators

This page collects GPIO and communication ring oscillator timing tests for embedded systems (the prior page is here).

GPIO

The GPIO test measures how quickly pins can communicate with a processor core; this is relevant for implementing real-time algorithms that are not supported by processor peripherals. In this, two pins are connected; a bit is output on one, read on the other, inverted in software, and the loop repeated, with the frequency of the resulting oscillation reported. Twice this frequency is the rate of reading, modifying, and writing to pins (plus the loop overhead).

frequency (MHz) processor description date
60.0 iCE40UP5K Verilog (notes), 120 MHz, iCEBreaker V1.0e, September 2021
41.7 RP2040 PIO, 250 MHz, XIAO, input sync bypass March 2023
25.0 RP2040 PIO, 250 MHz, XIAO December 2022
23.1 IMXRT1062 Fast, GPIO, 600 MHz, Teensy 4.1, August 2021
16.7 PocketBeagle C, PRU March 2019
12.9 RP2040 Arduino, SIO, 250 MHz, XIAO December 2022
4.62 ATSAME54 C, SRAM (aligned) January 2021
4.00 ATxmega8E5 C, VPORT October 2015
3.81 ESP32-WROOM C, GPIO December 2020
3.79 ESP32-C3 Arduino, GPIO, 160 MHz, XIAO December 2022
3.74 ATSAMD51 C, PORT November 2018
3.07 Raspberry Pi 4 C, bcm2835, Buster December 2020
2.82 Raspberry Pi Zero C, bcm2835, Buster December 2020
2.53 ATSAMD11C C, IOBUS November 2020
2.17 AVR128DB32 C, VPORT December 2020
1.81 ATtiny412 Arduino, DigitalReadFast/WriteFast March 2021
1.81 ATtiny412 C, VPORT November 2020
1.17 ATSAMD11C C, PORT November 2020
1.11 RP2040 Arduino, digitalRead/Write, 250 MHz, XIAO December 2022
1.06 ATtiny412 C, PORT November 2020
.736 ESP32-C3 Arduino, digitalRead/Write, 160 MHz, XIAO December 2022
.350 RP2040 MicroPython, 250 MHz, XIAO December 2022
.345 Raspberry Pi 4 Python, RPi.GPIO, Buster March 2021
.331 ATtiny412 Arduino, digitalRead/Write November 2020
.153 Raspberry Pi 4 C, libgpiod, Buster December 2020
.153 Raspberry Pi 4 C, gpiolib, Buster December 2020
.029 Raspberry Pi 4 Python, gpiozero, Buster March 2021


Communication

The communication test measures how quickly two nodes can exchange messages; this is relevant for implementing real-time and high data-rate algorithms. In this, the "from" node sends a byte to the "to" node, which adds 1 to it and sends it back. This is repeated many times, and the number of round trips is divided by the total time. Twice that frequency is approximately the byte rate in one direction, and 16 times that frequency is approximately the bit rate in one direction.

frequency (MHz) from link to date
0.250 iCE40, Verilog (notes) tx/rx jumpers (3.3V) iCE40, Verilog September 2021
0.010 i7-8700T, C, termios USB 2.1 ATSAMD11C, Arduino, SerialUSB April 2021
0.007 i7-8700T, Python, pySerial USB 2.1 ATSAMD11C, Arduino, SerialUSB March 2021