半减器、全减器和减法器原理和设计

news/2024/5/19 17:12:42 标签: Systemverilog

        减法器可由基础的半减器和全减器模块组成,或者基于加法器和控制信号搭建。定义N比特被减数X,减数Y,差为D(difference);来自低比特借位Bi,向高比特借位Bi+1,i为比特序号;所以,有以下结论:

1、半减器

        半减器用于计算两比特Xi和Yi的减法,输出结果Di和向高位的借位Bo(Borrow output)。其真值表、逻辑表达式、Verilog描述和门电路图如下:

1.1、真值表


1.2、逻辑表达式

xor表示异或。

1.3、Verilog设计

1.4、门电路图

2、全减器

全减器不同于半减器在于,全减器输入来自低位的借位Bi(Borrow input),另外两个输入Xi,Yi,输出为Di和向高位的借位Bo。其真值表、逻辑表达式、Verilog描述和门电路图如下:

2.1、真值表


2.2、逻辑表达式

2.3、Verilog设计

2.4、门电路图

三、减法器

        此前,我们介绍了相当数量的加法器设计,而减法器与加法器具有相同的设计方法。用如下符合表示全减器:

根据此全减器搭建16比特减法器,如下图所示,姑且称之为行波借位减法器。

                                                        “行波借位减法器”

        除了使用半减器和全减器搭建减法器外,减法器使用控制信号便可以与加法器共用相同的结构。X与Y均采用二进制补码表示,则:

其中~Y表示对Y按比特取反。

                                                        加减法器

        以上是基于行波进位加法器修改的电路结构,使其同时具有加法和减法的功能。由加或者减的控制信号,决定该部件的功能。输入c0=0时表示加法;c0=1时表示减法。为了溢出与符号位考虑,以上结构最后进位输出需要与控制信号进行异或以满足减法器的需求。比如0-0的情况。

以下两条RISC-V算术指令:ADD和SUB

ADD rd, rs1, rs2

SUB rd, rs1, rs2

处理器根据指令译码,判断ADD或者SUB,来共用加法减法单元。

四、Verilog设计

设计一个16比特的减法器

(1)基于全减器设计“行波借位减法器”,基础的全减器模块

                           加减法器
(2)根据行波进位加法器,通过控制信号,使其同时具有加法和减法的功能,注意进位。


http://www.niftyadmin.cn/n/5025938.html

相关文章

论文解析-基因序列编码算法DeepSEA

论文解析-DeepSEA 参考亮点功能 方法数据集来源数据 实验评估评估DeepSEA预测染色质特征的性能评估DeepSEA在变异序列上的DHS预测性能数据集结果 参考 Zhou, J., Troyanskaya, O. Predicting effects of noncoding variants with deep learning–based sequence model. Nat Me…

gmssl v2 用 dgst 命令通过 sm2 签名出的结果,在别的工具上无法验签的问题分析

结论 通过分析发现,导致问题的原因是:gmssl v2 调用的算法不是 sm2 算法。 分析详情 具体情况如下所述 在 gmssl 调用 pkey_ec_init 函数时,默认会把 ec_scheme 设置为 NID_secg_scheme 签名的过程中会调用 pkey_ec_sign 函数&#xff0c…

(四舍五入) AT_abc001C風力観測

AT_abc001C 風力観測 一、题目描述 原题链接 给两个输入,一个是风向,一个是风力,要求以另一种表示形式输出它们。 二、算法分析 总体是一道模拟题,考察了浮点数的四舍五入。 以 5.23 为例,对小数点后第 2 位进行四…

2.1 Java基本语法

1. Java程序的基本格式 Java程序代码必须放在一个类中,类使用class关键字定义,在class前面可以有类的修饰符,类的定义格式如下。 修饰符 class 类名{程序代码 } 编写Java程序需要注意的具体如下: Java程序代码可分为结构定义语…

C++ 4种智能指针的定义与使用——学习记录008

1.智能指针 1.1作用 智能管理动态分配的内存&#xff0c;自动释放程序员new出来的内存&#xff0c;从而避免内存泄漏。 1.2原理 动态分配的内存交给有生命周期的对象处理&#xff0c;在对象过期时&#xff0c;内存的释放交给对象来处理。 1.3使用方法 #include<memory…

vue3学习源码笔记(小白入门系列)------ 重点!响应式原理 代码逐行分析

目录 备注响应式数据创建ref 和 reactive 核心 作用第一轮的 依赖收集 发生时机setup 阶段 去更改了 响应式数据 会发生依赖收集吗 派发更新派发更新是什么时候 触发的&#xff1f;扩展&#xff1a; setup阶段 响应式数据被修改 会触发组件更新吗 vue 是如何根据派发更新来触发…

JetBrains设置inline hint的背景色、前景色

如题。修改IDE的hint前景色和背景色。 修改后结果&#xff1a;

idea把项目打成jar包步骤详解

最近产品需要预研一个小功能&#xff0c;开始后在本地开发测试好之后&#xff0c;需要打成jar提供出去&#xff0c;今天弄完了&#xff0c;决定把这个步骤记录下来&#xff0c;便于以后轻车熟路。 打成jar要有mian方法的入口&#xff0c;所以我们在代码中需要定义一个main方法&…