【芯片设计- RTL 数字逻辑设计入门 11.2 -- 状态机实现 移位运算与乘法 2】

news2024/11/15 21:43:45

文章目录

    • 移位运算与乘法
    • parameter
      • parameter 特点
      • parameter 基本语法
      • parameter 示例
      • 局部参数
      • 局部参数示例
    • 状态机代码实现
      • VCS 仿真结果

文章 【芯片设计- RTL 数字逻辑设计入门 11.1 – 状态机实现 移位运算与乘法 1】 介绍了状态机,本篇文章主要就是使用状态机的方式来实现移位运算与乘法。

移位运算与乘法

已知d为一个8位数,请在每个时钟周期分别输出该数乘1/3/7/8,并输出一个信号通知此时刻输入的d有效(d给出的信号的上升沿表示写入有效)
在这里插入图片描述
在这里插入图片描述

parameter

这里先介绍下 SystemVerilog中的关键字parameter。在SystemVerilog中,parameter关键字用于定义模块、类或函数内的常量。这些常量在编译时确定,可以在模块实例化时进行重写,从而提供了设计的可配置性和灵活性。parameter可以定义标量、数组或结构等类型的常量。

parameter 特点

  • 静态定义parameter在编译时设置,不能在运行时更改。
  • 默认值:在声明时可以设置默认值。
  • 可重载:在模块实例化时可以更改其值。
  • 数据类型:可以有特定的数据类型,如整型、实型、字符串等。

parameter 基本语法

parameter type parameter_name = default_value; 

或者省略类型,让编译器自动推断:

parameter parameter_name = default_value; 

parameter 示例

module adder #( parameter integer DATA_WIDTH = 8 // 定义参数DATA_WIDTH,默认值为8 ) (
						 input logic [DATA_WIDTH-1:0] a, b, // 使用参数设置输入端口宽度 
						 output logic [DATA_WIDTH-1:0] sum // 使用参数设置输出端口宽度 
						); 

   					// 实现一个DATA_WIDTH位的加法器 
   					assign sum = a + b; 
endmodule 

   				// 在实例化时使用默认参数 
   				adder adder_instance1 ( 
   					.a(a_signal), 
   					.b(b_signal), 
   					.sum(sum_signal)
   				 ); 

   		// 在实例化时重载参数,将DATA_WIDTH设置为16 
   		adder #(.DATA_WIDTH(16)) adder_instance2 ( 
   			.a(a_signal), 
   			.b(b_signal), 
   			.sum(sum_signal) 
   		); 

在这个例子中,adder模块定义了一个名为DATA_WIDTH的参数,其默认值为8。当你实例化adder模块时,你可以接受这个默认值,也可以提供一个新的值来重写它。这样,你就可以根据需要创建不同位宽的加法器实例。

局部参数

除了parameter,SystemVerilog还提供了localparam关键字,用于定义不可更改的局部常量。

localparam type localparam_name = constant_value; 

localparam定义了一个局部常数,这个常数不能在模块实例化时被重写,用于内部模块展开或计算,而不打算作为模块的配置接口。

局部参数示例

在这里插入图片描述
在这个例子中,MAX_VALUE被定义为一个localparam,用于确定计数器的最大值,它内部使用,不可从外部更改。这样可以确保模块的行为在设计阶段被固定,并且在不同的实例化中保持一致。

状态机代码实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

VCS 仿真结果

在这里插入图片描述

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

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

相关文章

Vision Pro 5 月将在中国区发售;全球科技大厂 1 月已裁员 32000 人丨RTE 开发者日报 Vol.145

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

Stable Diffusion 模型下载:Disney Pixar Cartoon Type A(迪士尼皮克斯动画片A类)

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 目前还没有一个好的皮克斯迪士尼风格的卡通模型,所以我决定自己制作一个。这是将皮克斯风格模型与我自己的Loras合并在一起,创建一个通用的…

【Transformer(04/10) 】 Hugging Face手册-推理管道

一、说明 这里是Hugging Face手册第四部分,如何使用推理管道;即使您没有特定模式的经验或不熟悉模型背后的底层代码,您仍然可以使用它们通过 pipeline ()进行推理! 二、推理管道 pipeline ()可以轻松使用Hub中的任何模型来推理任…

第三百一十三回

文章目录 1. 概念介绍2. 实现方法2.1 obscureText属性2.2 decoration属性 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何实现倒计时功能"相关的内容,本章回中将介绍如何实现密码输入框.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍…

实例分割论文阅读之:《Mask Transfiner for High-Quality Instance Segmentation》

1.摘要 两阶段和基于查询的实例分割方法取得了显著的效果。然而,它们的分段掩模仍然非常粗糙。在本文中,我们提出了一种高质量和高效的实例分割Mask Transfiner。我们的Mask Transfiner不是在规则的密集张量上操作,而是将图像区域分解并表示…

【Django】ORM关系映射

关系映射 在关系型数据库中,通常不会把所有数据都放在同一张表中,不易于扩展,常见的关系映射有: 一对一映射,如一个身份证对应一个人。 一对多映射,如一个班级可以有多个学生。 多对多映射,如…

