⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tb_div_rand.v

📁 32位除法器的测试程序
💻 V
字号:
`timescale 100ps/100psmodule tb_div_rand;	 parameter samples = 128; //total data samples    parameter n = 32;      //bit length, should be 32    parameter m = 16;      //dot position    parameter seed = 200;  //random seed    parameter clock_cycle=10;    reg [n-1:0]    dividend;    reg [n-1:0]    divisor;    reg [n+m-1:0]  quotient;    reg [n-1:0]    remainder;    reg clock;    reg start;    wire finish;    wire error;        integer i;        //generate random dividend&divisor and calculate quotient&remainder    function [n+n+(n+m)+(n)-1:0] gen_rand_data;       input integer i;       reg [n+m-1:0] dividend;       reg [n+m-1:0] divisor;       reg [n+m-1:0] quotient;       reg [n+m-1:0] remainder;       integer k;       integer flag;             begin           k = (i/4) % 32 + 1;           flag = 1;                      while(flag)           begin           dividend = {{$random}, {m{1'b0}}};           divisor =  {{m{1'b0}}, {$random}};           //quotient = {$random};           //remainder = {$random};                      divisor = divisor % ( 2 << k);                      if(divisor == {(n+m){1'b0}})           begin               $display("Divisor is zero!!!");           end else begin               flag = 0;           end                      quotient =  dividend / divisor;           remainder = dividend % divisor;                      if(remainder > divisor)            begin              $display("Bad remainder!!!");              $stop;           end                      if(quotient * divisor + remainder != dividend)           begin               $display("bad values!!!");               $stop;           end           end                  gen_rand_data = {dividend[n+m-1:m], divisor[n-1:0], quotient, remainder[n-1:0]};       end    endfunction    always #clock_cycle clock=~clock;initialbeginclock=0;start=0;#1    {dividend, divisor, quotient, remainder} = gen_rand_data(i);#10 start=1;#1100 $stop;end            initial    begin        i = $random(seed);                for(i=1; i<=samples; i=i+1)         begin           {dividend, divisor, quotient, remainder} = gen_rand_data(i);           //you can print this values to a file instead of to the console                              end	     $stop;    end  div2 m1(                      .dividend(dividend),                .divisor(divisor),                  .quotient(quotient),                 .remainder(remainder),               .start(start),                     .clock(clock),                     .finish(finish),                    .error(error));    endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -