数字硬件建模SystemVerilog-组合逻辑建模(3)使用函数表示组合逻辑

news2025/1/21 22:01:26


3139c9ffedfde634f00681e7176ae468.png

数字门级电路可分为两大类:组合逻辑和时序逻辑。锁存器是组合逻辑和时序逻辑的一个交叉点,在后面会作为单独的主题处理。

组合逻辑描述了门级电路,其中逻辑块的输出直接反映到该块的输入值的组合,例如,双输入AND门的输出是两个输入的逻辑与。如果输入值发生变化,输出值将反映这一变化,组合逻辑的RTL模型需要反映这种门级行为,这意味着逻辑块的输出必须始终反映该逻辑块当前输入值的组合。

SystemVerilog有三种在可综合RTL级别表示组合逻辑的方法:连续赋值语句、always程序块和函数。接下来几篇文章将探讨每种编码风格,并推荐最佳实践编码风格。

a02744016d012a6fa8e0b7113b6d4618.png

使用函数表示组合逻辑

当编码正确时,函数的行为和综合就像组合逻辑一样。

最佳实践指南7-7
将RTL模型中使用的函数声明为自动automatic。

为了表示组合逻辑行为,每次调用函数时都必须计算一个新的函数返回值。如果调用了静态函数,但没有指定返回值,则静态函数将隐式返回其上一次调用的值。这是锁存逻辑的行为,而不是组合逻辑。通过将RTL模型中使用的所有函数声明为自动函数(automatic),可以避免这种编码错误。

例7-2定义了一个使用Russian Peasant Multiplication算法(一系列加法和移位运算)计算乘法运算的函数。该函数被定义在一个包中,任何模块都可以使用该乘法器算法。

SystemVerilog会推断出一个与函数名称和数据类型相同的变量,示例7-2中的代码就是利用了这一点。函数名multiply_f被用作临时变量来保存for循环中的中间计算结果,函数名中存储的最终值在函数退出时成为函数返回值。

图7-2显示了综合该函数的结果,以及从连续赋值语句调用该函数的模块。

示例7-2:定义乘法运算的算法函数
//`begin_keywords "1800-2012" // use SystemVerilog-2012 keywords
package definitions_pkg;
  timeunit 1ns; timeprecision 1ns;

  // Russian Peasant Multiplication Algorithm 
  function automatic [7:0] multiply_f([7:0] a, b);
    multiply_f = 0;
    for (int i=0; i<=3; i++) begin 
      if (b == 0) continue; // all done, finish looping
      else begin 
         if (b & 1) multiply_f += a;
         a <<= 1;  // multiply by 2
         b >>= 1;  // divide by 2
      end 
    end 
  endfunction 
endpackage: definitions_pkg
//`end_keywords 

//`begin_keywords "1800-2012" // use SystemVerilog-2012 keywords
module algorithmic_multiplier
import definitions_pkg::*;
(input  logic [3:0] a, b,
 output logic [7:0] result
);
  timeunit 1ns; timeprecision 1ns;

  assign result = multiply_f(a, b);

endmodule: algorithmic_multiplier
//`end_keywords 
图7-2:示例7-2的综合结果:作为组合逻辑的函数
6fb9fcbbc18c4fb84dbfb53fc5b0056f.png
最佳实践指南7-8
在可能的情况下,使用SystemVerilog运算符,如*,而不是使用循环和其他编程语句。

算法乘法器的示例7-2还说明了为什么在乘法和除法等复杂运算中最好使用SystemVerilog运算符。如果在示例7-2中使用了乘法运算符(*),则综合编译器可以将该运算符映射到ASIC或FPGA的最有效的乘法器。

设计工程师在使用算术运算符或算法来表示复杂操作时需要谨慎。RTL模型不是在具有大量内存资源的通用计算机上运行的软件程序。RTL模型是门级实现的抽象。所表示的功能需要在物理上适合目标ASIC或FPGA,并且在时间上在有限的数量或时钟周期内。之前的文章有详细介绍了在RTL模型中使用算术运算符(如乘法和除法)的指导原则。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/105644.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

