news 2026/6/19 13:55:32

2位加法器 FPGA 设计 Verilog Vivado

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
2位加法器 FPGA 设计 Verilog Vivado

名称:2位加法器 FPGA 设计 Verilog Vivado

软件:Vivado

语言:Verilog

功能介绍

本设计实现一个 2 位二进制加法器,输入包括 2 位加数 add_a、2 位加数 add_b 以及低位进位 add_cin,输出包括 2 位求和结果 sum_out 和最高位进位 cout_out。该功能适合用于学习 Verilog 组合逻辑设计、加法器级联结构以及 FPGA 基础数字电路实现。 电路采用半加器和全加器组合搭建 2 位加法逻辑,能够完成带进位输入的二进制加法运算。通过不同输入组合,可以观察低位求和、进位传递以及最终进位输出之间的关系,便于理解多位加法器的基本构成方式。 工程配套了 Verilog 测试文件 add_2_test,对 2 位输入和进位输入进行多组激励设置,可用于在 Vivado 仿真环境中查看 sum_out 与 cout_out 的变化结果。整体规模较小,结构清晰,适合作为 FPGA 入门实验、组合逻辑课程设计或加法器模块扩展的参考。

运行环境

开发软件:Vivado 设计语言:Verilog 工程类型:Vivado FPGA 工程,包含源代码文件、仿真 testbench 以及 Vivado 仿真运行相关文件。

设计思路

设计思路采用由基础加法单元逐级构建多位加法器的方式。底层 HALF_ADDR 用于完成单个位的半加运算,处理两个输入位的求和与进位;ALL_ADDR 用于完成全加运算,在两个输入位基础上加入来自低位的进位输入,从而得到当前位求和结果和向高位传递的进位。 2 位加法模块 ADD_2 将低位和高位加法逻辑连接起来。低位加法接收 add_a[0]、add_b[0] 和 add_cin,产生 sum_out[0] 以及传递到高位的中间进位;高位加法再接收 add_a[1]、add_b[1] 和低位进位,产生 sum_out[1] 与最终进位 cout_out。这样可以直观体现多位二进制加法器中“逐位相加、进位级联”的硬件实现方式。 测试文件 add_2_test 通过 initial 激励块设置多组输入,例如 0+0、2+3、1+1 并带进位、3+2 并带进位等场景,用于验证不同输入条件下的求和输出和进位输出。该测试方式便于在 Vivado 仿真波形中检查组合逻辑是否按预期响应。

模块结构

主要模块包括: ADD_2:2 位加法器模块,接收 add_a、add_b、add_cin,输出 sum_out 和 cout_out。 ALL_ADDR:全加器模块,用于处理单个位加法及输入进位。 HALF_ADDR:半加器模块,用于构成基础求和与进位逻辑。 add_2_test:仿真测试模块,实例化 ADD_2 并提供多组输入激励。

仿真图/仿真说明/设计文档图片

工程包含 Vivado 行为仿真相关文件和 add_2_test 测试平台。仿真激励覆盖多组 2 位加法输入及进位输入,可用于观察 sum_out、cout_out 在不同输入组合下的输出变化,适合作为组合逻辑加法器的仿真验证参考。

部分代码

以下展示顶层模块Name的部分代码,完整代码可关注下方公众号卡片获取。

Module Name: add_2_test // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// module add_2_test(); reg [1:0] add_a;//加数a reg [1:0] add_b;//加数b reg add_cin;//加数进位 wire [1:0] sum_out;//和 wire cout_out;//和进位 ADD_2 i_ADD_2( . add_a(add_a),//加数a . add_b(add_b),//加数b . add_cin(add_cin),//加数进位 . sum_out(sum_out),//和 . cout_out(cout_out)//和进位 ); initial begin add_a=2'd0; add_b=2'd0; add_cin=0; #100; add_a=2'd2; add_b=2'd3; add_cin=0; #100; add_a=2'd1; add_b=2'd1; add_cin=1; #100; #100; add_a=2'd3; add_b=2'd2; add_cin=1; #100; end endmodule

代码获取:点击下方公众号卡片

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/19 13:48:13

LinkSwift:终极网盘直链下载助手 - 免费提升下载速度300%的完整指南

LinkSwift:终极网盘直链下载助手 - 免费提升下载速度300%的完整指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移…

作者头像 李华
网站建设 2026/6/19 13:48:03

计算机Django毕设实战-基于 Python 的企业员工考勤管理系统的设计与实现 基于 Python 的员工薪资核算管理系统的设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/19 13:41:31

Claude Opus 4.7深度解析:从对话助手到推理协作者的范式跃迁

1. 这不是一次常规升级:Opus 4.7的本质是一场“能力重构”而非“性能迭代”我用Opus 4.7跑了整整11天,从凌晨三点的代码调试到清晨通勤路上的创意构思,从给客户写商业分析报告到帮孩子改作文,几乎覆盖了所有我能想到的中文高阶使用…

作者头像 李华
网站建设 2026/6/19 13:37:07

VSCode 自动补全的终极技巧:光标位置的艺术

在编写代码时,自动补全功能是提高效率的重要工具。特别是在使用 Visual Studio Code (VSCode) 时,如何让光标在自动补全后准确地停留在理想的位置,是许多开发者关心的问题。本文将通过一个实例,详细介绍如何在 VSCode 中实现光标在花括号中的自动补全。 背景介绍 假设我们…

作者头像 李华
网站建设 2026/6/19 13:33:09

GitHub Trending Today — AI Agent与工作流

本分类聚焦 AI 编程智能体快速演进的生态系统。从 Token 压缩和质量门禁,到多模型协作和持久记忆,这些项目正在构建让智能体更可靠、更高效、更适宜生产环境的基础设施。 No.1您的 AI 智能体跑了一条命令,返回 500 行日志输出,而它…

作者头像 李华