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

Verilog语法学习——边沿检测

边沿检测

在这里插入图片描述

代码

module edge_detection_p(input 		sys_clk,input 		sys_rst_n,input 		signal_in,output 		edge_detected
);//存储上一个时钟周期的输入信号reg signal_in_prev;always @(posedge sys_clk or negedge sys_rst_n) beginif(!sys_rst_n)signal_in_prev <= 0;else beginsignal_in_prev <= signal_in;	//两个信号相差一个时钟周期endend//上升沿检测:signal_in_prev为0,signal_in为1assign edge_detected = signal_in & ~signal_in_prev;endmodule

若为下降沿检测,则为:

assign edge_detected = ~signal_in & signal_in_prev;

改进

若出现不定值x或高阻值z,则检测不准确。

可以改进为:

assign edge_detected = ((a & ~signal_in_prev)===1)?1:0;//上升沿检测assign edge_detected = ((~a & signal_in_prev)===1)?1:0;//下降沿检测

解释:

  • ==!==称为逻辑等式运算符,其结果由两个操作数的值决定。真值表如下:
==01xz
010xx
101xx
xxxxx
zxxxx
  • ===!===常用于case表达式的判别,所以又称为case等式运算符。它是对操作数进行按位比较,两个操作数必须完全一致,结果才为1。若两个操作数对应位都出现不定值x或高阻值z,则也可认为是相同的。真值表如下:
===01xz
01000
10100
x0010
z0001

参考

(201条消息) Verilog 相等运算符之相等和全等_verilog 全等_蒋楼丶的博客-CSDN博客

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

相关文章:

  • springboot和springcloud的联系与区别
  • 【Web开发指南】如何用MyEclipse进行JavaScript开发?
  • 【C++进阶】多态
  • 决策树的划分依据之:信息增益率
  • SolidUI社区-独立部署 和 Docker 通信分析
  • Windows下FreeImage库的配置
  • 用python编写一个小程序,如何用python编写软件
  • WPF实战学习笔记32-登录、注册服务添加
  • XGBoost的参数
  • 【已解决】windows7添加打印机报错:加载Tcp Mib库时的错误,无法加载标准TCP/IP端口的向导页
  • 用于紫外线消毒灯的LED驱动:数明深紫外消毒方案SLM201
  • Docker部署Springboot应用【mysql部署+jar部署+Nginx部署】
  • EMC VNX1系列存储电池状态说明
  • pyspark 判断 Hive 表是否存在
  • 选择排序算法
  • 快速了解MyBatis---映射关系多对一
  • python学到什么程度算入门,python从入门到精通好吗
  • 整数规划——第一章 引言
  • C语言结构体讲解
  • 021 - STM32学习笔记 - Fatfs文件系统(三) - 细化与总结
  • jQuery如何获取动态添加的元素
  • Keepalived 在CentOS 7安装并配置监听MySQL双主
  • 深度学习,神经网络介绍
  • 中国AI大模型峰会“封神之作”!开发者不容错过这场夏季盛会
  • Android Studio多渠道打包
  • RK3566 Android11默认客户Launcher修改
  • ORB算法在opencv中实现方法
  • vue项目回显文本无法识别换行符
  • Minio 部署
  • Kafka系列之:记录一次Kafka Topic分区扩容,但是下游flink消费者没有自动消费新的分区的解决方法