
BioPulse Tile turns a single 8-bit radar/biosignal sample stream into vital-sign events and metrics, using only digital logic — no CPU, no software. The datapath processes one sample per clock.
Processing chain:
ui_in sample, or, in demo mode
(uio[0]=1), an internal generator producing a synthetic breathing
triangle plus a small heartbeat ripple.baseline ± thr
marks one breath per low→high crossing. uio[1] selects sensitivity.BPM = 1000 / period.uio[5]: 0xAA, breaths-per-min, heart-rate, peak-to-peak, flags.uo_out is dual-purpose, selected by uio[2] (BPM readout select):
uio[2]=0 → uo_out shows the status flags:
| Bit | Meaning |
|---|---|
| 0 | breathing detected |
| 1 | apnea warning |
| 2 | fast breathing |
| 3 | slow breathing |
| 4 | irregular signal / motion |
| 5 | heartbeat detected |
| 6 | signal quality good |
| 7 | valid / status |
uio[2]=1 → uo_out shows the 8-bit breaths-per-minute value.
uio[5] is the UART transmit line; uio[7:6] show the top two bits of
breaths-per-minute as a coarse indicator.
uio[4:0], inputs)uio[0] demo mode, uio[1] sensitivity, uio[2] BPM readout select,
uio[4:3] demo pattern (00=normal, 01=fast, 10=slow, 11=apnea).
Periods and thresholds are in clocks. Run the chip at a low clock for realistic vital-sign timescales, or feed external samples at your sample rate.
Run the cocotb testbench:
cd test
make
It checks reset, the four demo patterns (normal / fast / slow / apnea), the heartbeat detector, the breaths-per-minute readout, UART activity, and external-input mode.
On hardware: set uio[0]=1, pick a pattern on uio[4:3], and watch uo_out
on LEDs (flags). Set uio[2]=1 to read breaths-per-minute on the same LEDs,
and capture uio[5] with a 3.3 V UART receiver to read all the streamed
metrics.
None required for the demo. For real measurements, connect the digitised
output of a continuous-wave radar or biosignal analog front-end to
ui_in[7:0], LEDs to uo_out, and optionally a UART receiver to uio[5].
| # | Input | Output | Bidirectional |
|---|---|---|---|
| 0 | sample[0] - 8-bit radar/biosignal sample (external mode) | breathing detected / BPM[0] | demo mode enable (in) |
| 1 | sample[1] | apnea warning / BPM[1] | sensitivity select (in) |
| 2 | sample[2] | fast breathing / BPM[2] | BPM readout select (in) |
| 3 | sample[3] | slow breathing / BPM[3] | demo pattern select [0] (in) |
| 4 | sample[4] | irregular signal / BPM[4] | demo pattern select [1] (in) |
| 5 | sample[5] | heartbeat detected / BPM[5] | UART TX - streams metrics (out) |
| 6 | sample[6] | signal quality good / BPM[6] | coarse breaths-per-min [6] (out) |
| 7 | sample[7] | valid / status / BPM[7] | coarse breaths-per-min [7] (out) |