艾美捷Annexin V-FITC凋亡检测试剂盒:简单、快速

艾美捷Annexin V-FITC凋亡检测试剂盒&#xff1a;简单、快速的检测&#xff0c;区分凋亡细胞和坏死细胞。 艾美捷Annexin V-FITC凋亡检测试剂盒基本参数&#xff1a; 中文名称&#xff1a;Annexin V-FITC apoptosis detection kit 英文名字&#xff1a;Annexin V-FITC apopto…

Redis6入门到实战------ 四、Redis配置文件介绍

1.1 单位 配置大小单位,开头定义了一些基本的度量单位&#xff0c;只支持bytes&#xff0c;不支持bit 大小写不敏感 1.2 INCLUDES包含 类似jsp中的include&#xff0c;多实例的情况可以把公用的配置文件提取出来 1.3 网络相关配置 1.3.1 bind 默认情况bind127.0.0.1只能接…

linux基础学习-vim使用方法

直接输入vim&#xff0c;进入的是空白vim基本使用 命令模式&#xff1a;按键代表命令 i/a&#xff0c;切换为编辑模式:,切换到末行模式dd&#xff0c;删掉一行&#xff08;前面可以加数字&#xff09;yy&#xff0c;复制光标所在行&#xff08;前面可以加数字&#xff09;p&…

一建,PMP,软考,优先考哪个?

需要pmp资料可看封面或在文末获取。 这三者的共同点都是含有“项目管理”知识&#xff0c;可以用于项目管理岗位。 根据容易程度和知识点的基础程度来分&#xff0c;最好按照&#xff1a;PMP&#xff0c;软考&#xff0c;一建的顺序来考。 分别介绍一下三者&#xff1a; 【…

Robust Pose Estimation in Crowded Scenes with Direct Pose-Level Inference 阅读笔记

基于直接姿态级推理的拥挤场景鲁棒姿态估计 NeurIPS 2021 论文链接 代码链接 摘要&#xff1a;拥挤场景下的多人姿态估计具有挑战性&#xff0c;因为重叠和遮挡使得难以检测人体边界框并从单个关键点推断姿态线索&#xff08;关键点位置&#xff09;。为解决该问题&#xff0…

[MySQL]-死锁案例-唯一索引上的并发插入

[MySQL]-死锁案例-唯一索引上的并发插入 森格 | 2022年12月 本文是对实际work中遇到的死锁问题的复现&#xff0c;其目的是学会去分析死锁日志、还原日志上下文、理解死锁产生原因、MySQL处理机制&#xff08;回滚事务的选择&#xff09;&#xff0c;最后到死锁的解决方案的提…

7张图,剖析Redis缓存,文末附Redis工具类源码,建议收藏

一、缓存是什么&#xff1f; 缓存就是数据交换的缓存区&#xff0c;是存储数据的地方&#xff0c;一般读写性能较高。 二、缓存的作用和成本 1、缓存的作用 降低后端负载 提高读写效率&#xff0c;降低响应时间 2、缓存的成本 数据一致性成本 代码维护成本 运维成本 三、…

IDEA中新建找不到Vue Component | IDEA右键Create New Servlet找不到Setvlet

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; 解决&#xff1a;IDEA中新建找不到Vue Component 打开IDEA&#xff0c;依次打开 &#xff08;文件——设置——编辑器——文件或代码模板&#xff09; 找到右侧&#…

Spring—Spring AOP1

文章目录AOP概念的引入AOP相关的概念1.AOP的概述2. AOP的优势3. AOP的底层原理如何利用AOP对原有业务进行增强利用注解方式切入点表达式AOP相关的术语————————————————————————————————AOP概念的引入 首先我们来看一下登录的原理 如上图所示这…

【云原生 | Kubernetes 实战】16、K8s 配置管理中心 ConfigMap 实现微服务配置管理

