《数字逻辑设计与计算机组成》一3.7 设计实例

简介: 本节书摘来自华章出版社《数字逻辑设计与计算机组成》一 书中的第3章,第3.7节,作者:[美]尼克罗斯·法拉菲,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.7 设计实例

作为之前讨论的实现整数加法和减法操作组合电路的补充,以下小节将介绍组合整数乘法和除法电路。乘法的基本操作为加法,除法的基本操作为减法。然而,一些乘法和除法算法会同时用到加法和减法。同时使用加法和减法操作的2的补码乘法器将在第6章进行介绍。

3.7.1 乘法器

图3-24展示了4位无符号乘数B = b3b2b1b0和4位无符号被乘数A = a3a2a1a0的乘法过程。乘法过程的每一步产生一个加数。在图中,(1001)2、(1001)2、(0000)2和(1001)2是产生的4个加数,分别由b0、b1、b2和b3和A相与产生的。每一个新产生的加数会左移k - 1次,k代表乘法的步数。如图所示,4个加数在相加产生最终的乘积P之前都被分别按顺序左移0、1、2和3位。
例如图3-25所示的n = 4乘法过程,设计组合n位乘法器电路的一种方法是用n - 1个n位加法器和n个n位按位与模块组成。这个设计很直观且是基于图3-24所示的步骤进行的。但是这种设计有较长的传输延迟因为除了前两个加数,其他的加数每次都只加一个,这样会造成很长的从输入到输出的信号路径。
image

或者我们可以使用全加器片来对加数进行加法操作,每一次操作一列。当全加器连接在一起时,就产生了一种叫作阵列乘法器的二维结构。图3-26展示了一个用6列全加器实现的4位阵列乘法器。加数的和值每一次都能够确定一列,有点类似于多个加数的手工加法。在图中,一个加数用其独立的位,如aibj表示,这里ai表示被乘数A的第i位,bj表示乘数B的第j位。乘积的每一位都是一位由全加器链在列中产生的最终和。在每一列中,没有用到的输入将连接到0上。最后一位乘积位p7等于全加器列的进位输出位。

image

在图中,最后一行的全加器组成了一个CPA,CPA可以用CLA加法器代替从而将乘法器的总传输延迟降到最小。

image

3.7.2 除法器

图3-27展示了用一个4位无符号被除数(分子)N = n3n2n1n0 = 4’b1011除以4位除数(分母)D = 4’b0010产生4位商Q = q3q2q1q0 = 4’b0101和4位余数R = 4’b0001的除法过程。N被从左填充n - 1个0,在这个例子中为3个0;即最开始的被除数为{000, N},这里的{}用于表明为串联。在每一个步骤中,除数D将被被除数较高的n位减去,在除法的第k步中定义为Ak。如果D≤Ak,对应的商位为1;否则商位为0。
图中所示的除法步骤也被称为恢复除法算法,因为每一次当Ak < D时(例如,A3 = 4’b0001 < D = 4’b0010),Ak - D < 0,这样Ak,不是余数Rk = Ak - D用于下一步除法的开始,即为“恢复”。在这个例子中, Ak较低的n - 1位与N的下一位连接组成下一个n位被除数Ak - 1。需要特别指出的是,对于n = 4,如图所示的{000, N}除以D的除法步骤和产生4位Q和4位R的步骤如下所示:
1)R3 = A3 - D (4’b0001 - 4’b0010 = 4’1111)产生R3 = - 1,且借位输出为1(例如bo3 = 1)、q3 = 0。
2)R2 = A2 - D (4’b0010 - 4’b0010)产生R2 = 0,且bo2 = 0、q2 = 1。
3)R1 = A1 - D (4’b0001 - 4’b0010)产生R1 = - 1,且bo1 = 1、q1 = 0。
4)R0 = A0 - D (4’b0011 - 4’b0010)产生R0 = 1,且bo0 = 0、q0 = 1。最终的余数R0 = 4’b0001。

image

图3-28展示了4位位并行恢复除法的数据通路。在除法的每一步中都需要用到一个减法器、一个非门和一个MUX。减法器计算Rk = Ak - D并产生bok。非门产生商位,例如qk = bok。MUX用于用qk位选择Ak或者Rk。公式(3-16)估计了每一步除法的传输延迟。

Δdivision - step=Δsubtractor + ΔMUX(3-16)

阵列除法器,类似于一个阵列乘法器,可以用一个1位除法片阵列来组成。每一片将完成一个组合减法器MUX的功能。组合起来的功能可以翻译为最小SOP或者POS表达式的真值表(更多细节参照练习部分)。
对于很大的n,一个算术功能设计为一个组合电路需要相当多的逻辑门来实现。当算法是重复的并且可以替代地重复实施时更是如此,例如乘法器和除法器。例如,除了用4个减法器、4个MUX和4个非门来实现如图3-28所示的4位恢复除法器,我们也可以用一个减法器、一个MUX、一个非门和一系列的寄存器来产生4步除法中的4个商值。每一步除法的结果都存在寄存器中。然而,一个硬件模块重复使用需要一些额外的硬件来控制每一步的时序,且会稍微增加获得最后结果的总时间。这个设计将在第6章中进行讨论。

image

