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

数字IC前端学习笔记:数字乘法器的优化设计(阵列乘法器)

相关阅读 

数字IC前端icon-default.png?t=N7T8https://blog.csdn.net/weixin_45791458/category_12173698.html?spm=1001.2014.3001.5482


        数字信号处理作为微处理器的核心部件,是决定着总体处理器性能的因素之一,而数字乘法器是最常见的一种数字信号处理电路。通常情况下,乘法器是数字系统中制约运算速度的关键路径。本系列将从基本的乘法器入手,再逐渐深入,探究了各种优化乘法器在体系结构,乘法算法等方面的优化策略。

        作为最基本的组合逻辑乘法器,阵列乘法器(Array multiplier)虽然已不太常用,但在某些对性能要求不高的应用场景下,还能见到它的使用。

        为了简便起见,本文考虑两个四位二进制数A和B相乘,其中A为被乘数,B为乘数,先产生部分积,然后使用加法器累加这些部分积,总体规划如表1所示。从乘数B的最低位B0开始,依次与被乘数A的各位A0、A1、A2、A3相与(乘)形成4组16个部分积项目,分组是根据乘数B的位而言,如所有有B0项目的是第0组部分积。然后每一组根据分组的不同,移动到乘数B每一位对应的位置,最后将部分积累加。注意,在部分积的累加过程中,可能会出现来自低位的进位,此时需要使用全加器,否则使用半加器即可。

表1 无符号4位二进制乘法规划

A3

B3

A2

B2

A1

B1

A0

B0

被乘数

乘数

资源配置

A3B1

C12

A3B0

A2B1

C11

A2B0

A1B1

C10

A1B0

A0B1

A0B0

部分积0

部分积1

低位进位

第1行加法器

C13

A3B2

C22

S13

A2B2

C21

S12

A1B2

C20

S11

A0B2

S10

S00

第1行和

部分积2

低位进位

第2行乘法器

C23

A3B3

C32

S23

A2B3

C31

S22

A1B3

C30

S21

A0B3

S20

第2行和

部分积3

低位进位

第3行乘法器

C33

S33

S32

S31

S30

第3行和

C33

S33

S32

S31

S30

S20

S10

S00

最终结果

27

26

25

24

23

22

21

20

权重

        4位乘法器的组合逻辑结构如图1所示,可以看出这种结构十分规则,大多是由加法器和与门构成的基本单元复制得到,但由红线和紫线描绘的路径可以看出其中存在较长的加法器链(即可能的关键路径),换个角度,结构中使用了3组行波进位加法器(Ripple Carry Adder)或者说串行进位加法器(Serial Carry Adder)、进位传播加法器(Carry Propagate Adder),这种乘法器的优点在于可复用性和可配置性强,非常利于集成电路制造,但缺点是进位操作的关键路径较长,控制组合电路输入输出的时钟周期需要与电路中的最长路径相适应。为了提高性能,可以在这种结构中植入流水线来获得更大的数据吞吐量,这是对组合逻辑优化的一个常见方法。具体的Verilog代码实现见附录,Modelsim软件仿真截图如图2所示。使用Synopsis的综合工具Design Compiler综合的结果如图3所示,综合使用了0.13μm工艺库。 

图1 基本单元构成的阵列乘法器

图2 阵列乘法器仿真结果

图3 阵列乘法器综合结果

        在Design Compiler中使用report_timing命令,可以得到关键路径的延迟,如图4所示,使用report_area命令,报告所设计电路的面积占用情况,如图5所示

图4 关键路径报告 

图5 面积报告 

        阵列乘法器的Verilog代码如下所示。

