当前位置: 首页 > news >正文

reg和wire的区别 HDL语言

文章目录

    • 数据类型
    • 根本区别
    • 什么时候要定义wire
    • 小结

数据类型

HDL语言有三种数据类型:寄存器数据类型(reg)、线网数据类型(wire)、参数数据类型(parameter)。

根本区别

  • reg:
    寄存器类型,要有触发,才会响应。变量可以保持它们自身的数值,直到该变量被指定了新的值为止。在过程赋值语句中,表达式右侧的计算结果在某种条件的触发下放到一个变量当中,而这个变量可以声明成reg类型的。根据触发条件的不同,过程赋值语句可以建模不同的硬件结构:如果这个条件是时钟的上升沿或下降沿,那么这个硬件模型就是一个触发器;如果这个条件是某一信号的高电平或低电平,那么这个硬件模型就是一个锁存器;如果这个条件是赋值语句右侧任意操作数的变化,那么这个硬件模型就是一个组合逻辑。

  • wire:
    -只要输入有变化,输出就无条件的立即发生变化。表示元件间的物理连线,不能保存数据。使用在连续赋值语句中,表达式右侧的计算结果可以立即更新表达式的左侧。在理解上,相当于一个逻辑之后直接连了一条线,这个逻辑对应于表达式的右侧,而这条线就对应于wire。

什么时候要定义wire

  • assign 语句的输出
    wire为无逻辑连线。只做连线,wire本身是不带逻辑性的,所以输入什么输出就是什么。所以你尝试着用always语句对wire变量赋值。综合器就会报错。
    assign c =a&&b:综合器综合时将a&&b综合成ab经过一个与门。而c只是连接到与门输出的线。真正综合出与门的是&&。而不是c。
  • 元件例化时候的顶层输出
    (例如这里的rst_filter)
//将呼吸灯模块通过例化到顶层
module top_breath_led(input clk,input rst,output  led1,    //2soutput  led2    //4s
);wire rst_filter; // 按键消抖后的值// 实例化按键消抖模块
keydebounce u_keydebounce (.clk(clk),.rst(rst),.rst_filter(rst_filter)
);// 实例化呼吸灯模块
// 2s
breath_led #(.CNT_2US_MAX(7'd100),.CNT_2MS_MAX(10'd1000),.CNT_2S_MAX(10'd1000)
) u_breath_led1(.clk(clk),.rst(rst_filter),.led(led1)
);// 4s
breath_led #(.CNT_2US_MAX(8'd200),.CNT_2MS_MAX(10'd1000),.CNT_2S_MAX(10'd1000)
) u_breath_led2(.clk(clk),.rst(rst_filter),.led(led2)
);endmodule
  • 输入信号
    输入信号一般来说你是不知道上一级是寄存器输出还是组合逻辑输出,那么对于本级来说就是一根导线,也就是wire型。

小结

简单介绍了一下wire和reg类型的区别,对于新手来说很容易混淆。
如有任何问题可以联系邮箱:zelinliu@nuaa.edu.cn

http://www.lryc.cn/news/438450.html

相关文章:

  • 前置声明和头文件之间的关系 问题
  • Linux02
  • df 命令:显示磁盘空间使用情况
  • 深入解析Go语言的容器包
  • STM32 + W5500 实现HTTPS !
  • 使用DuckDuckGo搜索API进行高效信息检索:Python实践指南
  • UE4_后期处理_后期处理材质四—场景物体描边
  • 华为OD机试 - 推荐多样性(Python/JS/C/C++ 2024 E卷 100分)
  • 梧桐数据库(WuTongDB):CBO(Cost-Based Optimizer)基于代价的优化器技术简介
  • 深入探索Go语言中的函数:匿名函数、指针参数与函数返回
  • Android12_13左上角状态栏数字时间显示右移动
  • 望繁信科技携流程智能解决方案亮相CNDS 2024新能源产业数智峰会
  • nginx负载均衡(轮询与权重)
  • 【计算机网络】网络通信中的端口号
  • Python 解析 JSON 数据
  • 利用LlamaIndex构建ARG本地知识库
  • PCM的缺点
  • 【C语言】(指针系列四)回调函数+qsort函数
  • 全面理解tensor编程中矩阵的行和列
  • 【Kubernetes】常见面试题汇总(十)
  • CSS —— 界面布局
  • SpringBoot万级并发-jemeter-Address already in use: connect
  • P1228 地毯填补问题
  • 【计算机网络】UDP TCP介绍
  • JDBC初相识
  • Go语言现代web开发07 map字典
  • AI工具一键制作爆火的“汉语新解“卡片!
  • windows检查端口占用并关闭应用
  • 机器学习-聚类算法
  • keil 中 printf重定向