Verilog刷题[hdlbits] :Module addsub

news2024/10/7 4:24:55

题目:Module addsub

An adder-subtractor can be built from an adder by optionally negating one of the inputs, which is equivalent to inverting the input then adding 1. The net result is a circuit that can do two operations: (a + b + 0) and (a + ~b + 1). See Wikipedia if you want a more detailed explanation of how this circuit works.

  • 加法器-减法器可以由加法器通过选择性地对其中一个输入求反来构建,这相当于对输入求反然后加1。最终结果是一个可以进行两个运算的电路:(a+b+0)和(a+~b+1)。如果你想更详细地解释这个电路是如何工作的,请参阅维基百科。

Build the adder-subtractor below.

  • 构建下面的加减法器。

You are provided with a 16-bit adder module, which you need to instantiate twice:

  • 为您提供了一个16位加法器模块,您需要实例化两次:
    module add16 ( input[15:0] a, input[15:0] b, input cin, output[15:0] sum, output cout );

Use a 32-bit wide XOR gate to invert the b input whenever sub is 1. (This can also be viewed as b[31:0] XORed with sub replicated 32 times. See replication operator.). Also connect the sub input to the carry-in of the adder.

  • 每当sub为1时,使用32位宽的XOR门来反转b输入。(这也可以被视为b[31:0]与子复制进行32次异或。请参阅复制运算符。)也可以将子输入连接到加法器的进位。

在这里插入图片描述

该题目实现较为简单,题目中也给出了可以通过前面章节学习的复制将sub进行扩展,但该题目需要理解为什么通过异或与设置cin位为sub就能够将加法器改造为减法器。B站Up主视频讲解了计算机能够通过补码完成加减法运算。
因此,在进行减法运算时,需要将被减数b的补码变为-b的补码,视频中讲解了可以将每一位均取反再加+1。当sub为1,完成位扩展后变为32个1。此时,再与b进行异或操作(不相同为1,相同为0),即可完成取反,在结合sub的进位即可完成b的补码变为-b的补码。通过a+(-b)的补码完成取反操作。
同时,当sub为0是,b异或后不变,且进位cin为0,与原来的加法器一样。




module top_module(
    input [31:0] a,
    input [31:0] b,
    input sub,
    output [31:0] sum
);
 	//进位信号
    wire cout;
    wire [31:0] b_xor;
    
    assign b_xor = {32{sub}} ^ b;
    
	//低16位相加
	add16 add16_init_0( 
        .a(a[15:0]), 
        .b(b_xor[15:0]),
        .cin(sub), 
        .sum(sum[15:0]), 
        .cout(cout) 
    );
    
    //高16位相加
	add16 add16_init_2( 
        .a(a[31:16]), 
        .b(b_xor[31:16]),
        .cin(cout), 
        .sum(sum[31:16]),
        .cout() 
    );

endmodule

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023/11/3 JAVA学习

默认执行toString方法 在类中重写toString方法,会自动写 默认比较的是对象的地址 equals主要也是为了重写 克隆必须要Cloneable标记接口,虚拟机才会允许克隆 调用对象中的克隆方法时会报错(异常),按住ctrl 回车扔掉异常 如果用对象自己的equals方法,如果本身是null会报错 效率…

内审数字化:防范化解企业风险的灵丹妙药

某家制造业公司的审计部负责人王经理,最近对公司的各种风险感到焦虑。供应商管理、招标采购、市场竞争激烈、法规变化等因素都可能对他的公司构成威胁。如何防范化解这些风险,成为王经理的首要任务。 正当王经理一筹莫展时,一次偶然的机会&a…

【软著写作】软著写作过程记录

文章目录 整体流程图:写在前面:一、准备材料1 准备材料2 申请盖章 二、软件登记1 注册账号2 填报软著 整体流程图: 写在前面: 这两天填报了一篇软著,正好将以前第一次填报时,踩的一些坑和过程记录了一下&am…

ngxin 正向代理配置 访问互联网

如果本地无法访问互联网,则通过nginx的正向代理,可以将本地的所有流量进行代理,从而达到访问互联网的目的,话不多说,上代码: 1、下载nginx并安装相关依赖 yum -y install gcc yum install -y gcc-c yum …

Nacos报错Connection refused (Connection refused)(最后原因醉了,非常醉)

目录 一、问题产生二、排查思路1.nacos拒绝连接,排查思路:2.Nacos启动成功但是拒绝连接的几种原因: 三、实操过程(着急解决问题直接看这个)1.启动Nacos2.查看Nacos启动日志3.根据日志处理问题4.修改Nacos5.重启Nacos 一…

安全防御——一、防火墙的基本概念

安全防御 一、了解防火墙1、防火墙的区域及发展史2、下一代防火墙 二、win10添加环回网卡ENSP连接真机1、导入设备包并登录2、创建环回网卡并配置IP地址3、解决云未显示环回网卡的问题4、绑定网卡并登录Web界面 一、了解防火墙 路由交换终归结底是连通性设备 五元组&#xff0…

