zoukankan      html  css  js  c++  java
  • Verilog的数据类型

    1          整数、实数和时间寄存器类型

        整数是一种通用的寄存器数据类型,用于对数量进行操作,使用integer进行声明。

          integer counter;      //一般用途的变量用作计数器

          initial

                  counter = -1;   //把-1存储到寄存器中

        实数:实常量和实数寄存器数据类型使用关键字real来声明,可以用十进制或科学计数法来表示。实数声明不能带有范围,其默认值为0.如果将一个实数赋予一个整数,那么实数将会被取为最接近的整数。

          real delta;        //定义一个名为delta的实型变量

        时间寄存器:仿真是按照仿真时间进行的,verilog使用一个特殊的时间寄存器数据类型来保存仿真时间。时间变量通过使用关键字time来声明,其宽度与具体实现无关,最小为64位。通过调用系统函数$time可以取得当前的仿真时间。

    2          数组

        Verilog中允许声明reg、integer、time、real、realtime及其向量类型的数组,对数组的维数没有限制,即可声明任意维数的数组。线网数组也可用于连接实例的端口,数组中的每个元素都可以作为一个标量或者向量,以同样的方式来使用,形如<</span>数组名>[<</span>下标>]。

          Integer    count[0:7];      //由八位计数变量组成的数组

          reg  bool [31:0];             //由32个1位的布尔寄存器变量组成的数组

          wire [7:0] w_array2 [5:0];       //声明8位向量的数组

     

    注意:不要把数组和线网或寄存器向量混淆起来。向量是一个单独的元件,它的位宽是n,数组由多个元件组成,其中每个元件的位宽为n或1.

    3          存储器

        Verilog中使用寄存器一维数组来表示存储器。数字的每个元素成为一个元素或一个字(word),由一个数组索引来指定。每个字的位宽为1位或者多位。注意n个1位寄存器和一个n位寄存器是不同的。如果需要访问存储器中的一个特定的字,则可通过子的地址作为数组的下标来完成。

          reg  mem1bit[0:1023];            //1k的1位存储器

          reg   [7:0] membyte [0:1023]; //1k的字节(8位)存储器membyte

          membyet[511]         //取出membyte中地址511所处的字节

    4          参数

        Verilog使用关键字parameter在模块内定义常数。参数代表常数,不能像变量那样赋值,但是每个模块实例的参数值可以在编译阶段被重载。通过参数重载使得用户可以对模块实例进行定制。除此之外还可以对参数的类型和范围进行定义。

          parameter port_id = 5;   //定义常数port_id 为5

     

    5          字符串

        字符串保存在reg类型的变量中,每个字符占用8位(一个字节),因此寄存器变量的宽度应足够大,以保证容纳全部字符。如果寄存器变量的宽度大于字符串的大小,则verilog用0来填充左边的空余位。如果寄存器变来那个的宽度小于字符串的大小,则verilog截去字符串最左边的位。

     

  • 相关阅读:
    Xcode 8.2 想使用插件 怎么办? 教你科学的使用插件
    JSAPI_Ticket签名
    Java中HashMap,LinkedHashMap,TreeMap的区别[转]
    微信支付开发,再次签名,APP调用
    微信支付开发,统一下单
    android studio安装插件
    java实现mysql数据库的备份及还原
    java项目中读取src目录下的文件
    eclipse增加浏览器chrome
    cd 命令
  • 原文地址:https://www.cnblogs.com/zhtook/p/13151203.html
Copyright © 2011-2022 走看看