
Here you go—drop-in text for your datasheet. It’s short, objective, and matches the I/O in your module.
Purpose. Computes one dot-product over 4 terms from sequential 8-bit Q0.7 samples, then outputs exp(mac/2) in UQ3.6 (9-bit) format.
Interface.
Inputs:
ui_in[7:0] — data (Q0.7 signed).uio_in[0] — vld_slv_in (input valid).uio_in[3] — rdy_mst_in (output handshake from master).Outputs:
uo_out[7:0] — result LSBs (UQ3.6).uio_out[4] — result MSB (bit 8).uio_out[2] — vld_mst_out (output valid).uio_out[1] — rdy_slv_out (always 1, input always ready).Operation.
exp(mac/2) via the ex block and exposes the 9-bit UQ3.6 result.vld_mst_out goes high to signal a ready result; it de-asserts once the master asserts rdy_mst_in.Reset & enable.
Drive clock, hold rst_n=0 for ≥1 cycle, then set rst_n=1. Keep ena=1.
Feed inputs (4 pairs = 8 samples). For each of 4 pairs:
ui_in, set uio_in[0]=1 for one (or more) cycle(s).ui_in, set uio_in[0]=1 again → the product A*B is accumulated.uio_in[0]=0 when idle. Input is always ready (uio_out[1]=1).Read result.
uio_out[2]=1 (output valid).{uio_out[4], uo_out[7:0]}.uio_in[3]=1 for ≥1 cycle; uio_out[2] will drop.Repeat. Provide the next 4 pairs to get the next result.
Notes.
i will
| # | Input | Output | Bidirectional |
|---|---|---|---|
| 0 | ui_in[0] | uo_out[0] | uio_out[0] |
| 1 | ui_in[1] | uo_out[1] | uio_out[1] |
| 2 | ui_in[2] | uo_out[2] | uio_out[2] |
| 3 | ui_in[3] | uo_out[3] | uio_out[3] |
| 4 | ui_in[4] | uo_out[4] | uio_out[0] |
| 5 | ui_in[5] | uo_out[5] | uio_out[1] |
| 6 | ui_in[6] | uo_out[6] | uio_out[2] |
| 7 | ui_in[7] | uo_out[7] | uio_out[3] |