//---------------------------------------------------------------------- // DelayBuffer: Generate Constant Delay //---------------------------------------------------------------------- module DelayBuffer #( parameter DEPTH = 32, parameter WIDTH = 16 )( input clock, // Master Clock input [WIDTH-1:0] di_re, // Data Input (Real) input [WIDTH-1:0] di_im, // Data Input (Imag) output [WIDTH-1:0] do_re, // Data Output (Real) output [WIDTH-1:0] do_im // Data Output (Imag) ); reg [WIDTH-1:0] buf_re[0:DEPTH-1]; reg [WIDTH-1:0] buf_im[0:DEPTH-1]; integer n; // Shift Buffer always @(posedge clock) begin for (n = DEPTH-1; n > 0; n = n - 1) begin buf_re[n] <= buf_re[n-1]; buf_im[n] <= buf_im[n-1]; end buf_re[0] <= di_re; buf_im[0] <= di_im; end assign do_re = buf_re[DEPTH-1]; assign do_im = buf_im[DEPTH-1]; endmodule