Register Map
AXI4-Lite register interface
Register Summary
| Offset | Name | Access | Description |
| 0x000 | CTRL | W | Control register (start/clear) |
| 0x004 | STATUS | R | Status flags (busy/done/override) |
| 0x008 | ITER_BUDGET | RW | Planning iteration count |
| 0x010 | RESULT | R | Chosen action ID |
| 0x018 | REASON | R | Override reason code |
| 0x020 | CONF_MIN | RW | Confidence threshold (Q16.16) |
| 0x024 | COH_MIN | RW | Coherence threshold (Q16.16) |
| 0x028 | CONS_MIN | RW | Consistency threshold (Q16.16) |
| 0x02C | WEIGHT_C | RW | Confidence weight (Q16.16) |
| 0x030 | WEIGHT_H | RW | Coherence weight (Q16.16) |
| 0x034 | WEIGHT_K | RW | Consistency weight (Q16.16) |
CTRL Register (0x000)
| Bit | Name | Description |
| [0] | START | Write 1 to start decision |
| [1] | CLEAR | Write 1 to clear state |
STATUS Register (0x004)
| Bit | Name | Description |
| [0] | BUSY | Decision in progress |
| [1] | DONE | Decision complete |
| [2] | OVERRIDE | Action was overridden |
Fixed-Point Format
Threshold and weight registers use Q16.16 fixed-point format:
// Convert float to Q16.16
uint32_t float_to_q16(float val) {
return (uint32_t)(val * 65536.0f);
}
// Convert Q16.16 to float
float q16_to_float(uint32_t val) {
return (float)val / 65536.0f;
}