Algorithms used in DSP 1-4 Buffer Management

Variable Description/Algorithm Stored/Used
dsp_rdy DSP is Busy writing data to Buffer
No more Stack Words from DSP FPGA
 
Nbind Number of indices to buffered events
•  Nbind = 16 (probably)
Buffer i Ptrs
Nchan Number of input channels used by this DSP
•  Nchan >= 16
Buffer Manager
Nmem Size (in words) of Buffer Main Memory
•  Nmem = Nbind*Ave(chan-evt-size)
Buffer i
Novf Size (in words) of Buffer Overflow Memory
•  Novf = Max(chan-evt-size)
Buffer i
buff_full Current Buffer is full
Conditions for this:
•  Nbind events already in buffer pointer struct
•  Not enough memory in buffer
   If b_addr[write_ind] > b_addr[read_ind]
    o b_addr[write_ind]+wrdcnt > ovfl_end
   If b_addr[write_ind] < b_addr[read_ind]
    o b_addr[write_ind]+wrdcnt > b_addr[read_ind]
Buffer Manager
chan_no Current channel no. for write
After full channel written:
•  next(chan_no) = mod(chan_no+1,Nchan)
•  (unless there is an overflow)
Buffer Manager
write_ind Index for next write
After full event written:
•  next(write_ind) = mod(write_ind+1,Nbind)
Buffer Manager
read_ind Index for next read
After read:
•  next(read_ind) = mod(read_ind+1,Nbind)
Buffer Manager