Skip to content

Create Pedometer_CAC_Submission#174

Open
sriram829 wants to merge 1 commit intosscs-ose:mainfrom
sriram829:patch-1
Open

Create Pedometer_CAC_Submission#174
sriram829 wants to merge 1 commit intosscs-ose:mainfrom
sriram829:patch-1

Conversation

@sriram829
Copy link
Copy Markdown

{
"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 ($|X| + |Y| + |Z|$) to simplify 3D motion into a 1D intensity signal.\n",
"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
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant