《数字逻辑设计与计算机组成》一 3.4 减法器

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

3.4 减法器

减法器用图3-9所示[2]的一种方法生成两个4位输入X和Y的差值D。在方法a中,每次xi < yi时,如果xi + 1 > 0,需要向xi + 1(下一高位)借1,然后在xi上加2。如果xi + 1 = 0,那么当xi + 2 > 0时,就向xi + 2借1,并把2加到xi + 1上。如果xi + 2 = 0,那么就向xi + 3借1,把2加到xi + 2上,等等。这个过程递归一直到xi≥yi,且di = xi - yi为0或1。在图中,x0 = 0小于y0 = 1;这样,需要从x1上借1。然而,因为x1 = 0,需要从x2借1。剩下的比特位也将进行相同的处理。此例不会产生借位输出,因为X = 12 = (1100)2大于Y = 3 = (0011)2,这样D = 12 - 3 = 9 = (1001)2。

image

在方法b中,每一次xi < yi时,都会把抵扣1加到yi + 1(下一高位)上,然后在xi上加2生成di = xi - yi为0或者1。在例子中,x0 = 0小于y0 = 1;这样,需要在y1上加上1,让y1 = 2且2加到x0上,使得x0 = 2。这样d0 = x0 - y0为1(2 - 1 = 1)。下一步,x1 = 0,小于y1 = 2;这样,再次需要把1加到y2上,使其为1,且2加到x1上,使其为2。结果为d1 =
2 - 2 = 0。剩下的比特位也按照相同的方法最终得到D = 9 = (1001)2。
n位的借位传播减法器(BPS)类似于n位的CPA,用n个1位减法器片组合而成。每一片都从X输入一位数,从Y输入一位数,然后一个借位/抵扣位(0或1)和输出一位差值和下一借位/抵扣位,如下第i位所示。n位BSP如图3-10所示。
image

对于第i位的借位和抵扣位加法器算法将在后续讨论。除了圆括号用于强制优先,所以展示了方法a的借位法和方法b的抵扣法概念,差值为d[i]的算式在两种算法中都是一样的。
减法算法
方法a:借位算法(圆括号展示如何进行借位)
image

image

表3-1和公式(3-13)展示了1位减法器片的真值表和逻辑表达式。真值表简单地决定了之前讨论两种减法算法中的一种。考虑到差值和借位(抵扣位)表达式与FA的和值和进位表达式相似。或者,先行借位减法器(BLA)可以用CLA的方法设计。
image

相关文章
QGS
|
前端开发 easyexcel Java
手拉手EasyExcel实现web上传下载(全栈)
EasyExcel实现web上传下载
QGS
563 2
|
存储 iOS开发 开发者
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
使用克魔助手进行iOS数据抓包和HTTP抓包的方法详解
395 0
|
11月前
|
存储 编解码 算法
基于FPGA的直接数字频率合成器verilog实现,包含testbench
本项目基于Vivado 2019.2实现DDS算法,提供完整无水印运行效果预览。DDS(直接数字频率合成器)通过数字信号处理技术生成特定频率和相位的正弦波,核心组件包括相位累加器、正弦查找表和DAC。相位累加器在每个时钟周期累加频率控制字,正弦查找表根据相位值输出幅度,DAC将数字信号转换为模拟电压。项目代码包含详细中文注释及操作视频。
|
Ubuntu 网络协议 Linux
【Linux】Android平板上远程连接Ubuntu服务器code-server进行代码开发
【Linux】Android平板上远程连接Ubuntu服务器code-server进行代码开发
317 0
|
SQL 数据采集 运维
「应用实时监控 ARMS 」斩获「根因分析技术」先进级认证
「应用实时监控 ARMS 」斩获「根因分析技术」先进级认证
1093 85
|
算法 异构计算
m基于FPGA的64QAM调制解调、载波同步verilog实现
m基于FPGA的64QAM调制解调、载波同步verilog实现
618 1
m基于FPGA的64QAM调制解调、载波同步verilog实现
|
存储 缓存 Linux
系统内存管理:虚拟内存、内存分段与分页、页表缓存TLB以及Linux内存管理
虚拟内存的主要作用是提供更大的地址空间,使得每个进程都可以拥有大量的虚拟内存,而不受物理内存大小的限制。此外,虚拟内存还可以提供内存保护和共享的机制,保护每个进程的内存空间不被其他进程非法访问,并允许多个进程共享同一份物理内存数据,提高了系统的资源利用率。虚拟内存的实现方式有分段和分页两种,其中分页机制更为常用和灵活。分页机制将虚拟内存划分为固定大小的页,将每个进程的虚拟地址空间映射到物理内存的页框中。为了减少页表的大小和访问时间,采用了多级页表的方式,将大的页表划分为多个小的页表,只加载需要的页表项,节约了内存空间。
714 0
系统内存管理:虚拟内存、内存分段与分页、页表缓存TLB以及Linux内存管理
|
算法 异构计算
m基于FPGA的cordic算法实现,输出sin和cos波形
m基于FPGA的cordic算法实现,输出sin和cos波形
487 0
m基于FPGA的cordic算法实现,输出sin和cos波形
|
消息中间件 Java Kafka
Apache Kafka和ActiveMQ的主要优点和典型用例
Apache Kafka和ActiveMQ的主要优点和典型用例
371 0
Apache Kafka和ActiveMQ的主要优点和典型用例
|
NoSQL 安全 关系型数据库
黑马点评笔记 分布式锁(一)
黑马点评笔记 分布式锁
365 0