zoukankan      html  css  js  c++  java
  • 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语句块中完成。前者符合不规则数据序列,并且要求长度较短;后者适合具有一定规律的数据序列。

  • 相关阅读:
    ajax参考增删改查
    linux 断网 扫描基本命令
    linux 基本命令大全
    开发者用的linux系统推荐
    python DRF获取参数介绍
    python DRF操作流程
    python 异常处理函数--raise
    DRF-Rest_Framework 学习文档
    前端框架VUE
    python Django rest-framework 创建序列化工程步骤
  • 原文地址:https://www.cnblogs.com/agllero/p/4443418.html
Copyright © 2011-2022 走看看