Skip to content
Snippets Groups Projects
index.html 5.71 KiB
Newer Older
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>ring oscillator timing tests</title>
</head>
<body link="black" alink="black" vlink="black">
<font face="bitstream vera sans,arial,helvetica,sans-serif">

<div style="margin-left:2.5%;margin-right:2.5%">

<p>

<center>
<b>Ring Oscillators</b>
</center>

<p>

Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
This page collects <a href="#GPIO">GPIO</a> and <a href="#communication">communication</a> ring oscillator timing tests for embedded systems (the prior page is <a href=prior/index.html>here</a>).
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<b><a id="GPIO">GPIO</a></b>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
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).

<center>
<table border="1" style="text-align:center">

<tr>
<th>frequency (MHz)</th>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<th>processor</th>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<th>description</th>
<th>date</th>
</tr>

Erik Strand's avatar
Erik Strand committed
<tr>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>60.0</td>
Erik Strand's avatar
Erik Strand committed
<td>iCE40UP5K</td>
<td>iCEBreaker V1.0e, 120 MHz, <a href=GPIO/iCE40/ring.v>Verilog</a> (<a href=GPIO/iCE40/notes.html>notes</a>)</td>
<td>September 2021</td>
Erik Strand's avatar
Erik Strand committed
</tr>

Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<tr>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>23.1</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>IMXRT1062</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>Teensy 4.1, 600 MHz, <a href=GPIO/Arduino/ring.ino>Fast</a>, <a href=GPIO/IMXRT1062/ring.IMXRT1062.ino>GPIO</a></td>
<td>August 2021</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
</tr>

Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<tr>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>16.7</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>PocketBeagle</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td><a href=GPIO/BeagleBoard/index.html>C, PRU</a></td>
<td>March 2019</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
</tr>

Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<tr>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>9.17</td>
<td>RP2040</td>
<td><a href=GPIO/RP2040/ring.RP2040.ino>Arduino, SIO</a></td>
<td>December 2022</td>
</tr>

<tr>
<td>4.62</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>ATSAME54</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td><a href=https://gitlab.cba.mit.edu/pub/ring/-/tree/master/GPIO/ATSAME54>C, SRAM (aligned)</a></td>
<td>January 2021</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
</tr>

Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<tr>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>4.00</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>ATxmega8E5</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td><a href=GPIO/ATxmega8E5/hello.ftdi.8E5.ring.c>C, VPORT</a></td>
<td>October 2015</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
</tr>

Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<tr>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>3.81</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>ESP32-WROOM</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td><a href=GPIO/ESP32/ring.ESP32.ino>C, GPIO</a></td>
<td>December 2020</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
</tr>

<tr>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>3.74</td>
<td>ATSAMD51</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td><a href=prior/gpio/atsamd51/index.html>C, PORT</a></td>
<td>November 2018</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<tr>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>3.07</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>Raspberry Pi 4</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td><a href=GPIO/bcm2835/ring.bcm2835.c>C, bcm2835, Buster</a></td>
<td>December 2020</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
</tr>

<tr>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>2.82</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>Raspberry Pi Zero</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td><a href=GPIO/bcm2835/ring.bcm2835.c>C, bcm2835, Buster</a></td>
<td>December 2020</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
</tr>

Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>2.53</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>ATSAMD11C</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td><a href=GPIO/SAMD11C/ring.D11C.ino>C, IOBUS</a></td>
<td>November 2020</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<tr>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>2.17</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>AVR128DB32</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td><a href=GPIO/AVR128DB32/index.html>C, VPORT</a></td>
<td>December 2020</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
</tr>

Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>1.81</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>ATtiny412</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td><a href=GPIO/ATtiny412/ring.t412.ino>Arduino, DigitalReadFast/WriteFast</a></td>
<td>March 2021</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
</tr>

<tr>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>1.81</td>
<td>ATtiny412</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td><a href=GPIO/ATtiny412/ring.t412.ino>C, VPORT</a></td>
<td>November 2020</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>1.17</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>ATSAMD11C</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td><a href=GPIO/SAMD11C/ring.D11C.ino>C, PORT</a></td>
<td>November 2020</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>1.06</td>
<td>ATtiny412</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td><a href=GPIO/ATtiny412/ring.t412.ino>C, PORT</a></td>
<td>November 2020</td>
</tr>

<tr>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>.584</td>
<td>RP2040</td>
<td><a href=GPIO/RP2040/ring.RP2040.ino>Arduino</a></td>
<td>December 2022</td>
</tr>

<tr>
<td>.345</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>Raspberry Pi 4</td>
<td><a href=GPIO/RPi.GPIO/ring.RPi.GPIO.py>Python, RPi.GPIO, Buster</a></td>
<td>March 2021</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>.331</td>
<td>ATtiny412</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td><a href=GPIO/ATtiny412/ring.t412.ino>Arduino, digitalRead/Write</a></td>
<td>November 2020</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<tr>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>.153</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>Raspberry Pi 4</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td><a href=GPIO/libgpiod/ring.libgpiod.c>C, libgpiod, Buster</a></td>
<td>December 2020</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
</tr>

Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<tr>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>.153</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>Raspberry Pi 4</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td><a href=GPIO/gpiolib/ring.gpiolib.c>C, gpiolib, Buster</a></td>
<td>December 2020</td>
</tr>

<tr>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>.039</td>
<td>RP2040</td>
<td><a href=GPIO/RP2040/ring.RP2040.py>MicroPython</a></td>
<td>December 2022</td>
</tr>

<tr>
<td>.029</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<td>Raspberry Pi 4</td>
<td><a href=GPIO/gpiozero/ring.gpiozero.py>Python, gpiozero, Buster</a></td>
<td>March 2021</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
</tr>

</table>
</center>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed

<br><br>

<center>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<b><a id="communication">Communication</a></b>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
</center>

<p>

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.

<center>
<table border="1" style="text-align:center">

<tr>
<th>frequency (MHz)</th>
<th>from</th>
<th>link</th>
<th>to</th>
<th>date</th>
</tr>

<tr>
<td>0.250</td>
<td><a href=comm/iCE40/ring.v>iCE40, Verilog</a> (<a href=comm/iCE40/notes.html>notes</a>)</td>
<td>tx/rx jumpers (3.3V)</td>
<td><a href=comm/iCE40/ring.v>iCE40, Verilog</a></td>
<td>September 2021</td>
</tr>

Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<tr>
<td>0.010</td>
<td><a href=comm/termios/ring.termios.c>i7-8700T, C, termios</a></td>
<td>USB 2.1</td>
<td><a href=comm/SerialUSB/ring.SerialUSB.ino>ATSAMD11C, Arduino, SerialUSB</a></td>
<td>April 2021</td>
Neil Gershenfeld (test)'s avatar
Neil Gershenfeld (test) committed
<tr>
<td>0.007</td>
<td><a href=comm/pySerial/ring.pySerial.py>i7-8700T, Python, pySerial</a></td>
<td>USB 2.1</td>
<td><a href=comm/SerialUSB/ring.SerialUSB.ino>ATSAMD11C, Arduino, SerialUSB</a></td>
<td>March 2021</td>
</tr>

</table>
</center>

<br><br>