会声会影2024出来了吗?会声会影2024这款视频剪辑软件怎么样?

众所周知,每每有新兴行业逐渐崛起壮大的时候,随机而来的就是这个行业创造出的衍生行业,比如说现在的短视频平台或者是视频剪辑行业,都是很明显例子,今天我们就针对剪辑软件来和大家聊一聊,会声会影2024这款…

低代码开发,一场深度的IT效率革命

目录 一、前言 二、低代码迅速流行的理由 三、稳定性和生产率的最佳实践 四、程序员用低代码开发应用有哪些益处? 1、提升开发价值 2、利于团队升级 五、总结 一、前言 尽管IT技术支撑了全球的信息化浪潮,然而困扰行业已久的软件开发效率并未像摩尔定律那…

双生幻想礼包码,双生幻想兑换码在哪里输入?

兑换码是玩家享受珍贵福利和钻石资源的捷径,即刻获得!如果你尚未了解,千万不要错过我们的最新兑换码!不容错过的真实有效双生幻想礼包兑换码大全,小编已亲测,真实可行。双生幻想是一款风靡的二次元角色战斗…

AHD摄像头和普通摄像头

AHD摄像头和普通摄像头是两种常见的监控摄像设备,它们在技术原理、视频传输质量和适应环境等方面存在一些区别。本文将详细介绍AHD摄像头和普通摄像头的区别。 一、技术原理的区别 AHD(Analog High Definition)摄像头采用模拟高清技术&…

使用Docker搭建一个“一主两从”的 Redis 集群(超详细步骤)

目录 1、Redis 单机版安装1.1 拉取 Redis1.2 创建数据卷目录1.3 修改 redis.conf1.4 启动 Redis 容器1.5 进入容器连接 Redis 2、Redis 一主两从集群搭建2.1 复制三份 redis.conf2.2 启动 master2.3 启动 两个redis slave2.4 三者关系查看2.5 数据测试 1、Redis 单机版安装 1.…

快速批量重命名:高效修改文件名并转换为大写扩展名

在文件管理中,批量重命名文件是一个常见的需求。通过快速批量重命名,我们可以高效地修改文件名并将扩展字母转换为大写形式。这样做不仅可以提高文件的可读性,还可以更好地组织和管理文件。用云炫文件管理器可以快速批量重命名,能…

数据结构——基于顺序表实现通讯录

一、. 基于动态顺序表实现通讯录 1.1 功能要求 1)⾄少能够存储100个⼈的通讯信息 2)能够保存⽤⼾信息:名字、性别、年龄、电话、地址等 3)增加联系⼈信息 4)删除指定联系⼈ 5)查找制定联系⼈ 6&…

Spring Cloud智慧工地源码,利用计算机技术、互联网、物联网、云计算、大数据等新一代信息技术开发,微服务架构

智慧工地系统充分利用计算机技术、互联网、物联网、云计算、大数据等新一代信息技术,以PC端,移动端,设备端三位一体的管控方式为企业现场工程管理提供了先进的技术手段。让劳务、设备、物料、安全、环境、能源、资料、计划、质量、视频监控等…

UI设计工具都哪些常用的,推荐这5款

对于UI设计师来说,日常工作无非是围绕“需求分析”→设计实施→“开发交付”这三个环节来进行。 然而,在每个环节中,设计师使用的工具却完全不同。在这里,我收集整理了UI设计师在日常工作中常用的五种工具,希望能为新…

二叉树刷题——递归

JZ36 二叉搜索树与双向链表(牛客) 描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。如下图所示 数据范围:输入二叉树的节点数 0≤10000≤n≤1000,二叉树中每个节点的值 0≤10000≤val≤1000 要求&…

Android 11 Framework 增加自定义API到系统中

基于 Android 11 源码 根据网上的教程, 自己先捣鼓一波: frameworks\base\services 创建 hzyd文件夹 Android.bp内容: android_library_import {name: "services.hzyd",aars: ["MobileSDK-release.aar"],sdk_version: "current", }修改 fra…

携程AI布局:三重创新引领旅游行业智能化升级

2023年10月24日,携程全球合作伙伴峰会在新加坡召开,携程集团联合创始人、董事局主席梁建章做了名为《旅游业是独一无二的最好的行业》的演讲,梁建章在演讲中宣布了携程生成式 AI、内容榜单、ESG 低碳酒店标准三重创新的战略方向。这些创新将为…

Python 获取cpu、内存利用率

获取cpu、内存利用率 # -*- coding: latin1 -*- import psutil cpuPercent 0 psutil.cpu_percent() while True:vm psutil.virtual_memory()memoryPercent vm.percentcpuPercent psutil.cpu_percent(1) *10print("cpuPercent:"str(cpuPercent)" %")prin…