zoukankan      html  css  js  c++  java
  • 第三章:systemverilog文本值和数据类型

    1.增强的文本值

    2.改进的`define文本替换

    3.时间值

    4.新的变量类型

    5.有符号和无符号类型

    6.静态和动态变量(***)

    7.类型转换

    8.常数

    增强的文本值(文本赋值增强)


    主要是:位扩展更加方便

    verilog :

    data = 64'hFFFF_FFFF;

    data = 'bz;

    data  = 'bx;

    systemverilog:

    data = '1;//无论data的size更改与否

    data = 'z;

    data = 'x;//可以不用写明进制(d/b/h/o)

    `define 增强


    systemverilog 可以实现宏参数替换。

    systemverilog允许字符串内的宏变量替换,但verilog不可以。

    eg:

    `define print(v) $display("variable v = %h",v)

    verilog中预编译后:

      `print(data) ;// $display("variable v = %h",data);

    systemverilog中预编译后:

       `print(data);//$display("variable data = %h",data);

    systemverilog变量


    1.对象类型和数据类型

    2.四态变量(logic/reg)

    3.两态变量(bit/byte/int/shortint/longint)

    4.显示/隐示变量或线网类型

    5.综合指导

    对象类型和数据类型

    对象类型指明信号是var / wire

    数据类型指明信号是四态/两态

    显示/隐示var和wire

    申明语句中,数据类型前没有显示指定对象类型(var/wire)就为隐示变量。

    var logic[7:0] busA;

    var bit[31:0] b;

    注意四态变量转为两态变量x/z被认定为0;

    静态变量和动态变量


    1.systemverilog 缺省存储方式与verilog兼容,在module/begin..end/fork..join/非自动function和task中,默认存储为static方式。如果task/fucntion被申明automaitc,则缺省存储方式为自动的。

    2.module级所有的变量都是静态的,不可以显示申明为static/automatic.

    强制类型转换


    verilog 是弱语言,可以把一个数据类型值赋给另一个数据类型的var/wire.

    强制类型转换不同,可以发生在表达式中。

    使用强制类型转换操作符

    1.数据类型转换 <type>'(<expression>)

    2.数据宽度转换 <size>'(<expression>)

    3.符号类型转换 <sign>'(<expression>)

    使用系统函数

    $cast(dest_var,source_exp);  //可以作为函数/任务调用

    常数


    verilog 有 : parameter / specparam /localparam

    systemverilog 增加了const

  • 相关阅读:
    C# 自定义文件图标 双击启动 (修改注册表)
    C/S打包 客户端/windows程序 InstallShield
    WPF 依赖属性
    WPF 自定义Expander
    WPF DevExpress ChartControl用法
    WPF 水平进度条
    WPF 自定义CheckBox
    WPF 自定义ListBox
    WPF 绕圈进度条(一)
    1.为什么要用泛型
  • 原文地址:https://www.cnblogs.com/chip/p/4392074.html
Copyright © 2011-2022 走看看