2位加法器 FPGA 设计 Verilog Vivado

发布时间:2026/6/19 13:55:43
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 激励块设置多组输入例如 00、23、11 并带进位、32 并带进位等场景用于验证不同输入条件下的求和输出和进位输出。该测试方式便于在 Vivado 仿真波形中检查组合逻辑是否按预期响应。模块结构主要模块包括 ADD_22 位加法器模块接收 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_a2d0; add_b2d0; add_cin0; #100; add_a2d2; add_b2d3; add_cin0; #100; add_a2d1; add_b2d1; add_cin1; #100; #100; add_a2d3; add_b2d2; add_cin1; #100; end endmodule代码获取点击下方公众号卡片