Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
{$|X| + |Y| + |Z|$ ) to simplify 3D motion into a 1D intensity signal.\n",
"cells": [
{
"cell_type": "markdown",
"id": "title",
"metadata": {},
"source": [
"# Pedometer: An Ultra-Low-Power 3-Axis SPI Pedometer ASIC in SKY130\n",
"\n",
"IEEE SSCS Code-a-Chip Travel Grant — Notebook Submission\n",
"\n",
"| Field | Details |\n",
"|---|---|\n",
"| Inventor | Dr. Sriram Anbalagan |\n",
"| Affiliation | Post Doctoral Fellow (Visvesvaraya PhD Scheme, MeitY), SASTRA Deemed University, Thanjavur, Tamil Nadu, India |\n",
"| Supervisor | Dr. T. N. Prabakar, Associate Professor, SEEE, SASTRA Deemed University |\n",
"| ORCID | 0000-0003-3528-7462 |\n",
"| Scopus ID | 59573168000 |\n",
"| GitHub | sriram829 |\n",
"| Project | Pedometer Repository |\n",
"| Target | Tiny Tapeout TTSKY26a (SKY130) |"
]
},
{
"cell_type": "markdown",
"id": "intro",
"metadata": {},
"source": [
"## 1. Introduction\n",
"\n",
"The Pedometer is a custom ASIC designed to provide high-accuracy step counting with ultra-low power consumption. By implementing the signal processing pipeline—including vector magnitude calculation, Simple Moving Average (SMA) filtering, and adaptive peak detection—directly in hardware (SKY130 PDK), we eliminate the power overhead associated with running these algorithms on a general-purpose microcontroller."
]
},
{
"cell_type": "markdown",
"id": "arch",
"metadata": {},
"source": [
"## 2. Architecture Overview\n",
"\n",
"The Pedometer architecture consists of three primary stages:\n",
"1. SPI Interface: Receives 3-axis (X, Y, Z) acceleration data at high clock speeds.\n",
"2. Magnitude Engine: Computes the L1 vector magnitude (
"3. Filtering & Detection: Uses an 8-tap SMA filter to remove mechanical noise and a peak-detecting FSM with an adaptive threshold to register valid human steps."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "simulation",
"metadata": {},
"outputs": [],
"source": [
"# Simulation of the Pedometer algorithm logic\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"def simulate_pedometer_logic(samples):\n",
" # Vector Magnitude Calculation\n",
" mag = np.sum(np.abs(samples), axis=1)\n",
" \n",
" # Simple Moving Average (SMA) Filter\n",
" window_size = 8\n",
" mag_smooth = np.convolve(mag, np.ones(window_size)/window_size, mode='same')\n",
" \n",
" return mag, mag_smooth\n",
"\n",
"# Sample data mimicking walking motion\n",
"t = np.linspace(0, 5, 500)\n",
"x = 0.5 * np.sin(2 * np.pi * 1.5 * t) + np.random.normal(0, 0.1, 500)\n",
"y = 1.2 + 0.3 * np.cos(2 * np.pi * 1.5 * t)\n",
"z = 1.8 * np.sin(2 * np.pi * 1.5 * t)\n",
"samples = np.stack([x, y, z], axis=1)\n",
"\n",
"mag, smoothed = simulate_pedometer_logic(samples)\n",
"\n",
"plt.figure(figsize=(10, 4))\n",
"plt.plot(t, mag, alpha=0.3, label='Raw Magnitude')\n",
"plt.plot(t, smoothed, color='cyan', label='Hardware SMA Filtered')\n",
"plt.axhline(y=1.75, color='orange', linestyle='--', label='Adaptive Threshold')\n",
"plt.title("Pedometer ASIC: Hardware Algorithm Simulation")\n",
"plt.xlabel("Time (s)")\n",
"plt.ylabel("Acceleration (g)")\n",
"plt.legend()\n",
"plt.grid(True, alpha=0.2)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "implementation",
"metadata": {},
"source": [
"## 3. Physical Design & Implementation\n",
"\n",
"The Pedometer was synthesized using the OpenLane flow. The design is tailored for the Tiny Tapeout 1x1 tile footprint.\n",
"\n",
"- Process: SkyWater 130nm (SKY130)\n",
"- Tile Size: 1x1 (approx. 160µm x 100µm)\n",
"- Clock Frequency: 10MHz (nominal), 50MHz (max)\n",
"- Power Estimation: Optimized for sub-mW operation at 1.8V VDD."
]
},
{
"cell_type": "markdown",
"id": "roadmap",
"metadata": {},
"source": [
"## 4. Future Roadmap\n",
"\n",
"- Adaptive thresholding: Enhancing the FSM to update threshold statistics dynamically based on mag_smooth variance.\n",
"- Sub-1V Characterization: Validating timing closure at 0.9V for energy-harvesting applications.\n",
"- FPGA Co-Verification: Integrating the Pedometer core with a DE10-Lite for real-time sensor testing.\n",
"\n",
"---\n",
"## 5. References\n",
"\n",
"[1] S. Anbalagan, 'Pedometer,' Tiny Tapeout TTSKY26a, 2025. https://www.google.com/search?q=https://github.com/sriram829\n",
"\n",
"[2] A. Edwards et al., 'Tiny Tapeout: An Open-Source Educational ASIC Design Flow,' IEEE ISVLSI, 2023.\n",
"\n",
"[3] SkyWater Technology, 'SKY130 Process Design Kit,' 2020. https://github.com/google/skywater-pdk"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"name": "python",
"version": "3.10.0"
}
},
"nbformat": 4,
"nbformat_minor": 5
}