module Array_multiplier(input [3:0]A,B,output[7:0]Sum);wire [3:0]partial_product[3:0];//产生部分积assign partial_product[0]=B[0]?A:0;assign partial_product[1]=B[1]?A:0;assign partial_product[2]=B[2]?A:0;assign partial_product[3]=B[3]?A:0;//中间进位wire C10,C11,C12,C13;wire C20,C21,C22,C23;wire C30,C31,C32,C33;//中间和wire S11,S12,S13;wire S21,S22,S23;//第一行加法器assign Sum[0]=partial_product[0][0];Adder_half Adder_half_0(partial_product[0][1],partial_product[1]        [0],Sum[1],C10);Adder Adder_0(partial_product[0][2],partial_product[1][1],C10,S11,C11);Adder Adder_1(partial_product[0][3],partial_product[1][2],C11,S12,C12);Adder_half Adder_half_1(partial_product[1][3],C12,S13,C13);//第二行乘法器Adder_half Adder_half_2(S11,partial_product[2][0],Sum[2],C20);Adder Adder_2(S12,partial_product[2][1],C20,S21,C21);Adder Adder_3(S13,partial_product[2][2],C21,S22,C22);Adder Adder_4(C13,partial_product[2][3],C22,S23,C23);//第三行加法器Adder_half Adder_half_3(S21,partial_product[3][0],Sum[3],C30);Adder Adder_5(S22,partial_product[3][1],C30,Sum[4],C31);Adder Adder_6(S23,partial_product[3][2],C31,Sum[5],C32);Adder Adder_7(C23,partial_product[3][3],C32,Sum[6],Sum[7]);
Endmodulemodule Adder (input  Mult1,input  Mult2,input  I_carry,output Res,output Carry
);assign Res = Mult1 ^ Mult2 ^ I_carry;assign Carry = (Mult1 & Mult2) | ((Mult1 ^ Mult2) & I_carry);endmodulemodule Adder_half (input  Mult1,input  Mult2,output Res,output Carry
);assign Res = Mult1 ^ Mult2;assign Carry = Mult1 & Mult2;
endmodule

相关文章:

数字IC前端学习笔记:数字乘法器的优化设计(阵列乘法器)

相关阅读 数字IC前端https://blog.csdn.net/weixin_45791458/category_12173698.html?spm1001.2014.3001.5482 数字信号处理作为微处理器的核心部件,是决定着总体处理器性能的因素之一,而数字乘法器是最常见的一种数字信号处理电路。通常情况下&#…...

批量删除wordpress文章修订版本/自动草稿残留数据(3种方法)及四种方法禁用WordPress文章历史修订/自动保存/自动草稿功能

目录 1、批量删除wordpress文章修订版本/自动草稿残留数据(3种方法) 方法一:SQL命令批量删除 命令: 方法二:利用PHP代码来删除 方法三:利用数据库清理优化插件 WP Clean Up 或 WP Cleaner 批量删除 2…...

HTTP初识,fiddler的使用,URL各部分介绍,QueryString

目录 一、什么是HTTP 二、抓包工具 三、请求的首行 URL 四、URL的各部分详细介绍 一、什么是HTTP 现在网页上,我们常见的是https,但是在二十年前是以http为主,这个协议也叫超文本传输协议,文本->字符串,“超文本”->图片…...

计算机毕业设计 基于SpringBoot的图书馆管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...

第三章:最新版零基础学习 PYTHON 教程(第十二节 - Python 运算符—Python 中的运算符函数 - 套装1)

Python 在“operator”模块下预定义了许多数学、逻辑、关系、位等运算的函数。本文介绍了一些基本功能。 1. add(a, b):- 该函数返回给定参数的加法。 操作-a +b。 2. sub(a, b):- 该函数返回给定参数的差值。 操作-a -b。 3. mul(a, b):- 该函数返回给定参数的乘积。 操…...

AAD基础知识(identity/token/PRT)

简介 AAD(Azure Active Directory/Azure AD)是微软基于云身份验证和访问控制的解决方案,通过SSO登录其他o365应用(word/outlook/teams…) 微软在2023年7月把AAD重命名为Microsoft Entra ID,官网:https://www.microsoft.com/zh-cn/security/b…...

