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

verilog HDLBits刷题“Module addsub”--模块 addsub---加法器-减法器

一、题目

可以通过选择性地否定其中一个 inputs,从 adder 构建 adder-subtractor,这相当于反转 input 然后加 1。最终结果是一个可以执行两个作的电路:(a + b + 0) 和 (a + ~b + 1)。如果您想更详细地解释此电路的工作原理,请参阅 Wikipedia。

在下面构建 adder-subtractor。

你得到了一个 16 位的 adder 模块,你需要实例化它两次:

module add16 ( input[15:0] a, input[15:0] b, input cin, output[15:0] sum, output cout );

当 sub 为 1 时,使用 32 位宽的 XOR 门反转 b 输入。(这也可以看作是 b[31:0] XOR 和 sub 复制 32 次。看复制作员.).还将 sub input 连接到 adder 的 carry-in。

 

模块声明

module top_module(input [31:0] a,input [31:0] b,input sub,output [31:0] sum
);

二、分析

实现32位加减法,输入sub确定加减

1、未知的线命名为b_mid,c_mid;

2、计算b与sub的异或;

3、例化两个16位加法器。 

三、代码实现

module top_module(input [31:0] a,input [31:0] b,input sub,output [31:0] sum
);wire c_mid;wire [31:0]b_mid;assign b_mid=b^{32{sub}};add16 inst1(.a(a[15:0]),.b(b_mid[15:0]),.cin(sub),.cout(c_mid),.sum(sum[15:0]));add16 inst2(.a(a[31:16]),.b(b_mid[31:16]),.cin(c_mid),.cout(),.sum(sum[31:16]));endmodule

四、时序结果

 

http://www.lryc.cn/news/573357.html

相关文章:

  • python版halcon环境配置
  • 59-Oracle 10046事件-知识准备
  • 1.23Node.js 中操作 mongodb
  • Django中为api自定义一些装饰器:如参数校验等
  • 获取 Git 仓库
  • npm包冲突install失败
  • 深入浅出:Go语言中的Cookie、Session和Token认证机制
  • Snapchat矩阵运营新策略:亚矩阵云手机打造高效社交网络
  • SiteAzure:解决数据库服务器内存频繁吃满
  • 【Flutter】状态管理框架Provider和Get对比分析(面试常用)
  • 57-Oracle SQL Profile(23ai)实操
  • 编程基础:耦合
  • 跨平台SEH实现的方法
  • Skrill是什么?中国用户能用吗?安全吗?完整指南
  • DAY 38 Dataset和Dataloader类
  • Python编程语言:2025年AI浪潮下的技术统治与学习红利
  • Python UDP Socket 实时在线刷卡扫码POS消费机服务端示例源码
  • 自动化立体仓库堆垛机控制系统STEP7 FC3功能块 I/O映射
  • `provide` 和 `inject` 组件通讯:实现跨组件层级通讯
  • 机器学习15-XGBoost
  • 微服务拆分——nacos/Feign
  • 华为云Flexus+DeepSeek征文 | 基于Flexus X实例的金融AI Agent开发:智能风控与交易决策系统
  • 李宏毅2025《机器学习》第三讲-AI的脑科学
  • 蓝牙数据通讯,实现内网电脑访问外网电脑
  • WPF调试三种工具介绍:Live Visual Tree、Live Property Explorer与Snoop
  • SylixOS 下的消息队列
  • Jupyter notebook调试:设置断点运行
  • Redis后端的简单了解与使用(项目搭建前置)
  • DeepEP开源MoE模型分布式通信库
  • 洛谷P3953 [NOIP 2017 提高组] 逛公园