• 学习测试脚本编写(一)



    verilog中,一般:

      input默认为wire型;

      output信号可以是wire型,也可以是reg型(在always或initial中被赋值);

      inout是双向信号,一般将其设为tri型,表示其有多个驱动源;

    测试脚本编写步骤:1、例化 2、激励 3、结果

    在测试脚本中:

      input—>reg

      output—>wire

      inout—>wire

    1、时钟信号产生

    方法1:
    parameter PERIOD = 20;

    initial begin
    clk = 0;

    forever #(PERIOD/2) clk = ~clk;
    end


    方法2:

    parameter PERIOD = 20;

    always begin

    #(PERIOD/2) clk = 0;
    #(PERIOD/2) clk = 1;
    end


    2、复位信号产生

    方法1:封装成一个task,复位的时候直接调用

    initial begin
    rst_task(100);//定义复位时间
    $stop;

    task reset_task;
    input [15:0] reset_time;
    begin
    rst = 0;
    #rst_time;
    rst = 1;
    end

    endtask

    方法2:
    initial begin

    rst = 0;
    #100;
    rst = 1;
    #2000;
    $stop;

    举个例子:

     1 `timescale 1 ns/ 1 ns
     2 module tx_module_vlg_tst();
     3 
     4     reg CLK;
     5     reg RSTn;
     6     reg [7:0] TX_Data;
     7     reg TX_En_Sig;
     8     // wires                                               
     9     wire TX_Done_Sig;
    10     wire TX_Pin_Out;
    11 
    12 //--------------------------------------------------------    
    13 tx_module i1 ( 
    14     .CLK(CLK),
    15     .RSTn(RSTn),
    16     .TX_Data(TX_Data),
    17     .TX_Done_Sig(TX_Done_Sig),
    18     .TX_En_Sig(TX_En_Sig),
    19     .TX_Pin_Out(TX_Pin_Out)
    20 );
    21 
    22 //--------------------------------------------------------
    23 initial                                                
    24 begin                                                  
    25     RSTn = 0; #1000 RSTn = 1;
    26     CLK = 1; forever #25 CLK = ~CLK;
    27 end
    28 
    29 //--------------------------------------------------------
    30 reg [3:0] i;
    31 
    32 always@(posedge CLK or negedge RSTn)
    33     if(!RSTn)
    34         begin
    35             TX_En_Sig <= 1'b0;
    36             TX_Data <= 8'd0;
    37             i <= 4'd0;
    38         end
    39     else
    40         case(i)
    41             
    42             0:
    43             if(TX_Done_Sig) begin TX_En_Sig <= 1'b0;i <= i +1'b1;end
    44             else begin TX_Data <= 8'b0101_0101;TX_En_Sig <= 1'b1;end
    45             
    46             1:
    47             i <= i;
    48         endcase
    49 
    50 //--------------------------------------------------------                                                                                                       
    51 endmodule
  • 相关阅读:
    你所不知道的mfc…mfc项目索引 &mfc调优指南 &mfc vc添加添加子功能指南
    Cu 大彻大悟内存管理 mm (update 0410)
    [转]Linux iostat监测IO状态
    linux virtual memory layout by moniskiller upload [读书笔记]
    河畔找到的 面经笔经
    【转】Linux本地磁盘(硬盘)介绍
    读写UTF8、Unicode文件
    codesmith执行时提示“调用的目标发生了异常”的处理过程经验。
    DB2表信息以及字段信息的表
    iBatis.NET获取resultMap相关数据
  • 原文地址:https://www.cnblogs.com/loves6036/p/5070648.html
Copyright © 2020-2023  润新知