Design a sliding-window minimum/maximum tracker.

Module name: minmax
Parameters:
  - WIDTH  = 24       // Total bit width (Q15.8 unsigned fixed-point)
  - FRAC   = 8        // Fractional bits
  - WINDOW = 8        // Sliding window size

Ports:
  - input              clk
  - input              rst_n       // Active-low synchronous reset
  - input  [WIDTH-1:0] data_in     // Unsigned fixed-point input
  - input              valid_in    // High for one cycle when data_in is valid
  - output [WIDTH-1:0] min_out     // Minimum of the current window
  - output [WIDTH-1:0] max_out     // Maximum of the current window
  - output             valid_out   // High once WINDOW samples have been received

Functional specification:
  - Maintain a circular buffer of the last WINDOW values
  - On each valid_in, insert data_in into the buffer
  - Compute min and max by scanning all WINDOW buffer entries (combinational)
  - valid_out asserts after WINDOW valid samples are received and stays high
  - On reset, clear buffer and counters
