0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

reg与wire的区别

FPGA之家 来源:FPGA之家 作者:FPGA之家 2022-07-03 10:00 次阅读

1,reg与wire的区别:

相同点:

都能表示一种类型类型。

不同点:

wire

连线型数据,线网类型;

表示元件间的物理连线,不能保存数据;

线网是被驱动的,可以用连续赋值语句或把元件的输出连接到线网等方式进行驱动;

给线网提供驱动的赋值元件就是“驱动源”,线网的值由驱动源来决定;

如果线网没有连接到驱动源,线网的缺省值为“Z”。

reg:

寄存器型数据类型,通常用于对存储单元进行描述;

这种变量可以保持它们自身的数值,直到该变量被指定了新的值为止 ;在过程被赋值的变量必须定义为reg型;

只能存放无符号数;

有符号数寄存器变量:integer 。

2,$stop:

表示停止命令,常用格式为,位于initial语句中:

#时间(N) $stop;

表示在(N)个时间单位后,停止仿真

3,参数声明parameter:

在程序中需要多次使用同一个数字时,可以考虑采用参数来提高代码的简洁度,降低代码的设计量。

参数一经声明,就视其为一个常量,在整个过程中值不在改变。

其定义方式如下:

《变量名》=《变量定义》;

例如:

parameter SET_TIME_1S=27‘b50_000_000;

//把常量50000000用标识符SET_TIME_1S来代替。

用同一个 parameter 同时定义多个参数时,各个参数之间用“ , ”来隔开。

使用参数可以提高代码的可读性,也便于修改。

4,仿真时的端口定义

与模块输入端口相连的信号端口是产生仿真信号的端口,需定义为reg类型;

与模块输出端口相连的信号端口是被输出信号所驱动的端口,需要定义为wire类型;

5,阻塞与非阻塞赋值语句

1,非阻塞赋值语句

用操作符“《=”来标识“非阻塞赋值语句”;

在begin-end串行语句中,一条非阻塞赋值语句的执行不会阻塞下一条语句额执行,也就是说,在本条非阻塞型过程赋值语句对应的赋值操作执行完之前,下一条语句也可以开始执行。

仿真过程在遇到非阻塞型过程赋值语句后,首先计算其右端赋值表达式的值,然后等到仿真时间结束时将该计算结果赋值变量。也就是说,这种情况下的赋值操作是在同一时刻上的其他普通操作结束后才得以执行。

2,阻塞赋值语句

用操作符“=”来标识“阻塞赋值语句”;

在begin-end串行语句中的各条阻塞型过程赋值语句将它们在顺序快中的排列次序依次得以执行。

阻塞型赋值过程赋值语句的执行过程:首先计算右端赋值表达式的值,然后立即将计算结果赋值给“=”左端的被赋值变量。

原文标题:verilog的一些技巧

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Reg
    Reg
    +关注

    关注

    0

    文章

    20

    浏览量

    11483
  • 端口
    +关注

    关注

    4

    文章

    964

    浏览量

    32073
  • 代码
    +关注

    关注

    30

    文章

    4786

    浏览量

    68565
  • Wire
    +关注

    关注

    0

    文章

    23

    浏览量

    15876

原文标题:verilog的一些技巧

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    想用I2S_WC/GPIO_REG07和I2S_DA/GPIO_REG06透传pwm,怎么实现?

    我们现在用的是927-924方案,硬件参考奇瑞给的文档,想用I2S_WC/GPIO_REG07 和 I2S_DA/GPIO_REG06透传pwm 现在软件按925-926设置文档
    发表于 12-16 08:34

    读写DATAOUT_CTL_REG的程序有什么错误吗?

    程序如下,想请教一下,我读写DATAOUT_CTL_REG的程序有什么错误吗? AD_Conversion(); AD_Write(0xD0280004); // 写入RANGE_SEL_REG
    发表于 12-13 08:38

    使用ADC3424EVM的2-wire模数转换,ADC3424需要配置吗?

    如果只使用ADC3424EVM的2-wire模数转换 那么ADC3424需要配置吗?还是无需配置,上电使用寄存器的默认配置就能使用?
    发表于 11-22 06:38

    ADC3683 FCLK输出占空比异常的原因?怎么处理?

    , 0x1B, 0x00); // REAL DECIMATION, 18-bit, 1-WIRE, 0xFF800 write_reg(fd, 0x20, 0x00); write_reg(fd
    发表于 11-15 07:16

    FPGA算法工程师、逻辑工程师、原型验证工程师有什么区别

    。但在实际工作中,这三个角色的工作可能会有一定的重叠和交叉。 交流问题(二) Q:Verilog 中定义信号为什么要区分 wirereg 两种类型? Verilog 中,过程赋值语句要定义成
    发表于 09-23 18:26

    已经编程完毕的PGA308,如何再通过one wire通信?

    请问对已经编程完毕的PGA308,如何再通过one wire通信?
    发表于 08-22 08:27

    PGA308 3线制模式,one wire连接到Vout,对OTP编程后还能再通过one wire与PGA308通信吗?

    请问PGA308,3线制模式,one wire连接到Vout,已经对OTP编程后,还能再通过one wire与PGA308通信吗?再次对PGA308校准
    发表于 08-22 07:41

    求助:遇见诡异问题,FPGA模块A输出端口连接模块B输入后,模块A不能正常工作的

    reset, input wire[7:0] serial_in, input wire data_valid, output reg [7:0] serial_out, output
    发表于 07-22 11:41

    esp32-s3 spi初始化如何配置SPI_DEVICE_3WIRE

    再来求助一下,spi初始化配置中有SPI_DEVICE_3WIRE,是否说明支持3线spi,支持的话,该如何配置,以及写命令和写数据等函数。拜托拜托!
    发表于 06-19 06:23

    关于Verilog的一些基本语法

    一、了解不同的变量类型 ①、wirereg区别 verilog中的变量类型有wire类型和reg类型。在实际的威廉希尔官方网站 中
    发表于 05-31 18:31

    新手入门的简单小例子-05-重制版03基础计数模块

    基础计数模块对应的实际code如下: module CNT( input wire clk, input wire rst_n, output reg [2:0] OUT ); reg
    发表于 04-28 11:05

    30 mA 5.5-V增压泵REG 71055数据表

    电子发烧友网站提供《30 mA 5.5-V增压泵REG 71055数据表.pdf》资料免费下载
    发表于 04-23 09:49 0次下载
    30 mA 5.5-V增压泵<b class='flag-5'>REG</b> 71055数据表

    50mA开关盖DC/DC转换器REG711数据表

    电子发烧友网站提供《50mA开关盖DC/DC转换器REG711数据表.pdf》资料免费下载
    发表于 04-15 14:33 0次下载
    50mA开关盖DC/DC转换器<b class='flag-5'>REG</b>711数据表

    请问1-Wire网线如何连接USB适配器?

    ADI/Maxim的 DS1402 系列1-Wire网络电缆提供与任何USB、串行或并行端口1-Wire适配器的连接。经常有客户询问DS1402如何连接USB适配器。许多客户对规格书上的连接性矩阵表感到困惑。
    的头像 发表于 03-28 11:39 792次阅读
    请问1-<b class='flag-5'>Wire</b>网线如何连接USB适配器?

    为什么STM32F103 LL库清除某个标志位都是使用WRITE_REG(REG, VAL)呢?

    大佬们,最近看LL库比较贴合寄存器编程,但是LL库清除某个标志位都是通过WRITE_REG(REG, VAL)这个来写整个寄存器,不应该通过CLEAR_BIT(REG, BIT)来实现清除某个位么,比如这个
    发表于 03-18 06:10