vivado乘法器IP核进行无符号与有符号数相乘问题的验证

本文验证乘法器IP核Multiplier进行无符号(unsigned)与有符号数(signed)相乘的正确性,其中也遇到了一些问题,做此记录。

配套工程:https://download.csdn.net/download/weixin_48412658/88354179

文章目录

  • 问题的讨论
  • 验证过程
    • IP核配置
    • 例化乘法器
    • 仿真代码
    • 仿真波形分析与结论
  • 补充:vivado乘法器IP核简单调用

问题的讨论

在IP核手册中提到pg108-mult-gen.pdf>,两端口的类型必须一致。进行验证后发现AB的数据类型不一致时也能够计算出正确的输出值,是否意味着两端口类型可以不一致进行计算啦?

在这里插入图片描述

验证过程

IP核配置

首先配置两个乘法器IP核:

第一个是有符号的相乘。

在这里插入图片描述

第二个是有无符号与有符号的相乘。

在这里插入图片描述

例化乘法器

变量输入类型:

reg signed [15 : 0] A_sig;
reg        [15 : 0] A_unsig;reg signed [15 : 0] B_sig;		//例化中B始终是有符号类型//输出
wire signed [31 : 0] P_sig;wire 		[31 : 0] P_unsig;
wire signed	[31 : 0] P_sig2;	//用于mult_unsigned_signed IP核

设置初始值:

A_sig = 16'b1101_1101_1101_1101;A_unsig = 16'b1101_1101_1101_1101;B_sig = -50;

例化中前第一个使用的是第一个IP核,第二三个使用的是第二个IP核。

//例化待测设计
mult_signed_signed mult_signed_signedi (.CLK(sys_clk), .A(A_sig),     .B(B_sig),     .P(P_sig)      
);mult_unsigned_signed mult_unsigned_signed1 (.CLK(sys_clk),  .A(A_unsig),      .B(B_sig),      .P(P_unsig)	//将输出赋值给P_unsig      
);mult_unsigned_signed mult_unsigned_signed2 (.CLK(sys_clk),  .A(A_unsig),      .B(B_sig),      .P(P_sig2)   //将输出赋值给P_sig2   
);

仿真代码

`timescale 1ns / 1ps
//
// Module Name: tb_mult
//
module tb_mult();//输入
reg           sys_clk;
reg signed [15 : 0] A_sig;
reg        [15 : 0] A_unsig;
reg signed [15 : 0] B_sig;//输出
wire signed [31 : 0] P_sig;wire 		[31 : 0] P_unsig;
wire signed	[31 : 0] P_sig2;	//用于mult_unsigned_signed IP核
//信号初始化
initial beginsys_clk = 1'b1;A_sig = 16'b1101_1101_1101_1101;A_unsig = 16'b1101_1101_1101_1101;B_sig = -50;
end//生成时钟
always #10 sys_clk = ~sys_clk;initial begin#10forever begin#(100);A_sig = A_sig + 1'b1;B_sig = B_sig + 1'b1;end
endinitial begin#10	forever begin#(100);A_unsig = A_unsig + 1'b1;end
end
//例化待测设计
mult_signed_signed mult_signed_signedi (.CLK(sys_clk), .A(A_sig),     .B(B_sig),     .P(P_sig)      
);mult_unsigned_signed mult_unsigned_signed1 (.CLK(sys_clk),  .A(A_unsig),      .B(B_sig),      .P(P_unsig)      //将输出赋值给P_unsig
);mult_unsigned_signed mult_unsigned_signed2 (.CLK(sys_clk),  .A(A_unsig),      .B(B_sig),      .P(P_sig2)      //将输出赋值给P_sig2
);endmodule

仿真波形分析与结论

波形中的进制Radix均根据是sig还是unsig设置成对应的进制。

可以看出:

有符号(signed)与有符号数(signed)相乘,输出赋值给有符号能得到正确输出。

无符号(unsigned)与有符号数(signed)相乘,输出赋值给有符号能得到正确输出。

无符号(unsigned)与有符号数(signed)相乘,输出赋值给无符号得到错误的输出,实质上将P_unsig的进制设置成signed的显示时则和P_sig2相同,表示两种是补码的关系。

通过试验可以验证无符号(unsigned)与有符号数(signed)相乘的乘法器IP核输出的值赋值给有符号数时能够计算正确。

在这里插入图片描述

补充:vivado乘法器IP核简单调用

vivado乘法器IP核简单调用:https://blog.csdn.net/Master_0_/article/details/123694290

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ElementUI之登陆+注册

一.什么是ElementUI 二.ElementUI完成用户注册登录界面搭建 使用命令npm install element-ui -S,添加Element-UI模块 导依赖 建立登录和注册页面 ​编辑 配置样式 编写登录页面(Login) 编写注册页面(reginter) …

基于Android+OpenCV+CNN+Keras的智能手语数字实时翻译——深度学习算法应用(含Python、ipynb工程源码)+数据集(五)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 数据增强3. 模型构建4. 模型训练及保存5. 模型评估6. 模型测试 系统测试1. 训练准确率2. 测试效果3. 模型应用1)程序下载运行2)应用使用说明3)测试结果 相关其它…

Spring源码相关

总分结构回答,突出关键接口、类、方法名 run -> AbstractApplicationContext.refresh()程序的入口 在IOC中的操作都是基于DefaultListableBeanFactory bd对象保存在map集合中 refresh方法宝包括了整个Spring的执行流程和bean的完整生命…

企业做软文推广的三大错误有哪些?媒介盒子为您解答

软文营销已经成为企业宣传的主要方式,但有很多企业来找媒介盒子咨询,明明花了大量成本来做软文推广,为什么就是没效果呢?小编看了下,发现大部分企业做软文推广效果不明显,基本上犯了三大错误,接…

解决 react 项目启动端口冲突

报错信息: Emitted error event on Server instance at:at emitErrorNT (net.js:1358:8)at processTicksAndRejections (internal/process/task_queues.js:82:21) {code: EADDRINUSE,errno: -4091,syscall: listen,address: 0.0.0.0,port: 8070 }解决方法&#xff…

OpenLayers实战,OpenLayers调用手机陀螺仪方向实现指南针效果

专栏目录: OpenLayers实战进阶专栏目录 前言 本章讲解OpenLayers如何使用手机陀螺仪实现指南针,除了需要调用陀螺仪外,还需要获取手机的实时位置。 通过获取到的实时位置显示箭头图标位置,通过获取陀螺仪水平方向来调整箭头指向。 注意:必须在https请求(带ssl证书)下才…

信创之国产浪潮电脑+统信UOS操作系统体验1:硬件及软件常规功能支持情况介绍

一、引言 由于公司要求支持国产信创,最近办公的笔记本电脑换成了软硬件全国产,由于国产操作系统是在开源linux基础上演进的,在换之前,非常担心操作不方便,周边应用软件少,功能差,内心是比较抗拒…

常见的文件格式

一、C:\fakepath\新建文本文档.txt [object String] 实现方式&#xff1a; <input onchange"test(this.value)" type"file"></input><script>function test(e){console.log(e,Object.prototype.toString.call(e))}</script> 二、…

第77篇:美国APT入侵西北工业大学使用的5款远控后门揭秘

Part1 前言 大家好&#xff0c;我是ABC_123。在几个月前&#xff0c;我反复研读国家计算机病毒应急处理中心的多篇报告及360安全公司发布的各种关于该事件的报道&#xff0c;再结合国外对于美国APT研究报告&#xff0c;花了半个多月的时间复盘了美国APT入侵中国西北工业大学的…

红米note13 秒解锁BL 跳过168 秒解锁BL,红米Redmi Note 13 Pro+ 系列 无需等待168小时,刷入magisk教程 刷机包下载

最近入手了一台红米note13&#xff0c;发现需要等待168小时才能解锁BL&#xff0c;这让我感到非常困扰。不过&#xff0c;经过一番研究&#xff0c;我发现了一个秒解锁BL的方法&#xff0c;无需等待168小时&#xff0c;而且还可以刷入magisk&#xff0c;非常方便。 首先&#x…

[C++ 网络协议] I/O流分离所带来的半关闭问题

1.问题和解决方法 根据所学内容&#xff0c;I/O流分离现如今有如下2种方法&#xff1a; 1.调用进程fork函数&#xff0c;分离出子进程&#xff0c;主进程和子进程分别进行输入流的读和输出流的写。 2.用FILE指针按读模式和写模式将输入流和输出流进行区分。 第一种方法&#…

概率深度学习建模数据不确定性

https://zhuanlan.zhihu.com/p/568912284理解论文 What uncertainties do we need in Bayesian deep learning for computer vision? &#xff08;NeurIPS 2017) [1]中的数据不确定性建模&#xff0c;并给出公式推导。论文[1]指出不确定性uncertainty分为随机不确定性(aleator…

华为云云耀云服务器L实例评测|华为云上安装etcd

文章目录 华为云云耀云服务器L实例评测&#xff5c;华为云上安装etcd一、什么是etcd官方硬件建议 二、华为云主机准备三、etcd安装1. 安装预构建的二进制文件2. 从源代码构建 四、etcd服务注册与发现1. 配置etcd2. 使用systemctl 管理启动etcd服务3. 注册服务4. 发现服务 五、其…

Spring Boot与Spring Security的跨域解决方案

目录 一、什么是跨域问题 二、Spring Boot和Spring Security介绍 三、如何解决Spring Boot与Spring Security的跨域问题 一、什么是跨域问题 跨域问题&#xff08;Cross-Origin Resource Sharing&#xff0c;简称CORS&#xff09;是指在Web开发中&#xff0c;浏览器出于安全…

【C++】C++11——构造、赋值使用条件和生成条件

移动构造和移动赋值生成条件移动构造和移动赋值调用逻辑强制生成默认函数的关键字default禁止生成默认函数的关键字delete 移动构造和移动赋值生成条件 C11中新增的移动构造函数和移动赋值函数的生成条件为&#xff1a; 移动构造函数的生成条件&#xff1a;没有自己实现的移动…

天洑软件再度收获两项国家发明专利授权

近日&#xff0c;南京天洑软件有限公司再度收获行业内两项国家发明专利授权&#xff0c;专利名称为&#xff1a;一种基于组合时序预测的NOx废气浓度预测方法&#xff08;专利号&#xff1a;ZL 2022 1 0071697.6&#xff09;、基于智能补点的船型代理模型构建方法及装置&#xf…

git rebase 修改中间的commit

0. 前言 今天在移植最新版本 kfence 功能的时候&#xff0c;一共需要移植大概40多个 patch&#xff0c;中间有很多patch 存在冲突&#xff0c;需要手动修改后才能合并。当所有的patch 都合并完成进行编译的时候&#xff0c;发现其中一个 patch 手动合并出了个错误。 假如共有…

SPA项目之主页面--Mock.js以及组件通信(总线)的运用

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于VueElementUI的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.Mock.js是什么 二.为什么要使用…

全流量安全分析之服务器非法外连

服务器非法外连监控的重要性在于保护服务器的安全性和防止被黑客利用&#xff0c;以下是几个重要的理由&#xff1a; 1、发现恶意活动&#xff1a;通过监控服务器的外连流量&#xff0c;可以及时发现是否有未经授权或可疑的连接尝试。这可能包括入侵攻击、数据泄露、恶意软件传…

RobotFramework自动化测试框架系列学习----(三)Web自动化原理+实操

1.目的&#xff1a; 模拟一些基本的网页点击跳转、页面登陆退出等 2.需要安装扩展库&#xff1a; pip install robotframework-seleniumlibrary 或pip install robotframework-selenium2library3.元素定位 用xpath和css定位 4.原理 我们采用rf框架中的三层架构去做测试…