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

📄 div_tb.v

📁 基于srt-2算法
💻 V
字号:
module div_tb;    parameter samples = 128; //total data samples    parameter n = 32;      //bit length, should be 32    parameter m = 16;      //dot position    parameter seed = 200;  //random seed        wire [n+m-1:0]  quo;    wire [n-1:0]    rem;    reg clk,reset,start;    wire err,ok;    reg [n-1:0]    dividend;    reg [n-1:0]    divisor;        reg [n+m-1:0]  quotient;    reg [n-1:0]    remainder;    integer i;        div2 #(n,m) t(.clk(clk),.reset(reset),.start(start),              .dividend(dividend),.divisor(divisor),              .quo(quo),.rem(rem),.err(err),.ok(ok));        //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 #5 clk = ~clk;       initial begin        clk = 0;      reset = 0;	   start = 0;	   	   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           $display("i=%4d, dividend=%b, divisor = %b, quotient=%b, remainder=%b",                   i, dividend, divisor, quotient, remainder);                   end         #20            reset = 0;	      #20            reset = 1;	         start = 1;            	      #1000	         if(quotient!=quo || remainder!=rem) 	         begin	             $display("BAD RESULT!!!");                $display("result: quotient=48'b%b, remainder=32'b%b",quo,rem);	         end	         else begin	             $display("good!");	             $display("result: quotient=48'b%b, remainder=32'b%b",quo,rem);	             $stop;	             end	     $stop;	     end  endmodule

⌨️ 快捷键说明

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