目录 一、ConfigMap 概述 1.1 什么是 ConfigMap&#xff1f; 1.2 ConfigMap 能解决哪些问题&#xff1f; 1.3 ConfigMap 应用场景 1.4 局限性 二、ConfigMap 创建方法 2.1 根据字面值创建 ConfigMap 2.2 基于文件创建 ConfigMap 2.3 基于目录创建 ConfigMap 2.4 编…

【大数据系列之MySQL】(二十二):MySQL中的分组查询group by

对于常见的函数都是单行函数&#xff0c;说白了就是一一映射&#xff0c;输入一个值则输出对应的值&#xff0c;但是MySQL中还存在聚合函数就是输入一组值则返回一个值&#xff0c;常见的例如&#xff1a;sum、max等 很多时候需要对数据中的某些字段进行分组&#xff0c;探究每…

%27 CORS 跨域资源共享

1、CORS &#xff08;跨域资源共享&#xff09; 由一系列的 HTTP 响应头组成&#xff0c;这些响应头可以决定浏览器是否阻止前端 js 代码跨域获取资源 2、CORS 的响应头 &#xff08;1&#xff09;、Access-Control-Allow-Origin res.setHeader(‘Access-Control-Allow-Origin’…

web:常见安全问题

一、XSS XSS(Cross-Site Scripting)&#xff0c;跨站脚本攻击&#xff0c;因为缩写和css重叠&#xff0c;所以只能叫XSS。跨站脚本攻击是指通过存在安全漏洞的web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击。 跨站脚本攻击有可能造成一下影响&#…

记一次赤裸裸的教训:All elements are null

wshanshi&#xff1a;记一次赤裸裸的教训…All elements are null… 一、异常信息 数据库查询统计相关业务&#xff0c;未使用分组group by&#xff0c;仅单独使用聚合函数。如下图所示&#xff0c;使用了SUM()函数。 假如数据库中未匹配到相关数据&#xff0c;结果集用List接…

希尔伯特-包络分析步骤与实例

希尔伯特-包络分析流程 对于齿轮箱振动信号而言&#xff0c;由于存在多对齿轮同时参与啮合&#xff0c;那么&#xff0c;测量得到的信号将可能出现多个以齿轮啮合频率或及谐频为载波频率、轴频为调制频率的幅值调制、频率调制或混合调制的情况&#xff0c;除此之外&#xff…

logback+slf4j日志详解

前言 项目中日志系统是必不可少的&#xff0c;目前比较流行的日志框架有log4j、logback等&#xff0c;可能大家还不知道&#xff0c;这两个框架的作者是同一个人&#xff0c;Logback旨在作为流行的log4j项目的后续版本&#xff0c;从而恢复log4j离开的位置。 另外 slf4j(Simp…

第二证券|昨日涨停,今日1分钟闪崩跌停,超1亿资金排队“出逃”!

养老概念股悦心健康&#xff08;SZ002162&#xff09;在接连2个涨停后&#xff0c;12月21日早盘&#xff0c;悦心健康大幅低开&#xff0c;1分钟闪崩跌停。 值得注意的是&#xff0c;20日盘后龙虎榜数据显现&#xff0c;万和证券股份有限公司成都通盈街证券营业部净买入1492.92…

HttpUnit是什么?如何应用?

推荐阅读&#xff1a; [内部资源] 想拿年薪30W的软件测试人员&#xff0c;这份资料必须领取~ Python自动化测试全栈性能测试全栈&#xff0c;挑战年薪40W 什么是HttpUnit? HttpUnit是基于JUnit构建的一个开源的测试框架&#xff0c;专门针对Web应用的测试&#xff0c;用于解…

TM32 DMA1和DMA2通道一览表、STM32F103C8T6定时器通道对应的引脚

TIM1_BRK_IRQn 24, TIM1_UP_IRQn 25, TIM1_TRG_COM_IRQn 26, TIM1_CC_IRQn 27, TIM2_IRQn 28, TIM3_IRQn 29, 这个函数TIM_SetCompare1&#xff0c…

计算机毕设Python+Vue学习互助平台网站(程序+LW+部署)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 Ma…