基于SSM的视频点播系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...

React 知识点总结

本篇文章是我自己总结已经写过的react知识点,大框架已生成,知识持续更新中。仅供参考 生命周期 React 生命周期 组件基础 react中受控组件与非受控组件 React Portals 理解React页面渲染原理,如何优化React性能? 学习篇之R…...

ALSA project the C library refrerenc (ALSA工程 C库参考说明)

作者: Jaroslav Kysela perexperex.cz Abramo Bagnara abramoalsa-project.org Takashi Iwai tiwaisuse.de Frank van de Pol fvdpolcoil.demon.nl前言: 高级linux音频架构(ALSA)来自内核API和库的API.这个篇文章描述了应用层库API和内核层API对应是怎么的interfaces.API用法: …...

【Maven基础篇-黑马程序员】Maven项目管理从基础到高级,一次搞定!

文章目录 前言Maven简介Maven是什么Maven的作用 Maven的下载与安装Maven基础概念仓库坐标仓库配置全局setting与用户setting区别 第一个Maven程序(手工制作)第一个Maven程序(IDEA生成)使用模版(骨架)创建Ma…...

MySQL进阶 —— 超详细操作演示!!!(下)

MySQL进阶 —— 超详细操作演示!!!(下) 五、锁5.1 概述5.2 全局锁5.3 表级锁5.4 行级锁 六、InnoDB 引擎6.1 逻辑存储结构6.2 架构6.3 事务原理6.4 MVCC 七、MySQL 管理7.1 系统数据库7.2 常用工具 MySQL— 基础语法大…...

SVM(上):如何用一根棍子将蓝红两色球分开?

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据开发、数据分析等。 🐴欢迎小伙伴们点赞👍🏻、收藏⭐️、…...

libevent源码学习笔记

libevent源码学习笔记 libevent安装libevent源码解析(1)事件对象(2)事件操作(3)事件循环(4)事件处理 常用指令问题记录问题一:长连接的管理问题二:连接关闭问…...

C++ opencv设置视频的捕获方式为 MJPG设置失败