相关文章
|
缓存 移动开发 JavaScript
跨桌面端Web容器演进
随着客户端技术的逐渐发展,Web容器已经深入客户端,为客户端构建了丰富多彩的页面和交互体验,成为客户端的一个不可或缺的重要组成部分。在千牛客户端上,Web容器不仅承载了千牛的开放容器(经历了H5插件到千牛小程序的变革),而且一些核心功能,比如聊天窗口,消息中心,也都是由Web容器承载的。
1638 0
跨桌面端Web容器演进
|
6月前
|
机器学习/深度学习 存储 自然语言处理
蚂蚁集团 Ling-2.5-1T 开源:万亿参数,重新定义"又快又强"
Ling-2.5-1T是蚂蚁集团inclusionAI推出的开源即时大模型(MIT协议),以“效率×效果”为核心:万亿参数、63B激活,首创混合线性注意力架构,支持百万token上下文;推理吞吐大幅提升,AIME任务仅需1/3 token即达前沿思考模型水平。ModelScope可下载。
1157 4
蚂蚁集团 Ling-2.5-1T 开源:万亿参数,重新定义"又快又强"
|
人工智能 负载均衡 数据可视化
10分钟上手全球开源模型冠军 Qwen3
阿里通义千问Qwen3在最新全球AI基准测试中智能水平位列全球前五,开源第一,且成本优势显著,推理成本仅为DeepSeek-R1的1/3、Claude 3.7的1/20。Qwen3支持119种语言,具备强大的代码和数学能力,同时提供思考与非思考两种模式无缝切换,适合复杂与简单任务。通过阿里云百炼平台,用户可在10分钟内快速搭建Qwen3模型服务,结合Cherry Studio客户端实现便捷交互。本文详细介绍了Qwen3的部署、体验及工具调用能力,帮助用户轻松上手。
2727 79
|
6月前
|
人工智能 数据可视化 机器人
2026年零技术OpenClaw(Clawdbot)安装集成QQ机器人保姆级教程
2026年,OpenClaw(原Clawdbot,曾用名Moltbot)凭借“开源可控、插件化拓展、自然语言驱动”的核心优势,已成为AI自动化办公与社交场景交互的核心工具,尤其在QQ生态中,能够实现QQ消息自动回复、指令解析执行、多场景任务自动化、群聊/频道管理等功能,被广大个人用户与轻量团队称为“高效AI交互助手”。相较于传统QQ机器人,OpenClaw无需本地部署、无需手动编写复杂代码,依托阿里云轻量应用服务器的一键部署能力,可实现7×24小时稳定运行,同时支持对接阿里云百炼大模型,解锁更强的自然语言理解与任务执行能力,大幅降低QQ机器人的部署与使用门槛。
1932 1
|
人工智能 JavaScript 数据安全/隐私保护
鸿蒙开发难题多到崩溃?然而 10 亿终端暗藏财富密码-卓伊凡
鸿蒙开发难题多到崩溃?然而 10 亿终端暗藏财富密码-卓伊凡
377 5
鸿蒙开发难题多到崩溃?然而 10 亿终端暗藏财富密码-卓伊凡
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
2688 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
NoSQL 关系型数据库 Linux
ERPNext 搭建教程:Linux 一键部署与维护
ERPNext 是一款开源免费的企业资源计划系统,适用于中小企业信息化管理。基于 Python 和 Frappe 框架开发,支持财务、销售、人力、库存等模块,具备高度可定制性。本文介绍如何通过 Websoft9 在 Linux 下快速部署 ERPNext,并提供环境配置、系统维护等实用建议,适合开发者和企业用户快速上手。
2418 7
ERPNext 搭建教程:Linux 一键部署与维护
|
Prometheus 监控 Cloud Native
Spring Boot 可视化监控
本文介绍了如何通过Spring Actuator、Micrometer、Prometheus和Grafana为Spring Boot应用程序添加监控功能。首先创建了一个Spring Boot应用,并配置了Spring Actuator以暴露健康状态和指标接口。接着,利用Micrometer收集应用性能数据,并通过Prometheus抓取这些数据进行存储。最后,使用Grafana将Prometheus中的数据可视化,展示在精美的仪表板上。整个过程简单易行,为Spring Boot应用提供了基本的监控能力,同时也为后续扩展更详细的监控指标奠定了基础。
1928 2
|
弹性计算 JSON 运维
刚好够用的授权:如何在云上实施最小权限原则
本章探讨如何在云上实施最小权限原则,确保企业安全与效率的平衡。通过阿里云RAM管理身份和权限,帮助企业识别和解决过度授权、闲置账户及高危权限问题。主要内容包括:最小权限原则的概述与挑战;云上最小权限的最佳实践路径,如初始规划、业务支撑及权限收敛;使用AccessAnalyzer识别过度授权和外部访问风险。通过这些工具和服务,企业可以有效提升安全性,减少潜在威胁。
|
计算机视觉 Python
FFMPEG学习笔记(一): 提取视频的纯音频及无声视频
本文介绍了如何使用FFmpeg工具从视频中提取纯音频和无声视频。提供了具体的命令行操作,例如使用`ffmpeg -i input.mp4 -vn -c:a libmp3lame output.mp3`来提取音频,以及`ffmpeg -i input.mp4 -c:v copy -an output.mp4`来提取无声视频。此外,还包含了一个Python脚本,用于批量处理视频文件,自动提取音频和生成无声视频。
1985 1