Verilog中一个字节比较器成熟的测试模型

来源:互联网 发布:知肤泉水光面膜怎么用 编辑:程序博客网 时间:2024/06/04 23:19

刚刚开始学习Verilog语言,希望能够记录下自己的想法。

题目出自《Verilog数字系统设计教程(第3版)》第三部分设计示范与实验练习中的练习一。题目的为:设计一个字节(8位)的比较器,难点是在于写出一个较为成熟的测试模型。根据练习一中给的模板,我们可以知道一个成熟的测试模型应该有以下特点:1.具有较多的测试数据 2.数据有较大的随机性(好吧。。。我现在只看出来这两点)

那么该如何建立一个这样成熟的模型呢?我们先快速浏览一下我的一个字节比较器(并不是重点):

  module compare_8(X,Y,XGY,XSY,XEY);
  input[7:1] X,Y;
  output XGY,XSY,XEY;
  reg XGY,XSY,XEY;
  parameter width=8;
  
  always@(X or Y)
    begin
      if(X==Y)
        XEY=1;
      else
        XEY=0;
        
      if(X>Y)
          XGY=1;
      else XGY=0;
          
      if(X<Y)
            XSY=1;
      else XSY=0;
    end
  endmodule

模型非常简单,直接借用了书上比较器部分的代码。测试代码的关键点就是方便的生成随机的一个字节:

`timescale 1ns/1ns


module compare_8_tb;
  reg[7:1] X,Y;
  reg clock;
  wire XEY,XGY,XSY;
  integer i;
  initial
    begin
      clock=0;
      X=8'b00000000;
      Y=8'b00000000;
  end
  
  always #50 clock=~clock;
  always@(posedge clock)
    begin
      
      for(i=0;i<8;i=i+1)
          X[i]={$random}%2; //让X、Y每一bit都为随机的0或1
      for(i=0;i<8;i=i+1) 
          Y[i]={$random}%2;
        
      end
  initial
    begin #1000 $stop;end
      
     compare_8 m(.X(X),.Y(Y),.XEY(XEY),.XGY(XGY),.XSY(XSY));
   endmodule


第一次写Verilog程序,以后还会继续完善的!

---------------------------------不要忘记自己的梦想!------------------------------------------------------------

0 0