基于SpringBoot和PostGIS的震中影响范围可视化实践

目录 前言 一、基础数据 1、地震基础信息 2、全国行政村 二、Java后台服务设计 1、实体类设计 2、Mapper类设计 3、控制器设计 三、前端展示 1、初始化图例 2、震中位置及影响范围标记 3、行政村点查询及标记 总结 前言 地震等自然灾害目前还是依然不能进行准确的预…

解密 ARMS 持续剖析:如何用一个全新视角洞察应用的性能瓶颈?

作者:饶子昊、杨龙 应用复杂度提升,根因定位困难重重 随着软件技术发展迭代,很多企业软件系统也逐步从单体应用向云原生微服务架构演进,一方面让应用实现高并发、易扩展、开发敏捷度高等效果,但另外一方面也让软件应…

每日一练:LeeCode-112、路径总和【二叉树+DFS+回溯】

本文是力扣LeeCode-112、路径总和 学习与理解过程,本文仅做学习之用,对本题感兴趣的小伙伴可以出门左拐LeeCode。 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有…

【闲来看源码】分析一下`ArrayUtils.contains()`这个方法的实现

【闲来看源码】分析一下ArrayUtils.contains()这个方法的实现 大家先来看源码 PreAuthorize("ss.hasPermi(system:user:remove)")Log(title "用户管理", businessType BusinessType.DELETE)DeleteMapping("/{userIds}")public AjaxResult remo…

flink反压及解决思路和实操

1. 反压原因 反压其实就是 task 处理不过来,算子的 sub-task 需要处理的数据量 > 能够处理的数据量,比如: 当前某个 sub-task 只能处理 1w qps 的数据,但实际上到来 2w qps 的数据,但是实际只能处理 1w 条&#…

制作离线版element ui文档

链接:https://pan.baidu.com/s/1k5bsCK9WUlZobhFBLItw1g?pwdgeyk 提取码:geyk --来自百度网盘超级会员V4的分享 https://github.com/ElemeFE/element 克隆官方代码 使用nvm切换node版本,推荐使用14.0.0 http://doc.xutongbao.top/doc/#/zh…

田忌赛马 - 华为OD统一考试

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C 题目描述 给定两个只包含数字的数组a,b,调整数组a里面数字的顺序,使得尽可能多的a[i] > b[i]。 数组a和b中的数字各不相同。输出所有可以达到最优结果的a数…

Mac M1使用PD虚拟机运行win10弹出“内部版本已过期立即安装新的windows内部版本”

一、问题 内部版本已过期立即安装新的windows内部版本 二、解决 1、如图所示打开zh-CN目录 C:\windows\system32\zh-CN找到licensingui.exe文件 将该文件重命名为licensingui_bak.exe 2、修改完成效果如下 (1)但操作中发现,需要TrustedIns…

使用阿里云一键部署 幻兽帕鲁服务器 菜鸟教程 一键快速部署

本文通过介绍如何 从购买阿里云服务器(windows系统)、到一键傻瓜式快速部署、再到连接到帕鲁服务器,简介明了,易上手,没相关专业知识的游戏玩家也能一键傻瓜式搭建服务器环境。 背景:最近很火爆的游戏《幻…

HCIA-HarmonyOS设备开发认证V2.0-3.2.轻量系统内核基础-任务管理

目录 一、任务管理1.1、任务状态1.2、任务基本概念1.3、任务管理使用说明1.4、任务开发流程1.5、任务管理接口 一、任务管理 从系统角度看,任务是竞争系统资源的最小运行单元。任务可以使用或等待CPU、使用内存空间等系统资源,并独立于其它任务运行。 O…

设计模式巡礼:多板适配案例解析与深度重构

theme: cyanosis 月黑风高,好兄弟发给我一个重构需求,咨询我的意见。 一、 场景分析 开发的产品是需要运行到不同的定制Android板子,不同板子有对应的不同SDK提供的API,目前的业务端,业务流程基本是确定的&#xff0…

LLM大语言模型(六):RAG模式下基于PostgreSQL pgvector插件实现vector向量相似性检索

目录 HightLightMac上安装PostgreSQLDBever图形界面管理端创建DB 使用向量检索vector相似度计算近似近邻索引HNSW近似近邻索引示例 HightLight 使用PostgreSQL来存储和检索vector,在数据规模非庞大的情况下,简单高效。 可以和在线业务共用一套DB&#…

国产航顺HK32F030M: 超声波测距模块串口通信数据接收与处理

参考代码 /************************************************************************************************** * file usart_async_tx_no_int_rx_rxneint.c * brief 异步串口通信例程, 通过查询TXE标志发送数据,通过RXNE中断接收数据,当中断接收到数据后会将 * …

使用yolo训练自己的模型

YOLO(You Only Look Once)是一种用于目标检测的深度学习模型,旨在实时检测图像或视频中的多个对象。与传统的目标检测方法不同,YOLO一次性处理整个图像,而不是通过滑动窗口或区域提议进行多次检测。这种方法使得YOLO在…