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

【verilog】单/多if语句优先级

有点迷糊单if和多if语句综合出来的优先级情况,记录一下,参考:https://zhuanlan.zhihu.com/p/560453318

单if语句

单if语句(if-else if-else)通常会被逻辑综合成多个二选一的选择器组合而成,其具有隐含的优先级,优先级由上往下,只能在initial和always语句中使用

故对于if-else语句结构都是通过二选一的数据选择器搭建而来

always@(a or b or c or d or sel0 or sel1 or sel2 or sel3)beginif(sel3)z	=	d;else if(sel2)z	=	c;else if(sel1)z	=	b;else if(sel0)z	=	a;elsez	=	0;end

以上述代码为例,其描述的电路为


其中d具由最高优先级依次递减,a的优先级最低。

vivado综合出来的电路如下图所示

多if语句

多if语句(if...if...if)与单if语句类似,具有优先级,且消耗二选一组合逻辑器件。与单if语句不同的是其最高优先级给到最迟到达的信号。以下述代码为例

always@(a or b or c or d or sel0 or sel1 or sel2 or sel3)beginz = 0;  //当所有条件不符时z=0;不加则会生成latchif(sel0)z	=	a;if(sel1)z	=	b;if(sel2)z	=	c;if(sel3)z	=	d;end	

alwsys语句中描述组合逻辑电路使用阻塞赋值,其内部语句顺序执行,故其最高优先级是sel3决定的d,最低优先级是sel0决定的a故而可以画出此段代码描述的电路,因调整了优先级顺序,故于上文中单if语句的电路一致。

与vivado综合电路一致

http://www.xdnf.cn/news/120529.html

相关文章:

  • 大数据赋能零售,打造个性化购物新纪元
  • UML 活动图深度解析:以在线购物系统为例
  • 深入了解递归、堆与栈:C#中的内存管理与函数调用
  • 第二篇:Django配置及ORM操作
  • 【mongodb】系统保留的数据库名
  • 复杂性决策-思维训练
  • Linux之安装配置Nginx
  • 如何获取适用于视频编辑优化的谷歌浏览器【提升视频编辑体验】
  • ThreadLocal线程本地量
  • 第六章:LangChain - LCEL 驱动的高级 RAG 实战
  • html单页业务介绍源码
  • Day11(回溯法)——LeetCode79.单词搜索
  • 26考研|数学分析:数项级数
  • PyQt6基础_QTabWidget
  • 基于霍尔效应传感器的 BLDC 电机梯形控制方案详解
  • JVM性能优化之年轻代参数设置
  • 23种设计模式-行为型模式之模版方法模式(Java版本)
  • Opencv图像处理:旋转、打包、多图像匹配
  • 嵌入式面试高频考点深度解析:内存管理、指针操作与结构体实战指南
  • 高德MCP制作旅游攻略
  • Volcano 实战快速入门 (一)
  • 03_JavaScript
  • mysql快速在不同库中执行相同的sql
  • PCB常见封装类型
  • [U-Net]DA-TRANSUNET
  • 如何将 PDF 中的文本提取为 JSON 格式
  • nfs服务原理、搭建手册、安全配置建议及异常定位手段
  • 跨域 同源策略通俗讲解
  • 在数据链路层扩展以太网
  • Oracle 11g RAC手动打补丁详细步骤