使用任务设计四个并行输入数的排序组合逻辑

2023-05-16

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(使用前将#替换为@)

使用任务设计四个并行输入数的排序组合逻辑 的相关文章

随机推荐