文章目录

  • 一、wire
  • 二、logic
  • 三、logic
  • 四、总结

一、wire

wire类型设计时表示导线结构,它不存储状态,只能负责传递驱动级的输出。wire型数据常用来表示用以assign关键字指定的组合逻辑信号。Verilog程序模块中输入、输出信号类型默认时自定义为wire型。wire型信号可以用做任何方程式的输入,也可以用做“assign”语句或者实例原件的输出。

<font color=#999AAA >wire   [n-1:0]      my_wire0,my_wire1,...,my_wirem-1;   //定义了m条总线,每条线位宽为n。
wire   my_wire= A & B; //assign组合逻辑,定义了一个输出信号mysignal0,A、B两个输入驱动。

二、logic

reg类型设计用于表示存储结构,它内部存储状态,并在时钟沿到来或异步信号改变等条件触发时改变内部状态。reg类型数据需要使用过程赋值(procedural assignment),即赋值定义在always、initial、task或function语法块中。reg类型数据默认初始值为不定值x。reg虽然是寄存器类型,但也可能被综合工具综合为组合逻辑。
reg类型通常用于always模块中的指定信号,always块中每个被赋值的信号必须是reg类型,输入信号不做要求。

reg   [n-1:0]      my_reg0,my_reg1,...,my_regm-1;  //定义了m个寄存器,每寄存器位宽为n。
reg      [7:0]           my_reg0,my_reg1;
wire                    my_reg= A & B;    //连续赋值
always@(posedge clk,negedge rst)begin
if(!rst)beginreg0<=8'd0;reg1<=8'd0;
end
else beginreg0<=mysignal;reg1<=reg0;
end
end

三、logic

logic类型是在reg类型基础上进行改进,使得它除了作为一个寄存器变量外,还可以被连续赋值、门单元和模块所驱动。任何使用wire线网类型的地方都可以使用logic,但是logic类型不能有多个结构性的驱动。
wire定义时赋值是连续赋值,而logic定义时赋值只是赋初值,并且赋初值是不能被综合的。

logic  [7:0] my_logic0,my_logic1,...,my_logicm;  //定义了m个logic类型,每个位宽为n。
logic    my_logic =A & B; //在0时刻将mysignal1初始化为A & B的值,然后不再对其做进一步的更改。
wire     my_wire = A & B;   //连续赋值,与门。
module  logic _data_type(input logic rst_h);parameter  CYCLE=20;logic  q,q_l,d,clk,rst_l;initial beginclk=0;        //过程赋值forever # (CYCLE/2) clk=~clk;endassign   rst_l=~rst_h;    //连续赋值not  n1(q_l,q);           //q_l被门驱动my_dff d1(q,d,clk,rst_l);  //q被模块驱动
endmodule

四、总结

所以总结Verilog wire和reg的区别:

wire表示导线结构,reg表示存储结构。
wire使用assign赋值,reg赋值定义在always、initial、task或function代码块中。
wire赋值综合成组合逻辑,reg可能综合成时序逻辑,也可能综合成组合逻辑。

所以总结SystemVerilog logic的使用方法:
单驱动时logic可完全替代reg和wire,除了Evan提到的赋初值问题。
多驱动时,如inout类型端口,使用wire。

