module maopao_sort(
input strobe,
input reset_n,
input [7:0] data_in,
input lval,
output [7:0] data_out,
output sort_finish_en
);
parameter ARRAY_MAX_INDEX = 8;
reg [17:0] cnt;
always @(posedge strobe)
if(lval)
cnt <= cnt +18'd1;
else
cnt <= 18'd0;
reg [7:0] data_in_d1;
reg lval_d1;
reg lval_d2;
reg [17:0] cnt_d1;
always @(posedge strobe)
begin
lval_d1 <= lval;
data_in_d1 <= data_in;
lval_d2 <= lval_d1;
cnt_d1 <= cnt;
end
reg [7:0] med_data;
always @(posedge strobe)
if(lval_d1)
begin
if(cnt == 18'd1)
med_data <= data_in_d1;
else if(med_data >data_in_d1)
med_data <= data_in_d1;
else
med_data <= med_data;
end
else
med_data <= med_data;
assign data_out =(lval_d2 && cnt_d1 == ARRAY_MAX_INDEX)?med_data:8'd0;
assign sort_finish_en = (lval_d2 && cnt_d1 == ARRAY_MAX_INDEX)?1'b1:1'b0;
endmodule