Verilog中 reg,integer

这篇具有很好参考价值的文章主要介绍了Verilog中 reg,integer。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

reg,integer

整数(integer)

integer类型也是一种寄存器数据类型,integer类型的变量为有符号数,而reg类型的变量则为无符号数,除非特别声明为有符号数

还有就是integer的位宽为宿主机的字的位数,但最小为32位,用integer的变量都可以用reg定义,只是用于计数更方便而已。

reg,integer,real,time都是寄存器数据类型,定义在Verilog中用来保存数值的变量,和实际的硬件电路中的寄存器有区别。

  大多数的矢量类型(reg或者net)都被默认当做无符号数。integer和real是个例外,它们被默认为当做有符号数。

real类型是不可综合的。

1、verilog中常用的数据类型

Verilog中共有19种数据类型。

1)基本的四种类型:
reg型、wire型、integer型、parameter型。

其他类型:large型、medium型、small型、scalared型、time型、tri型、trio型、tril型、triand型、trior型、trireg型、vectored型、wand型和wor型。
这14中数据类型除time外都与基本逻辑单元建库有关。

2)四种基本类型区别:

reg              无符号整数变量,可以选择不同的位宽。

integer          有符号整数变量,32位宽,算术运算可产生2的补码。

real             有符号的浮点数,双精度。

time             无符号整数变量,64位宽(Verilog-XL仿真工具用64位的正数来记录仿真时刻)

用 reg 描述逻辑,integer 描述循环变量和计算, real 在系统模型中使用,time 和 realtime 保存测试装置的仿真时间。

2、integer使用规则

1)reg是无符号整形变量,integer是有符号类型
2)integer定义为32bit的总线
3)for循环变量需要使用integer类型
请小心使用小型宽度的 reg 作为循环变量 测试负值的 reg 也要非常小心 如果重复的加 减运算和reg 的值都作为无符号数处理 循环表达式就永远不会出错

reg [2:0] i; // i 的值永远在 0 到 7 之间
...
for ( i=0; i<8; i=i+1 ) // 循环不会停止
...
for ( i=-4; i<0; i=i+1 ) // 不会执行
...

在像上面的情况中 循环变量 i 应该用 integer 类型
下面的代码显示reg和integer的一般用法:

integer i;
reg [15:0] V;
reg Parity;

always @(V)
    for ( i = 0; i <= 15; i = i + 1 )
        Parity = Parity ^ V[i];

4)文件读写时使用integer类型来简化代码操作

///save data to files1
parameter N = 4;
integer file_ceo_id [N-1:0]; //注意此处变量正确定义方式

initial begin
    file_ceo_id[0] = $fopen("./ctrl_data0.txt","w");
    file_ceo_id[1] = $fopen("./ctrl_data1.txt","w");       
    file_ceo_id[2] = $fopen("./ctrl_data2.txt","w");       
    file_ceo_id[3] = $fopen("./ctrl_data3.txt","w");       
end

