1、使用冒泡排序算法,編寫一個任務,完成四個8位2進制輸入數據的
(1)、冒泡排序思想:(如下圖)
(2)、從上面的算法思想中可以看出,在排序過程中,我們需要設定一個計數器,以判斷在第i輪排序中,要排序到多少位;
(3)、建模
`define data_length 8
module sort3(a,b,c,d,ra,rb,rc,rd);
input [`data_length-1:0]a,b,c,d;
output [`data_length-1:0]ra,rb,rc,rd;
reg [`data_length-1:0]ra,rb,rc,rd;
reg [`data_length-1:0]va,vb,vc,vd;
always @(a,b,c,d)
begin
{va,vb,vc,vd}={a,b,c,d};
sort3(va,vb);
sort3(vb,vc);
sort3(vc,vd);
sort3(va,vb);
sort3(vb,vc);
sort3(va,vb);
{ra,rb,rc,rd}={va,vb,vc,vd};
end
task sort3;
inout [`data_length-1:0]x,y;
reg [`data_length-1:0]tmp;
if(x>y)
begin
tmp=x;
x=y;
y=tmp;
end
endtask
//assign r[`data_number-1:0]=v[`data_number-1:0];
endmodule
(3)仿真:
`include "sort3.v"
//`timescale 1ns/100ps
module sort3_stimulus;
reg [7:0]a,b,c,d;
wire [7:0]ra,rb,rc,rd;
sort3 sm(a,b,c,d,ra,rb,rc,rd);
initial
begin
a=0;b=0;c=0;d=0;
repeat(50)
begin
#100 a={$random}%256;
b={$random}%256;
c={$random}%256;
d={$random}%256;
//#100 $stop;
end
/*#100 a=8'd15;b=8'd8;c=8'd13;d=8'd4;
#100 a=8'd15;b=8'd13;c=8'd8;d=8'd4;
#100 a=8'd7;b=8'd8;c=8'd2;d=8'd1;
#100 a=8'd14;b=8'd8;c=8'd13;d=8'd4;
*/
end
endmodule