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

别再死记硬背了!用Verilog手写一个四位加减法器,帮你彻底搞懂补码和逻辑门

从逻辑门到补码运算Verilog四位加减法器的硬件思维解密记得第一次在《数字逻辑》课上听到补码这个概念时我和大多数同学一样满脸困惑——为什么计算机要用这么绕的方式处理负数直到亲手用Verilog实现了一个四位加减法器那些教科书上的公式突然变得鲜活起来。今天我们就用硬件描述语言的视角重新理解补码这个精妙的设计。1. 补码计算机运算的优雅解法补码的概念最早出现在1945年冯·诺依曼的报告中它解决了二进制世界中正负数统一运算的难题。想象你有一个老式里程表当它从0000倒转到9999时这其实就是补码思想的雏形——用够减的方式表示负数。四位二进制中补码的计算遵循这个规则正数的补码是其本身负数的补码 原码取反 1例如-3的补码表示原码1011最高位1表示负 反码1100逐位取反 补码1101反码1关键发现补码表示下加减法可以统一用加法器实现这正是现代CPU算术逻辑单元(ALU)的设计基础2. 逻辑门搭建的运算单元要实现四位加减法器我们需要三类基本逻辑门逻辑门Verilog运算符真值表AND000, 010, 100, 111OR|0|00, 0|11, 1|01, 1|11XOR^0^00, 0^11, 1^01, 1^10一位全加器的逻辑表达式为sum A ^ B ^ Cin; Cout (A B) | (Cin (A ^ B));将这个结构级联四次就形成了四位行波进位加法器。但直接这样实现减法会遇到问题——我们需要一个巧妙的转换。3. Verilog实现加减法统一处理以下是经过优化的四位加减法器核心代码module adder_subtractor ( input [3:0] A, input [3:0] B, input op, // 0:加法, 1:减法 output [3:0] S, output Cout ); wire [3:0] B_adj B ^ {4{op}}; // 减法时取反 wire Cin op; // 减法时1 // 第一级加法 wire c0; assign S[0] A[0] ^ B_adj[0] ^ Cin; assign c0 (A[0] B_adj[0]) | (Cin (A[0] ^ B_adj[0])); // 第二级 wire c1; assign S[1] A[1] ^ B_adj[1] ^ c0; assign c1 (A[1] B_adj[1]) | (c0 (A[1] ^ B_adj[1])); // 第三级 wire c2; assign S[2] A[2] ^ B_adj[2] ^ c1; assign c2 (A[2] B_adj[2]) | (c1 (A[2] ^ B_adj[2])); // 第四级 assign S[3] A[3] ^ B_adj[3] ^ c2; assign Cout (A[3] B_adj[3]) | (c2 (A[3] ^ B_adj[3])); endmodule这个设计的精妙之处在于通过B ^ {4{op}}实现B操作数的按位取反将op信号同时作为初始进位输入等效于1操作加法减法统一处理大大简化了电路结构4. 测试验证从波形图看运算过程编写测试模块验证设计正确性module tb; reg [3:0] A, B; reg op; wire [3:0] S; wire Cout; adder_subtractor uut(A, B, op, S, Cout); initial begin // 加法测试 op 0; A 4b0101; B 4b0011; #10; // 538 A 4b1100; B 4b0011; #10; // 12315 // 减法测试 op 1; A 4b0111; B 4b0010; #10; // 7-25 A 4b0011; B 4b0101; #10; // 3-5-2(补码:1110) $finish; end endmodule在ModelSim中观察波形时特别注意减法运算时op1触发B操作数取反初始进位Cin1完成补码的1步骤最终结果以补码形式呈现5. 硬件视角的深度优化基础的行波进位加法器存在延迟问题我们可以采用超前进位技术优化。超前进位公式为Gi Ai Bi // 生成进位 Pi Ai ^ Bi // 传播进位 Ci1 Gi | (Pi Ci)四位超前进位的Verilog实现module carry_lookahead_adder( input [3:0] A, B, output [3:0] S, output Cout ); wire [3:0] G A B; wire [3:0] P A ^ B; wire c0 0; // 初始进位 wire c1 G[0] | (P[0] c0); wire c2 G[1] | (P[1] G[0]) | (P[1] P[0] c0); wire c3 G[2] | (P[2] G[1]) | (P[2] P[1] G[0]) | (P[2] P[1] P[0] c0); assign Cout G[3] | (P[3] G[2]) | (P[3] P[2] G[1]) | (P[3] P[2] P[1] G[0]) | (P[3] P[2] P[1] P[0] c0); assign S P ^ {c3,c2,c1,c0}; endmodule这种设计虽然逻辑表达式更复杂但所有进位可以并行计算显著提升运算速度。在FPGA实现时综合工具通常会自动优化这类结构。6. 常见问题与调试技巧在实现过程中我遇到过几个典型问题符号位处理不当忘记补码运算时最高位也是参与计算的导致结果异常解决方法统一用4位宽信号不单独处理符号位减法结果验证如何确认1110确实是-2验证方法用这个结果再加5应该得到30011时序问题在测试平台中忘记添加足够的延迟经验法则每个时钟边沿后至少#10确保信号稳定调试时这个小技巧很实用在ModelSim中添加中间信号监视initial begin $monitor(At time %t: A%b B%b op%b → S%b, $time, A, B, op, S); end7. 从四位到N位架构扩展思路理解了四位加减法器后扩展到更宽位宽就容易了模块化设计将四位加减法器封装为子模块级联扩展通过进位链连接多个四位模块module adder_8bit( input [7:0] A, B, input op, output [7:0] S, output Cout ); wire carry_mid; adder_subtractor low4(A[3:0], B[3:0], op, S[3:0], carry_mid); adder_subtractor high4(A[7:4], B[7:4], op, S[7:4], Cout); endmodule流水线优化对超前进位加法器采用多级流水提高吞吐量在Xilinx Vivado中综合时添加这些约束可以提高性能set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets op] set_property IOB TRUE [get_ports {A[*] B[*]}]亲手实现这个四位加减法器后那些曾经死记硬背的补码规则突然变得直观起来。最让我惊讶的是这个看似简单的电路模块竟然完整展现了计算机处理算术运算的核心思想——用逻辑门的组合实现数学运算这正是数字电路的魅力所在。

相关文章:

别再死记硬背了!用Verilog手写一个四位加减法器,帮你彻底搞懂补码和逻辑门

从逻辑门到补码运算:Verilog四位加减法器的硬件思维解密 记得第一次在《数字逻辑》课上听到"补码"这个概念时,我和大多数同学一样满脸困惑——为什么计算机要用这么绕的方式处理负数?直到亲手用Verilog实现了一个四位加减法器&…...

全套R分析代码,空间转录组 + scRNA-seq揭示阿尔茨海默病抗体药机制

🚀科研不掉发,快来这个地表最强的生信神仙网站:中国银河生信云平台👉 立即访问:https://usegalaxy.cn最佳Galaxy生信云平台教程:从入门到精通(图文版)转录组分析流程和工具大全&…...

C++学习笔记——初始化列表、创建和实例化对象、new 关键字、隐式构造与 explicit 关键字、运算符与运算符重载

目录 1. 初始化列表 1.1 基本语法 1.2 为什么使用初始化列表? 1.3 初始化顺序 2. 创建和实例化对象 2.1 栈上分配(自动存储期) 2.2 堆上分配(动态存储期) 2.3 栈 vs 堆:Cherno 的建议 3. new 关键…...

璀璨星河效果展示:古典结构×现代张力的Z-Image原生艺术生成

璀璨星河效果展示:古典结构现代张力的Z-Image原生艺术生成 “我梦见了画,然后画下了梦。” —— 文森特 梵高 今天,我想带你走进一个特别的数字艺术馆。在这里,冰冷的代码逻辑与炽热的艺术灵魂相遇,古典的审美结构与现…...

RePKG技术探索:Wallpaper Engine资源解析工具深度剖析

RePKG技术探索:Wallpaper Engine资源解析工具深度剖析 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 一、认知困境:数字资源的格式壁垒 创意工作者的格式枷…...

中小企业AI落地:Qwen3-4B-Instruct-2507轻量部署实战

中小企业AI落地:Qwen3-4B-Instruct-2507轻量部署实战 中小企业想用上大模型,常被几个现实问题卡住:显存不够、部署太重、运维不会、成本太高。Qwen3-4B-Instruct-2507这个模型,就是为这类场景量身打磨的——它不追求参数堆砌&…...

基于YOLOv8深度学习的蘑菇毒性检测系统(YOLOv8+YOLO数据集+UI界面+Python项目源码+模型)

一、项目介绍 摘要 随着人们对于野生菌菇膳食兴趣的增加以及户外采摘活动的普及,误食有毒蘑菇的事件频发,对公众健康构成了严重威胁。传统的蘑菇种类鉴别高度依赖专家的形态学经验,普通爱好者难以准确掌握,且现有识别应用在应对…...

Qwen3-VL-30B效果实测:识别复杂图表毫无压力,回答精准又详细

Qwen3-VL-30B效果实测:识别复杂图表毫无压力,回答精准又详细 1. 开篇:当AI真正"看懂"了世界 想象一下这样的场景:你随手拍下一张满是数据和曲线的科研论文图表,AI不仅能准确识别出每个坐标轴的含义&#x…...

SEO优化中关键词的作用是什么_关键词布局对SEO有什么影响

SEO优化中关键词的作用是什么 在现代网络营销中,SEO(搜索引擎优化)是提升网站在搜索引擎结果中排名的重要手段。其中,关键词的作用至关重要。关键词不仅是搜索引擎理解用户意图的重要载体,也是搜索引擎算法评估网站相…...

3步构建智能文献管理系统:Zotero GPT插件从配置到精通指南

3步构建智能文献管理系统:Zotero GPT插件从配置到精通指南 【免费下载链接】zotero-gpt GPT Meet Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-gpt 在信息爆炸的学术环境中,研究人员平均每天需要处理超过20篇文献,传…...

别再只用箱线图了!用R语言vioplot绘制小提琴图的5个高级技巧与常见误区避坑

别再只用箱线图了!用R语言vioplot绘制小提琴图的5个高级技巧与常见误区避坑 当你已经能够熟练地用箱线图展示数据分布时,是否想过有一种更优雅、信息量更大的可视化方式?小提琴图(Violin Plot)正是这样一种工具&#x…...

RePKG工具深度解析:Wallpaper Engine资源处理的技术方案

RePKG工具深度解析:Wallpaper Engine资源处理的技术方案 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 现实痛点层:破解资源处理的三重技术困境 游戏美术师…...

丰田的“改善”到底牛在哪?-云质QMS为您解读精益生产的核心

提到丰田,大家第一反应大概率是精益生产、JIT 即时制,却很少有人深究,支撑丰田几十年持续领跑制造业的底层逻辑,其实是那个看似简单的日语词 ——改善(kaizen)。很多企业学丰田学了个皮毛,照搬流…...

手柄不兼容PC游戏?试试ViGEmBus的虚拟控制器仿真技术

手柄不兼容PC游戏?试试ViGEmBus的虚拟控制器仿真技术 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 你是否遇到过这样的情况:新买的…...

【RT-DETR涨点改进】SCI一区 2025顶刊 |全网独家创新,注意力改进篇 | RT-DETR引入DOAM动态全向注意力模块,模块,显著增强了特征表达能力和结构恢复能力,含7种独家创新改进点

一、本文介绍 🔥本文给大家介绍利用 DOAM 动态全向注意力模块改进RT-DETR网络模型,可在不显著增加计算量的前提下增强全局上下文建模能力,通过空间轴向聚合获得更强的跨区域信息交互,并用通道动态加权突出目标相关特征、抑制背景干扰,从而优化多尺度特征融合效果,提升小…...

上海计算机学会2026年2月月赛C++丙组T1 乘积的秘密

乘积的秘密 题目描述 给定两个整数 A 与 B,保证 A ≤ B。请求出从 A 一直乘到 B 的符号: 如果乘积大于 0,输出 Positive;如果乘积小于 0,输出 Negative;如果乘积等于 0,输出 Zero。 输入格式 两…...

【RT-DETR涨点改进】TGRS 2026 | 全网独家创新、特征融合改进篇| 引入STSAM协同时空注意力融合模块,发论文热点创新,注意力能够互相引导强化边界和结构细节,增强目标检测高效涨点

一、本文介绍 🔥本文给大家介绍使用 STSAM协同时空注意力融合模块 改进RT-DETR网络模型,STSAM 是 空间域特征增强模块,通过全局跨时相注意力和局部坐标注意力的并行处理,能有效聚焦真实变化目标,强化边界和结构细节,同时兼顾训练稳定性,为后续浅层特征融合提供高质量特…...

Nano-Banana与PyTorch Lightning集成:简化深度学习流程

Nano-Banana与PyTorch Lightning集成:简化深度学习流程 用更少的代码,做更多的事情——这就是PyTorch Lightning的魅力所在 如果你正在使用Nano-Banana进行深度学习项目,可能会发现编写训练循环、管理设备、处理日志记录这些重复性工作相当耗…...

2026 年 GEO 优化公司推荐:6家服务商综合实力对比分析

一、GEO 行业进入合规技术双轮驱动的爆发期IDC 最新发布的《2026年全球生成式引擎优化市场报告》显示,2026年全球 GEO(生成式引擎优化)市场规模将达 220 亿美元,年复合增长率高达 122%,中国市场规模预计突破 480 亿元&…...

Ostrakon-VL处理网络协议:从数据包捕获文件可视化网络流量

Ostrakon-VL处理网络协议:从数据包捕获文件可视化网络流量 1. 网络流量分析的痛点与机遇 网络工程师每天都要面对海量的网络数据包,传统的分析工具虽然功能强大,但存在几个明显痛点: 数据量大:一个中等规模企业的日…...

近期 GitHub 上爆火的 34 个极具潜力的开源项目

Coasts GitHub 链接:https://github.com/coast-guard/coasts 一款为 Git 工作区打造的本地主机服务隔离与编排工具,由前 Y Combinator 创始人开发。将自主智能体的主机全访问权限这一安全风险规避,智能体可在容器化主机内创建环境、运行服务…...

Docker---容器编排工具Docker Compose

Docker Compose核心功能使用YAML文件定义多容器应用一键启动/停止/重建整个应用栈管理服务依赖关系与网络配置环境变量集中管理,适配多环境部署核心概念层级Service(服务):一个应用组件,可包含多个相同镜像的容器实例P…...

FlowState Lab 日志分析与性能调优实战

FlowState Lab 日志分析与性能调优实战 1. 为什么需要关注模型服务性能 当你把FlowState Lab模型部署上线后,可能会遇到这样的情况:请求量一大,响应就开始变慢,甚至出现超时。这时候就需要关注服务的性能表现。性能调优不是玄学…...

阿里云RDSClaw:给OpenClaw装上超级记忆和超级大脑,会怎样?

RDSClaw 喊你领取免费试用了!点击下方训练营,可领取免费试用,跟随训练营中的课程可轻松部署你的专属小龙虾! 训练营报名链接:养虾训练营- RDSClaw_阿里云培训中心-阿里云 参营福利:完成RDSClaw实操部署&a…...

阿里云代理商:OpenClaw 技能安全部署指南与高口碑扩展精选

在集成任何 OpenClaw 第三方功能模块前,安全防护是首要环节。核心流程是借助官方安全审查工具,预先扫描潜在威胁,避免因加载恶意模块引发的数据泄漏或设备隐患。1. 核心安防工具部署优先部署 skill-vetting 安全扫描工具(OpenClaw…...

源码被泄露,Claude Code 之父回应:人为错误,没有开除犯事员工

昨天 Claude Code 被泄露开源的事,大家都知道了。 ① 今天上午,估计大家已经看到了一封自称 A 社犯事员工发的帖子,说自己被开除了。其实这哥们搞抽象呢,已经辟谣了,他压根就不是 A 社工程师。 ② Claude Code 之父回应…...

RAG集成:如何让你的企业知识库成为AI的“长期记忆”

核心命题:AI没有记忆,但你的知识库可以成为它的“外脑”。RAG(检索增强生成)是GEO的终极形态:让企业私有数据成为AI生成答案的唯一信源。引言:老陈的新困境——当AI“看见”了你的店,却“看不见…...

Qwen3-VL-2B实战:快速搭建一个能“看懂”图片的智能聊天机器人

Qwen3-VL-2B实战:快速搭建一个能"看懂"图片的智能聊天机器人 1. 项目介绍与核心能力 1.1 什么是视觉语言模型 视觉语言模型(Vision-Language Model)是一种能够同时理解图像和文本的AI技术。不同于传统聊天机器人只能处理文字&am…...

手机号查QQ号终极指南:3分钟快速找回遗忘的QQ号码

手机号查QQ号终极指南:3分钟快速找回遗忘的QQ号码 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 你是否曾因忘记QQ号而无法登录?是否因为更换手机需要重新绑定QQ却找不到账号信息?手机号查QQ号工…...

大海捞针:从海量真实世界5G-A基站数据中追踪无人机

大家读完觉得有帮助记得关注和 点赞!!! 摘要 无人机在日常生活中的潜在应用使得对其监控变得至关重要。然而,现有的无人机监控系统通常依赖于摄像头、激光雷达或雷达,这些系统的感知范围有限或部署成本高昂&#xff0…...