【发布时间】:2018-09-06 16:47:14
【问题描述】:
我试图在 verilog 中对 9 个随机数进行排序。我使用冒泡排序(嵌套循环)算法,但我有一个挑战。我想在一个 clk 周期内对它们进行排序,但它不符合我的要求。至少需要 9 个周期才能对它们进行排序。
always @(posedge clk)
begin
if(m >= 68 && sort_valid == 0) begin
pool_sort[0] <= pool_buffer[66];
pool_sort[1] <= pool_buffer[65];
pool_sort[2] <= pool_buffer[64];
pool_sort[3] <= pool_buffer[34];
pool_sort[4] <= pool_buffer[33];
pool_sort[5] <= pool_buffer[32];
pool_sort[6] <= pool_buffer[2];
pool_sort[7] <= pool_buffer[1];
pool_sort[8] <= pool_buffer[0];
sort_valid <= 1;
end
if(sort_valid == 1) begin
for(k=0;k<8;k=k+1) begin
if(pool_sort[k] < pool_sort[k+1]) begin
pool_sort[k] <= pool_sort[k+1];
pool_sort[k+1] <= pool_sort[k];
end
end
if(sort_counter == 0) begin
sort_valid <= 0;
pool_out <= pool_sort[0];
end
end
end
always @(posedge clk)
begin
if(sort_valid == 1) begin
sort_counter <= sort_counter - 1;
end
if(sort_counter == 0) begin
sort_counter <= 8;
end
end
endmodule
这是我目前为止的排序算法。
【问题讨论】:
-
请向我们展示你目前拥有的东西
-
请缩进您的代码以在此处正确显示。
-
你可能想看看排序网络。