• Verilog HDL仿真激励的产生 _zt


    一、变量初始化

    变量初始化的基本原则为:可综合代码中完成内部变量的初始化,Testbench中完成可综合代码所需的各类接口信号的初始化。

    初始化的方法有两种:一种是通过initial语句块初始化;另一种是在定义时直接初始化。

    当initial语句块中有多条语句时,需要用begin…end或者fork…join语句。

    直接初始化,如:reg [7:0] cnt = 8'b00000000;

    二、时钟信号的产生

    1、普通时钟信号:

    a. 基于initial语句的方法:

    1. parameter clk_period = 10;  
    2. reg clk;  
    3. initial begin  
    4.     clk = 0;  
    5.     forever  
    6.         #(clk_period/2) clk = ~clk;   
    7. end  

    b. 基于always语句的方法:

    1. parameter clk_period = 10;  
    2. reg clk;  
    3. initial  
    4.     clk = 0;  
    5. always #(clk_period/2) clk = ~clk;  

    2、自定义占空比的时钟信号:

    1. parameter High_time = 5,Low_time = 20;  
    2. // 占空比为High_time/(High_time+Low_time)   
    3. reg clk;  
    4. always begin  
    5.     clk = 1;  
    6.     #High_time;   
    7.     clk = 0;  
    8.     #Low_time;   
    9. end  

    3、相位偏移的时钟信号:

    1. parameter High_time = 5,Low_time = 20,pshift_time = 2;  
    2. // 相位偏移为360*pshift_time/(High_time+Low_time)   
    3. reg clk_a;  
    4. wire clk_b;  
    5. always begin  
    6.     clk_a = 1;  
    7.     #High_time;   
    8.     clk_a = 0;  
    9.     #Low_time;   
    10. end  
    11. assign #pshift_time clk_b = clk_a;  

    4、固定数目的时钟信号:

    1. parameter clk_cnt = 5, clk_period = 2;  
    2. reg clk;  
    3. initial begin  
    4.     clk = 0;  
    5.     repeat(clk_cnt)  
    6.         #(clk_period/2) clk = ~clk;   
    7. end  

    三、复位信号的产生

    1、异步复位信号:

    1. parameter rst_repiod = 100;  
    2. reg rst_n;  
    3. initial begin  
    4.     rst_n = 0;  
    5.     #rst_repiod;   
    6.     rst_n = 1;  
    7. end  

    2、同步复位信号:

    1. parameter rst_repiod = 100;  
    2. reg rst_n;  
    3. initial begin  
    4.     rst_n = 1;  
    5.     @(posedge clk)  
    6.     rst_n = 0;  
    7.     #rst_repiod;   
    8.     rst_n = 1;  
    9. end  

    四、数据信号的产生

    数据信号的产生主要有两种形式:一、初始化和产生都是在initial块中进行;二、初始化在initial语句中完成,而产生却在always语句块中完成。前者符合不规则数据序列,并且要求长度较短;后者适合具有一定规律的数据序列。

  • 相关阅读:
    [poj2778]DNA Sequence(AC自动机+矩阵快速幂)
    密码学学习笔记
    [hdu3695]Computer Virus on Planet Pandora(AC自动机)
    [hdu1277]全文检索(AC自动机)
    [hdu3065]病毒侵袭持续中(AC自动机)
    [hdu2896]病毒侵袭(AC自动机)
    lintcode-84-落单的数 III
    lintcode-83-落单的数 II
    lintcode-79-最长公共子串
    lintcode-78-最长公共前缀
  • 原文地址:https://www.cnblogs.com/agllero/p/4443418.html
Copyright © 2020-2023  润新知