
This project is an ultra-low-power controller designed to optimize an energy harvesting system for autonomous sensor nodes.
Because the efficiency of the target energy harvesting circuitry depends heavily on environmental conditions, this ASIC dynamically evaluates two different proprietary harvesting configurations (referred to as Topology P and Topology S), determines which one yields more energy, and automatically switches to the optimal configuration.
The Evaluation Sequence:
val_A), waits for a specific charging period, and reads the voltage again (val_B).val_C), waits for the charging period, and reads the voltage again (val_D).Hardware Optimizations for ASIC:
To fit within the strict area limits of a Tiny Tapeout tile, standard hardware multipliers (*) were completely eliminated. Instead, the mathematical evaluation is factored and performed using a custom-built, area-efficient 17-cycle "Shift & Add" sequential multiplier. Furthermore, to minimize dynamic power consumption and leakage current, the design is clocked at 32.768 kHz (standard RTC frequency) and utilizes dynamic pin-strapping for timer configurations to keep register widths as small as possible.
1. Clock & Configuration:
ui_in[4:2] (cfg_stable).ui_in[7:5] (cfg_charge).000 results in the shortest wait time, and 111 results in the maximum duration.2. Execution:
ext_trigger pin (ui_in[0]) to send a High pulse. This initiates the measurement sequence.uo_out[7:5].3. UART Logging (PC Debugging):
uart_tx_pin (uo_out[2]).> or <).000F,401F,+100F82E0,BD6D,A196,-0A551C85,>To fully utilize this project, the following external hardware is required:
spi_cs_n (uo_out[0]), spi_sck (uo_out[1]), and spi_sdo (ui_in[1]).uo_out[3] and uo_out[4]).| # | Input | Output | Bidirectional |
|---|---|---|---|
| 0 | ext_trigger | spi_cs_n | |
| 1 | spi_sdo | spi_sck | |
| 2 | cfg_stable[2] | uart_tx_pin | |
| 3 | cfg_stable[1] | pulse_parallel | |
| 4 | cfg_stable[0] | pulse_series | |
| 5 | cfg_charge[2] | led[2] | |
| 6 | cfg_charge[1] | led[1] | |
| 7 | cfg_charge[0] | led[0] |