One Hertz Challenge
I decided to submit this project to the "One Hertz Challenge", as the project is perfect for this. Not only does voltage glitching have to do with very precise timing, the Pico Glitcher is also able to generate very precise and arbitrary pulses thanks to the multiplexing (https://fault-injection-library.readthedocs.io/en/latest/multiplexing/) and pulse shaping (https://fault-injection-library.readthedocs.io/en/latest/pulse_shaping/) methods.
The following figures illustrate the voltage step emitted by the multiplexing stage of the Pico Glitcher each second. This voltage step can be configured arbitrarily. For instance, the voltages and duration of each step can be set.


Only a few lines of Python code are necessary to emit this voltage step with the Pico Glitcher:
import time
from findus import PicoGlitcher
glitcher = PicoGlitcher()
glitcher.init(port="/dev/tty.usbmodem1301")
glitcher.rising_edge_trigger()
glitcher.set_multiplexing()
while True:
mul_config = {"t1": 10_000, "v1": "1.8", "t2": 1_000, "v2": "GND"}
glitcher.arm_multiplexing(0, mul_config, "VI2")
glitcher.reset_target(0.01)
try:
glitcher.block(timeout=1)
response = b'Trigger ok'
except Exception as _:
response = b'Timeout'
print(response)
# wait for one second
time.sleep(1)First, the PicoGlitcher class of the findus library (https://pypi.org/project/findus/) is imported. The glitcher object is initialized by the subsequent commands. Then, the multiplexing configuration is generated. Up to four different timings and voltages can be configured at this stage. Finally, the glitcher is armed, meaning it waits for the trigger condition to be met. When a rising edge is detected on the TRIGGER input, the voltage step is emitted. The scripts wait for one second until the next configuration is generated and submitted to the glitcher.
This shows, how few lines of codes are necessary to generate arbitrary voltage steps. This can be taken to the extreme with the Pulse Shaping method. Meaning not only any voltage levels, but any voltage curve can be generated.
Matthias Kesenheimer
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.