12个数进行排序后输出
module new_12 #(
parameter DATA_WIDTH = 8,
parameter DATA_NUM = 12
)(
input wire [DATA_WIDTH-1:0] data_in [DATA_NUM-1:0]
,output wire [DATA_WIDTH-1:0] data_out[DATA_NUM-1:0]
);
genvar i;
reg [DATA_NUM-1:0] cnt [DATA_NUM-1:0];
generate
for(i=0;i<DATA_NUM;i=i+1) begin: SEL_12
sel_l_func lnst(
.data (data_in[i] )
,.data_ln (data_in )
,.cnt_res (cnt[i] )
);
end
endgenerate
wire[DATA_WIDTH-1:0] data_o [DATA_NUM-1:0];
reg [DATA_WIDTH-1:0] data_o_d[DATA_NUM-1:0];
generate
for(i=0;i<DATA_NUM;i=i+1) begin: DATA_OUT
assign data_o[i] = (cnt[0 ] == 1) ? data_in[0 ] :
((cnt[1 ] == 1) ? data_in[1 ] :
((cnt[2 ] == 1) ? data_in[2 ] :
((cnt[3 ] == 1) ? data_in[3 ] :
((cnt[4 ] == 1) ? data_in[4 ] :
((cnt[5 ] == 1) ? data_in[5 ] :
((cnt[6 ] == 1) ? data_in[6 ] :
((cnt[7 ] == 1) ? data_in[7 ] :
((cnt[8 ] == 1) ? data_in[8 ] :
((cnt[9 ] == 1) ? data_in[9 ] :
((cnt[10] == 1) ? data_in[10] : data_in[11]))))))))));
end
endgenerate
endmodule
module sei_1_func #(
parameter DATA_WIDTH = 8,
parameter DATA_NUM = 12
)(
input wire [DATA_WIDTH-1:0] data
,input wire [DATA_WIDTH-1:0] data_in [DATA_NUM-1:0]
,output wire [DATA_NUM-1 :0] cnt_res
);
wire [DATA_NUM-1:0] cnt;
genvar i;
generate
for(i=0;i<DATA_NUM;i=i+1) begin: SEL_1
assign cnt[i] = data > data_in[i] ? 'd1 : 'd0;
end
endgenerate
assign cnt_res = cnt[0] + cnt[1] + cnt[2] + cnt[3] + cnt[4] + cnt[5] + cnt[6] + cnt[7] + cnt[8] + cnt[9] + cnt[10] + cnt[11];
endmodule
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix