数字IC乘法器结构

目录

    • 一、原理分析
    • 二、Xinlinx中的乘法器结构
      • 1.直接相乘
      • 2.移位相加乘法器
      • 3.加法树加法器

在数字IC中乘法器的结构是什么样的呢?接下来我们以两个4bit数的乘法进行举例,假定有两个4bit数据,分别为X=(X3,X2,X1,X0)和Y=(Y3,Y2,Y1,Y0),输出为8bit数据Z。

一、原理分析

乘法结构示意图1如下:

在这里插入图片描述

我们可以发现,整个乘法过程需要进行多次两个数据以及进位的相加,这样的结构很适合利用加法器来实现。我们将其转换为加法器的结构,如下图2所示:

在这里插入图片描述

注:上图中全加器之间相连的部分为低位对高位的进位。

根据图中结构,我么可以发现最多有三级加法(因为一共有四行),而每一行中的每个数据的加法可以并行进行,通过多bit的加法器实现。也就是说,最终需要3个4bit位宽的加法器,如果采用四位加法器实现,则最终的结构图如图3:

在这里插入图片描述

图中采用了三级的四位加法器,第一级加法器的进位输入CI为0,进位输出CO连接至第二级加法器的进位输入CI,他的进位输出连接至第三级的进位输入。图3与图2对应的结果相同,看可以对应着理解。

二、Xinlinx中的乘法器结构

我们知道,Xinlinx的FPGA中函数的实现是通过查找表的形式,那乘法器在其中的结构是怎样的?

1.直接相乘

我们按照如下的verilog代码综合电路:

module multiplication(
    input [3:0] a,
    input [3:0] b,
    output [7:0] sum
    );
assign sum=a*b;
endmodule

得到的综合结果如下图4:

在这里插入图片描述

根据综合结果可以发现,Xinlinx FPGA实际上也是将各行的相加通过查找表的形式实现,之后将查找表输出和进位链的S、DI相连,通过进位链CARRY4得到最终的相加结果。关于进位链CARRY4的介绍以及如何通过LUT和进位链实现加法的原理可以参考之前的文章:

Vivado中的加法器电路结构-CSDN博客

但是本次计算和的LUT与之前计算加法的过程略有不同,主要在于本次的计算和次数更多更复杂,在综合过程中进行了一些优化。

上述这种算法计算速度很快,但是我们也可以发现,这其中使用了较多的LUT,资源消耗较大

2.移位相加乘法器

下面介绍移位相加乘法器,我们将乘法拆解成如下形式:

X 3 X 2 X 1 X 0 ∗ Y 3 Y 2 Y 1 Y 0 = X 3 X 2 X 1 X 0 ∗ Y 0 + X 3 X 2 X 1 X 0 ∗ Y 1 ∗ 2 + X 3 X 2 X 1 X 0 ∗ Y 2 ∗ 4 + X 3 X 2 X 1 X 0 ∗ Y 3 ∗ 8 X_3X_2X_1X_0*Y_3Y_2Y_1Y_0=X_3X_2X_1X_0*Y0+X_3X_2X_1X_0*Y1*2+\\X_3X_2X_1X_0*Y2*4+X_3X_2X_1X_0*Y3*8 X3X2X1X0Y3Y2Y1Y0=X3X2X1X0Y0+X3X2X1X0Y12+X3X2X1X0Y24+X3X2X1X0Y38

则对应的verilog代码为:

module multiplication(
    input [3:0] a,
    input [3:0] b,
    output [7:0] sum
    );

reg [7:0] sum=0;
integer i;
always@(*)
begin
   for(i=1;i<=4;i=i+1)
   begin
       sum=sum+(a[i]==1)?b<<(i-1):0;
   end
end

endmodule

RTL电路结构如下:

在这里插入图片描述

综合结果为:

在这里插入图片描述

可以很明显的发现,使用的资源减少了。这种结构的优点就是占用资源少,但是速度比较慢,一个结果的输出可能需要多个周期,主要在低速信号处理中。

3.加法树加法器

加法数加法器的原理就是将乘法拆分为多个并行的步骤,最后将各部分的结果相加,直白的说就是将移位相加乘法器改成并行结果,之后各部分积两两相加即可得到最终结果。

verilog代码如下:

module multiplication(
    input [3:0] a,
    input [3:0] b,
    output [7:0] sum
    );

reg [3:0]tem0;
reg [4:0]tem1;
reg [5:0]tem2;
reg [6:0]tem3;

wire [7:0]sum1;
wire [7:0]sum2;
always@(*)
begin
   tem0<=(b[0]==1)?a:0;
   tem1<=(b[1]==1)?a<<1:0;
   tem2<=(b[2]==1)?a<<2:0;
   tem3<=(b[3]==1)?a<<3:0;
end

assign sum1=tem0+tem1;
assign sum2=tem2+tem3;
assign sum=sum1+sum2;

endmodule

RTL电路图如下:

在这里插入图片描述

综合结果如下:

在这里插入图片描述

这样的结构相比移位相加乘法器的计算速度要提升不少,但是资源消耗量和直接采用乘法相近。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ti雷达常用工具

Ti雷达常用工具 名称网站功能雷达开箱界面mmWave Demo Visualizer (ti.com)显示距离谱、RD谱图雷达参数估计mmWaveSensingEstimator根据性能设计估计参数雷达项目资料Embedded Software (ti.com)Ti雷达示例及说明书官方论坛Sensors forum - Sensors - TI E2E support forumsTi…

【复试分数线】四电四邮历年分数线汇总(第一弹)

24年考研国家线预计3月中旬公布&#xff0c;接下来各大院校就会公布自己的复试分数线。这次会为大家整理四电四邮的整理了近三年各院校的复试分数线作为参考&#xff0c;大家可以参考&#xff01; 大多数院校采取的是1.2:1差额的形式复试。举个例子&#xff0c;比如学校今年拟…

人工智能|推荐系统——工业界的推荐系统之涨指标

一、推荐系统的评价指标 涨指标的方法有哪些? 二、涨指标的方法:召回 2.1 改进双塔模型 2.2 Item-to-Item (I2I) 2.3 类似I2I 的模型

三.搜索与图论(未完结)

DFS(深搜) 之前写过三篇关于dfs的 练习总结: 基础算法--递归搜索DFS练习总结(上)-CSDN博客 基础算法--递归搜索DFS练习总结(中)-CSDN博客 基础算法--递归搜索DFS练习总结(下)-CSDN博客 以下题目均为 补充练习: P1460 [USACO2.1] 健康的荷斯坦奶牛 Healthy Holsteins …

使用Python将数据表中的浮点数据转换为整数:详细教程与案例分析

目录 一、引言 二、环境准备 三、读取数据表 四、浮点数据转换为整数 五、写入数据表 六、案例分析 步骤一&#xff1a;读取数据表 步骤二&#xff1a;浮点数据转换为整数 步骤三&#xff1a;写入新的数据表 七、注意事项 八、总结 在数据处理和分析的过程中&#x…

58. 【Android教程】音频录制:MediaRecord

在第 57 节我们使用 MediaPlayer 实现了一个 mp3 播放器&#xff0c;除了播放 Android 还提供了 MediaRecorder 用于录音。Android 设备基本都会有一个麦克风&#xff0c;通过 MediaRecorder 可以打开麦克风进行语音采集&#xff0c;这一节我们就来学习如何在 Android 系统上实…

将ESP工作为AP路由模式并当成服务器

将ESP8266模块通过usb转串口接入电脑 ATCWMODE3 //1.配置成双模ATCIPMUX1 //2.使能多链接ATCIPSERVER1 //3.建立TCPServerATCIPSEND0,4 //4.发送4个字节在链接0通道上 >ATCIPCLOSE0 //5.断开连接通过wifi找到安信可的wifi信号并连接 连接后查看自己的ip地址变为192.168.4.…

太牛逼了,用ComfyUI中一键完成电商模特换装换背景!商业级教程附上!

&#x1f310; 大背景&#xff1a;电商时代的画卷正在翻页 在全球电子商务风起云涌的今天&#xff0c;市场竞争愈发激烈。商家们始终在寻求提高效率、减少成本和增强用户体验的新方法。然而&#xff0c;一个关键问题一直困扰着电商行业——**如何高效且经济地展示商品&#xff…

python如何整体缩进

python自带编辑器的缩进和取消缩进快捷键&#xff1a; 整体缩进 Ctrl【 整体取消缩进 Ctrl】 pycharm编辑器的缩进和取消缩进快捷键&#xff1a; 整体缩进&#xff1a; tab 整体取消缩进&#xff1a; tabshift

ADOP带你了解:温度如何影响您的室外以太网电缆?

温度&#xff1a;室外以太网电缆的隐形敌人 在构建和维护室外以太网网络时&#xff0c;我们通常会考虑到许多物理因素&#xff0c;如电缆的长度、宽带容量和连接质量。然而&#xff0c;有一个不那么显眼但同样重要的因素常常被忽视&#xff0c;那就是温度。温度的波动不仅影响…

力扣-21. 合并两个有序链表-js实现

/*** Definition for singly-linked list.* function ListNode(val, next) {* this.val (valundefined ? 0 : val)* this.next (nextundefined ? null : next)* }*/ /*** param {ListNode} list1* param {ListNode} list2* return {ListNode}*/ const mergeTwoList…

数据库索引回表困难?揭秘PolarDB存储引擎优化技术

引言 数据库系统为了高效地存储、检索和维护数据&#xff0c;采用了多种不同的数据组织结构。不同的组织结构有其特定的用途和优化点&#xff0c;比如提高查询速度、优化写入性能、减少存储空间等。常见的数据库记录组织结构有&#xff1a; B-Tree B-Tree是一种平衡的多路搜索…

【MySQL 数据宝典】【索引原理】- 007 索引优化示例

一、单表优化 1.1 数据准备 下面是一张用户通讯表的表结构信息,这张表来源于真实企业的实际项目中,有接近500万条数据. CREATE TABLE user_contacts (id INT(11) NOT NULL AUTO_INCREMENT,user_id INT(11) DEFAULT NULL COMMENT 用户标识,mobile VARCHAR(50) DEFAULT NULL C…

QT-小项目:连接MY SQL数据库实现登录(下一章实现登录注册账号和忘记密码功能)

一、环境准备 1、下载MYSQL 64位&#xff0c;安装完成&#xff0c;制作简易数据库教程如下&#xff1a; MY SQL安装 2、QT 编译器使用 二、实现工程目录&#xff08;基于上一章基础上&#xff09; 三、源程序增加内容如下&#xff1a; login.cpp 增加头文件&#xff1a; #in…

python代码自动生成器原理 python 生成器原理

python生成器原理剖析 函数的调用满足“后进先出”的原则&#xff0c;也就是说&#xff0c;最后被调用的函数应该第一个返回&#xff0c;函数的递归调用就是一个经典的例子。显然&#xff0c;内存中以“后进先出”"方式处理数据的栈段是最适合用于实现函数调用的载体&…

架空光缆用什么型号

架空光缆是什么意思 , 架空光缆用什么型号的 GYTC8A , 架空光缆型号是啥 8字形光缆 产品描述 Description GYTC8A光缆的结构是将250m光纤套入高模量材料制成的松套管中&#xff0c;松套管内填充防水化合物。缆芯的中心是一根金属加强芯&#xff0c;松套管(和填充绳 )围绕中心…

Davinci工程WrapNv模块讲解

配置讲解 WrapNv模块里面有两个东西&#xff0c;WrapNvGeneral和WrapNvMemoryLayout。 WrapNvGeneral里面配置的就是这个E方的基地址 WrapNvMemoryLayout里面就是分几个块来存储&#xff0c;每个块有自己的数据。 再里面一层&#xff0c;有各自的长度和默认值。我们可以在后面…

常见C语言基础说明二:位运算问题

一. 简介 前面一篇文章学习了 常见的 C语言基础题&#xff0c;文章如下&#xff1a; 常见C语言基础题说明一-CSDN博客 本文继续上一篇C语言基础题的学习。 二. C语言中 -> 位运算问题 1. 数据在计算机中的存储方式 当前的计算机系统使用的基本上是二进制系统&#…

Linux环境Redis部署

Redis部署 Redis是一个高性能的开源键值存储系统&#xff0c;它主要基于内存操作&#xff0c;但也支持数据的持久化。与其他数据库相比&#xff0c;Redis的主要优势在于它的高性能、丰富的数据结构和原生的持久化能力。Redis不仅提供了类似的功能&#xff0c;还增加了持久化和…

命令行方式将mysql数据库迁移到达梦数据库(全步骤)

因项目需求&#xff0c;需要将mysql数据库转换为国产达梦数据库&#xff0c;但由于安全问题&#xff0c;正式环境只能用命令行方式连接&#xff0c;下列是操作全步骤 目录 一、操作逻辑二、操作步骤1、本地安装达梦相关工具2、将服务器mysql导出到本地a) 服务器命令行导出mysql…