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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)