zoukankan      html  css  js  c++  java
  • 学习测试脚本编写(一)


    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
  • 相关阅读:
    shutdown -s -t
    企业计算模式
    数组的合并
    Cytoscape基础教程笔记
    初识Uniprot API
    常用生物信息 ID 及转换方法
    Gene Ontology (GO) 注释
    KEGG注释
    Install packages failed: Installing packages: error occurred. ------简单的问题常常会被忽略
    Cytoscape,Gephi ,mitlab network的比较
  • 原文地址:https://www.cnblogs.com/loves6036/p/5070648.html
Copyright © 2011-2022 走看看