reg、wire与logic的区别相关推荐

  1. Verilog中reg和SystemVerilog中logic的区别

    关于reg和logic的区别,在SystemVerilog验证测试平台编写指南中有所提出,如下所示: SystemVerilog对经典的reg数据类型进行了改进,使得他除了作为一个变量以外,还可以被连 ...

  2. SystemVerilog中logic var reg wire的区别

    在Verilog中,所有的线网和变量都是使用四态值,因此没必要也不能清晰的区分信号类型. 为了增强灵活性,SystemVerilog中定义信号同时具有类型和数据类型两个属性. 类型指示信号是属于线网( ...

  3. 【verilog语法】关于testbench与被测module的输入输出数据类型定义:reg/wire原因

    testbench的输入输出数据类型正好与被测模块相反 1.被测module中,输入为wire,输出为reg 输入信号是由模块外部决定的,输入数据的状态是变化的,与外部模块是通过线连接,所以用wire ...

  4. FPGA学习笔记——wire和reg数据以及组合逻辑和时序逻辑

    Testbench 编写 wire和reg使用方法 wire语句表示以assign关键字指定的组合逻辑信号,模块的输入输出都默认为wire型,相当于物理接线. reg语句表示寄存器类型.用于alway ...

  5. reg类型变量综合电路_SystemVerilog的一些可综合实用技巧

    Not True! SystemVerilog was designed to enhance both the design and verification capabilities of tra ...

  6. 锁存器(latch)、触发器(FF)、存储器(REG)

    锁存器(latch)别用 为什么FPGA中要时常避免锁存器产生? 1.锁存器对毛刺不敏感,很容易在输出信号上产生毛刺: 2.没有时钟信号,不容易进行静态时序分析. 正是因为这两个原因,我们在FPGA设 ...

  7. 灵心胜造物,妙手夺天工——Wire Editing(一)

    今天我们要介绍的图形界面工具是Wire Editing.这是我们经常用到的一个修复drc的工具. 想必DRC肯定是每个designer最不想碰到的东西吧,多少个tape out的通宵之夜就花在ECO和 ...

  8. 菜鸟做设计必看!有关如何做设计的整体思路,以及能否综合的笔记

    对Verilog 初学者比较有用的整理(转自它处) 作者: Ian11122840 时间: 2010-9-27 09:04 标题: 菜鸟做设计必看!有关如何做设计的整体思路,以及能否综合的笔记 所谓综 ...

  9. 关于verilog的一些基础知识整理

    *作者: Ian11122840 时间: 2010-9-27 09:04 * *标题: 菜鸟做设计必看!有关如何做设计的整体思路,以及能否综合的笔记 * *所谓综合,就是把描述语言转化成能硬件实现的电 ...

  10. 对于Verilog语言的一些总结

    1.不使用初始化语句: 2.不使用延时语句: 3.不使用循环次数不确定的语句,如:forever,while等: 4.尽量采用同步方式设计电路: 5.尽量采用行为语句完成设计: 6.always过程块 ...

最新文章

  1. python基本对象_python基础教程:运算对象、运算符、表达式和语句
  2. python executemany执行延迟_运维架构师-Python 自动化运维开发-031
  3. 随机访问介质控制协议
  4. 域名备案和网站备案有什么区别?
  5. 台式计算机无线网卡怎么找,win7台式机找不到无线网卡怎么办
  6. (转)春节抢票难,github标星1.5万的2款开源项目你一定没试过
  7. uniapp h5微信分享
  8. 惊了!原来B站董事长陈睿也是个深度动漫爱好者?
  9. Jquery+SpringMVC实现上传Excel文件,并批量导入
  10. c 语言获取系统时间并打印机,C# 获取打印机当前状态的方法
  11. (转)oracle中的CURRVAL和NEXTVAL用法
  12. Unity-VolumeLighting组件(体积雾/光效果)使用小记
  13. 《帝国时代IV》(Age of Empires IV)CODEX版切换简体中文界面和语音的方法 附中文语言和语音下载
  14. 机房收费系统总结之5——抽象工厂+反射+配置文件
  15. Adobe Bridge 2021最新中文版来了!!!!
  16. 论文阅读:Automatic segmentation of pulmonary lobes using a progressive dense V-network
  17. 新网工李白——>李白你好(来抽大奖啦~)
  18. 关于KEIL的RTX 堆栈溢出问题
  19. 超市会员注册积分查询管理系统
  20. Alien Skin Eye Candy v7.x(眼睛糖果7)最新通用汉化补丁32/64位

热门文章

  1. 带表情字符插入mysql字段报错问题处理 Incorrect string value: ‘\xF0\xA5\x8C\x93\xE5\x85...‘ for column ‘nickName‘
  2. 永中文档在线预览集群部署方案
  3. Office Word 目录制作页码右对齐方法
  4. Altium Designer 18 导入网络报表到PCB 文件中
  5. 总结一下__declspec(dllimport)的作用
  6. 项目经理的工具箱---走出软件作坊:三五个人十来条枪 如何成为开发正规军(三)
  7. html转cshtml 基础篇
  8. 研究生师兄谈SCI论文写作心得
  9. 插画艺术家IUU DAI “寒随今夜走Sorrow ends tonight”个人展
  10. CM311-1a YST(2G+16G)刷Armbian后的网络设置