Skip to content
Snippets Groups Projects
index.html 6.46 KiB
Newer Older
  • Learn to ignore specific revisions
  • <!DOCTYPE html>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <html lang="en">
    <head>
    
    <meta charset="utf-8">
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <title>ring oscillator timing tests</title>
    </head>
    <body link="black" alink="black" vlink="black">
    <font face="bitstream vera sans,arial,helvetica,sans-serif">
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    
    <div style="margin-left:2.5%;margin-right:2.5%">
    
    <p>
    
    <center>
    <b>Ring Oscillators</b>
    </center>
    
    <p>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld 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's avatar
    Neil Gershenfeld committed
    
    <p>
    
    <center>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <b><a id="GPIO">GPIO</a></b>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    </center>
    
    <p>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld 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).
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    
    <center>
    <table border="1" style="text-align:center">
    
    <tr>
    <th>frequency (MHz)</th>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <th>processor</th>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <th>description</th>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <th>date</th>
    </tr>
    
    
    Erik Strand's avatar
    Erik Strand committed
    <tr>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>60.0</td>
    
    Erik Strand's avatar
    Erik Strand committed
    <td>iCE40UP5K</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/iCE40/ring.v>Verilog</a> (<a href=GPIO/iCE40/notes.html>notes</a>), 120 MHz, iCEBreaker V1.0e, </td>
    
    <td>September 2021</td>
    
    Erik Strand's avatar
    Erik Strand committed
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    <td>41.7</td>
    <td>RP2040</td>
    <td><a href=https://gitlab.cba.mit.edu/quentinbolsee/rp2040-ring-pio/-/blob/main/py/ring.RP2040PIO_NO_SYNC.py>PIO, 250 MHz, XIAO, input sync bypass</a></td>
    <td>March 2023</td>
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    <td>25.0</td>
    <td>RP2040</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=https://gitlab.cba.mit.edu/quentinbolsee/rp2040-ring-pio/-/tree/main>PIO, 250 MHz, XIAO</a></td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>December 2022</td>
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>23.1</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>IMXRT1062</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/Arduino/ring.ino>Fast</a>, <a href=GPIO/IMXRT1062/ring.IMXRT1062.ino>GPIO</a>, 600 MHz, Teensy 4.1, </td>
    
    <td>August 2021</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>16.7</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>PocketBeagle</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/BeagleBoard/index.html>C, PRU</a></td>
    <td>March 2019</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>12.9</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>RP2040</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/RP2040/ring.RP2040.ino>Arduino, SIO, 250 MHz, XIAO</a></td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>December 2022</td>
    </tr>
    
    <tr>
    <td>4.62</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>ATSAME54</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld 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's avatar
    Neil Gershenfeld committed
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>4.00</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>ATxmega8E5</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/ATxmega8E5/hello.ftdi.8E5.ring.c>C, VPORT</a></td>
    <td>October 2015</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>3.81</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>ESP32-WROOM</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/ESP32/ring.ESP32.ino>C, GPIO</a></td>
    <td>December 2020</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    <td>3.79</td>
    <td>ESP32-C3</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/ESP32/ring.ESP32C3.ino>Arduino, GPIO, 160 MHz, XIAO</a></td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>December 2022</td>
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>3.74</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>ATSAMD51</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=prior/gpio/atsamd51/index.html>C, PORT</a></td>
    <td>November 2018</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>3.07</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>Raspberry Pi 4</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/bcm2835/ring.bcm2835.c>C, bcm2835, Buster</a></td>
    <td>December 2020</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    </tr>
    
    <tr>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>2.82</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>Raspberry Pi Zero</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/bcm2835/ring.bcm2835.c>C, bcm2835, Buster</a></td>
    <td>December 2020</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>2.53</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>ATSAMD11C</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/SAMD11C/ring.D11C.ino>C, IOBUS</a></td>
    <td>November 2020</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>2.17</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>AVR128DB32</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/AVR128DB32/index.html>C, VPORT</a></td>
    <td>December 2020</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>1.81</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>ATtiny412</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/ATtiny412/ring.t412.ino>Arduino, DigitalReadFast/WriteFast</a></td>
    <td>March 2021</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    </tr>
    
    <tr>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>1.81</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>ATtiny412</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/ATtiny412/ring.t412.ino>C, VPORT</a></td>
    <td>November 2020</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    </tr>
    
    <tr>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>1.17</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>ATSAMD11C</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/SAMD11C/ring.D11C.ino>C, PORT</a></td>
    <td>November 2020</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    <td>1.11</td>
    <td>RP2040</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/RP2040/ring.RP2040.ino>Arduino, digitalRead/Write, 250 MHz, XIAO</a></td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>December 2022</td>
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>1.06</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>ATtiny412</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/ATtiny412/ring.t412.ino>C, PORT</a></td>
    <td>November 2020</td>
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    <td>.736</td>
    <td>ESP32-C3</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/ESP32/ring.ESP32C3.ino>Arduino, digitalRead/Write, 160 MHz, XIAO</a></td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>December 2022</td>
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    <td>.350</td>
    <td>RP2040</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/RP2040/ring.RP2040.py>MicroPython, 250 MHz, XIAO</a></td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>December 2022</td>
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    <td>.345</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld 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's avatar
    Neil Gershenfeld committed
    </tr>
    
    <tr>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>.331</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>ATtiny412</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/ATtiny412/ring.t412.ino>Arduino, digitalRead/Write</a></td>
    <td>November 2020</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>.153</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>Raspberry Pi 4</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/libgpiod/ring.libgpiod.c>C, libgpiod, Buster</a></td>
    <td>December 2020</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>.153</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td>Raspberry Pi 4</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <td><a href=GPIO/gpiolib/ring.gpiolib.c>C, gpiolib, Buster</a></td>
    <td>December 2020</td>
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <tr>
    <td>.029</td>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld 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's avatar
    Neil Gershenfeld committed
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    </table>
    </center>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    
    <br><br>
    
    <center>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld committed
    <b><a id="communication">Communication</a></b>
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld 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's avatar
    Neil Gershenfeld 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's avatar
    Neil Gershenfeld committed
    </tr>
    
    
    Neil Gershenfeld's avatar
    Neil Gershenfeld 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>