genvar i;                                          
generate                                           
    for (i=0;i<N;i=i+1)                       
    begin:W_FILES    ///
        always@( posedge clk)
        begin
            if  (rd_valid == 1'b1)
            begin
                $fdisplay(file_ceo_id[i], "%h", out_fifo_rdata);              
            end
        end   
    end
endgenerate 

原文链接:https://blog.csdn.net/liqiang9410/article/details/76983900

原文链接:https://blog.csdn.net/miffywm/article/details/98752443文章来源地址https://www.toymoban.com/news/detail-539327.html

到了这里,关于Verilog中 reg,integer的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (Verilog) wire和reg,以及always

    For combinational always blocks, always use a sensitivity list of (*). Explicitly listing out the signals is error-prone (if you miss one), and is ignored for hardware synthesis. If you explicitly specify the sensitivity list and miss a signal, the synthesized hardware will still behave as though (*) was specified, but the simulation will not and not matc

    2024年02月14日
    浏览(31)
  • verilog基础语法,wire,reg,input,output,inout

    概述: 输入输出是模块的端口,寄存器是数据存储介质,线用于把各个电路关联起来,形成一个数据流通通道,进行形成具有具体功能的电路模块。线是信息关联与传递的介质,也是可以称为信息流通的管道。在FPGA中的基本定义为wire,reg,input,output,inout。只有正确的认识到

    2024年04月24日
    浏览(36)
  • 浅显易懂-Verilog中什么时候用wire?什么时候用reg?wire与reg只有又有啥区别?如何去选择性的使用呢?

    在使用FPGA的时候我们经常会遇到这样一个问题,这个信号我们到底是定义成wire类型还是定义成reg类型,如果定义不对编译软件也会通不过,有时候你通过编译软件的的提示将它改了回来,但你却并不明白是为什么会报错,而且下次还会再出现,当它再次出现时,我们又得重

    2024年02月04日
    浏览(29)
  • SystemVerilog logic、wire、reg数据类型详解

            在Verilog中, wire 和 reg 是最常见的两种数据类型,也是初学者非常容易混淆的概念。           SystemVerilog的一大改进是支持 logic 数据类型,它在多数时候可以不加区分地替代 wire 和 reg 。但如果不熟悉 logic 的限制随意使用,也容易遇到意想不到的错误。本文主

    2024年02月06日
    浏览(28)
  • 【FPGA学习记录3-1】Verilog语法之Verilog的数据类型

    写在前面 本科时学过FPGA的相关课程,因此对于Verilog相关语法的学习重在回顾。 1.Verilog的数据类型 Verilog 最常用的 2 种数据类型就是 线(wire)与寄存器(reg) ,其余类型可以理解为这两种数据类型的扩展或辅助。 1.1wire类型 wire 类型表示硬件单元之间的物理连线,由其连接

    2024年02月02日
    浏览(31)
  • Verilog学习笔记(5):Verilog高级程序设计

    串行加法器: 一个四位串行加法器由4个全加器构成。全加器是串行加法器的子模块,而全加器是由基本的逻辑门构成,这些基本的逻辑门就是所说的叶子模块。这个设计中运用叶子模块(基本逻辑门)搭建成子模块(全加器),再用子模块搭建成所需要的电路(串行加法器

    2024年02月11日
    浏览(29)
  • 「Verilog学习笔记」根据RTL图编写Verilog程序

    专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 观察题目给出的RTL图,主要的器件是两个D触发器,一个与门。D触发器含有异步复位信号,且为低电平有效。data_in输入到D触发器,D触发器的输出Q是前一时刻的data_in,即data_in打一

    2024年03月24日
    浏览(30)
  • Verilog 学习笔记

    模块 • Verilog HDL程序是由模块构成的。每个模块的内容都是嵌在module和endmodule两个语句之间。每个模块实现特定的功能。模块是可以进行层次嵌套的。正因为如此,才可以将大型的数字电路设计分割成不同的小模块来实现特定的功能,最后通过顶层模块调用子模块来实现整体功

    2024年02月09日
    浏览(31)
  • verilog入门学习笔记

    第一部分 (必填) module 模块名 ([端口列表]); [端口信号声明;] [参数声明;] 1、模块名是指电路的名字,由用户指定, 最好与文件名一致 2、端口列表是指电路的输入/输出信号名称列表,信号名由用户指定,各名称间用逗号隔开。 3、端口信号声明是要说明端口信号的

    2024年02月07日
    浏览(23)
  • Verilog学习笔记(3):Verilog数字逻辑电路设计方法

    例:用Verilog设计模256(8bits)计数器 (a)可综合程序描述方式 (b)常见的错误描述方式 同时Verilog的电路描述方式具有多样性,这也决定了对于电路设计的多样性。 例:用Verilog设计数字多路选择器 (a)采用真值表形式的代码 (b)采用逻辑表达式形式的代码 (c)采用结

    2023年04月08日
    浏览(103)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包