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

📄 tb_div2.v.bak

📁 32位除法器的测试程序
💻 BAK
字号:
`timescale 100ps/100psmodule tb_div_rand;    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;    wire [n+m-1:0] q;    wire [n-1:0] r;    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;   initial   begin      clock = 0;	   start = 0;      i = $random(seed);      for(i=1; i<=1010; i=i+1)       begin         //{dividend, divisor, quotient, remainder} = gen_rand_data(i);         dividend = 32'b01111101011011011111010111111010;         divisor  = 32'b11111001001001111001010011110010;         quotient = 48'b000000000000000000000000000000001000000011100000;         remainder= 32'b00101000110111101010110001000000;         $display("i=%4d, dividend=32'b%b, divisor=32'b%b;\n  quotient=48'b%b, remainder=32'b%b",                      i, dividend, divisor, quotient, remainder);         #20	         start = 1;         #1010	         if(quotient!=q || remainder!=r) 	         begin	             $display("BAD RESULT!!!");                $display("result: quotient=48'b%b, remainder=32'b%b", q, r);                $stop;	         end      end      $stop;   end  div2 m1(                      .dividend(dividend),                .divisor(divisor),                  .quotient(q),                 .remainder(r),               .start(start),                     .clock(clock),                     .finish(finish),                    .error(error));    endmodule

⌨️ 快捷键说明

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