我有一款4k摄像头,在设置分辨率为4k的时候总是出现帧率不够的情况, 使用命令查看 v4l2-ctl --device/dev/video0 --list-formats-ext发现 v4l2-ctl --device/dev/video0 --list-formats-ext ioctl: VIDIOC_ENUM_FMTType: Video Capture[0]: MJPG (Moti…...

计算机网络两位伟人

克劳德艾尔伍德香农 克劳德艾尔伍德香农(Claude Elwood Shannon)是一位美国数学家、电子工程师和计算机科学家,被誉为“信息论之父”。他于1916年生于密歇根州,于2001年去世。以下是一些关于他的详细介绍: 信息论的奠…...

机器学习 不均衡数据采样方法:imblearn 库的使用

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。 🍎个人主页:小嗷犬的个人主页 🍊个人网站:小嗷犬的技术小站 🥭个人信条:为天地立心&…...

MySQL系统与内建函数

在游戏开发、特别是像《三国志》这样的大型策略游戏中,数据分析是不可或缺的。从玩家行为到游戏内的战役结果,都需要通过高效的数据分析来优化游戏体验。MySQL的系统和内建函数为这样的分析提供了强大的工具。 本文将详细介绍MySQL中常用的系统与内建函数,并通过《三国志》…...

STM32CubeMX学习笔记-USB接口使用(CDC虚拟串口)

STM32CubeMX学习笔记-USB接口使用(CDC虚拟串口) 一、USB简介二、新建工程1. 打开 STM32CubeMX 软件,点击“新建工程”2. 选择 MCU 和封装3. 配置时钟4. 配置调试模式 三、USB3.1 参数配置3.3 配置时钟3.4 USB Device 四、生成代码五、查看端口…...

腾讯云 Cloud Studio 实战训练营结营活动获奖公示

点击链接了解详情 “腾讯云 Cloud Studio 实战训练营” 是由腾讯云联合 CSDN 推出的系列开发者技术实践活动,通过技术分享直播、动手实验项目、优秀代码评选、有奖征文活动等,让广大开发者沉浸式体验腾讯云开发者工具 Cloud Studio 的同时,实…...

使用晶体管做布尔逻辑和逻辑门

目录 二进制,三进制,五进制 true,false表示0,1 早期计算机采用进制 布尔逻辑 三个基本操作:NOT,AND,OR 基础“真值表” NOT 如何实现? AND如何实现? OR如何实现? 图标表示…...

APK Installer完整指南:在Windows上快速安装Android应用的终极方案

APK Installer完整指南:在Windows上快速安装Android应用的终极方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想在Windows电脑上轻松安装An…...

从 ROS 到 Cognitive OS、Agentic OS:机器人操作系统与具身智能新时代

一、先搞懂:我们常说的机器人操作系统,到底是什么?在机器人领域,“操作系统” 从来不是单一概念,而是一套功能分层、各司其职的完整软件体系。不同层级定位不同、职责分明,实际项目中可组合部署、按需协作&…...

关于python中打开文件,以及可能错误,介绍

**该mode是基于open()函数里参数的调整** 错误代码 f r"C:\dj\dw1.txt" b f.read(c) print(b) f.close() 正确代码 f open(r"C:\dj\dw1.txt") s f.read() print(s) f.close()open()函数需要后面的打开路径,r/R表示该代码的的原意 mode…...

动态加载数据库微信支付配置

在Java后端应用中,动态加载存储在数据库中的微信支付配置,是实现多商户、多环境支付或配置热更新的核心需求。这避免了将API密钥、商户号等敏感信息硬编码在配置文件或代码中,提升了系统的灵活性与安全性。核心实现思路是:构建一个…...

矩阵本地化获客技术落地:同城流量精准匹配与合规运营方案

前言同城本地化流量是短视频生态中转化率最高、精准度最强的流量赛道,广泛适配本地生活服务、实体门店、同城咨询、区域服务商等各类业态。相比于泛全域流量,同城用户具备明确的地域消费属性、就近服务需求,成交意向更强烈,获客落…...

SLEICL框架:用“魔法书”提示工程提升小模型上下文学习性能

1. 项目概述:用“魔法书”解锁小模型的大潜能 如果你最近在折腾大语言模型,尤其是那些参数规模在7B、13B左右的“小模型”,可能会发现一个头疼的问题:想让它们通过上下文学习(In-context Learning, ICL)的方…...

算法创新驱动AI效率革命:算力增强型进步如何超越摩尔定律

1. 项目概述:算法进步如何重塑计算机视觉的效率版图如果你在2012年告诉一个计算机视觉研究员,十年后我们能在ImageNet上训练出准确率超过90%的模型,他可能会觉得这需要天文数字般的计算资源。但现实是,我们不仅做到了,…...

Arm CoreSight TPIU-M调试架构与寄存器配置详解

1. Arm CoreSight TPIU-M架构概述 在嵌入式系统调试领域,Arm CoreSight架构提供了一套完整的调试与跟踪解决方案。作为该架构中的关键组件,Trace Port Interface Unit-Modified(TPIU-M)承担着将处理器内部跟踪数据输出到外部调试工…...

从零学会基础算法前缀和差分:数组区间求和离散化基础

首先祝大家劳动节快乐!开学两个月来学的东西不多,主要掌握了两块内容:前缀和/差分/离散化 和 数学基础。本文是第一篇,重点整理前缀和相关内容。 编程语言:C 排版助手:AI一、数组的三个简化技巧 1. 前缀和 …...

如何让经典DirectX游戏在现代Windows上完美运行:DDrawCompat终极兼容解决方案

如何让经典DirectX游戏在现代Windows上完美运行:DDrawCompat终极兼容解决方案 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.co…...