10位加法器 FPGA 设计 Verilog Vivado

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

软件:Vivado

语言:Verilog

功能介绍

本设计为 10 位加法器 FPGA 工程,核心功能是完成两路输入数据的加法运算,并通过分层逻辑单元组织进位生成、进位传播和最终输出。工程采用 Verilog/SystemVerilog 源码形式组织,适合用于学习加法器结构、组合逻辑设计、层次化模块调用以及 Vivado 仿真流程。 设计主体围绕 Add10 模块展开,配合 InputCell、BlackCell、GreyCell、OutputCell 等基础单元构建加法逻辑。相比单纯用一条加法赋值语句完成运算,本设计更强调加法器内部结构的展开,便于观察进位链路、单元连接方式以及不同层级模块之间的信号传递关系。 工程包含 Add10_tb 测试文件,可在 Vivado 中进行行为级仿真验证。配套文档给出了工程文件、testbench 文件以及仿真图和结果说明,适合作为课程设计、数字逻辑实验、FPGA 加法器结构学习和 Vivado 仿真练习参考。

运行环境

开发软件:Vivado 设计语言:Verilog 工程类型:FPGA 逻辑设计与行为级仿真工程 主要文件:ADD_bug.xpr、Add10.sv、Add10_tb.sv 仿真方式:Vivado XSim 行为级仿真

设计思路

设计采用层次化加法器结构,将 10 位加法运算拆分为多个功能明确的基础逻辑单元。输入端首先通过 InputCell 对每一位输入信号进行处理,形成后续进位计算所需的生成信号和传播信号;中间层通过 BlackCell、GreyCell 等模块完成进位相关逻辑的级联计算;输出端再由 OutputCell 结合进位信息得到最终求和结果。 这种结构化写法有助于把加法器的内部运算过程展开,而不是把全部逻辑隐藏在高级运算符中。对于学习者来说,可以更直观地理解加法器中进位生成、进位传递和求和输出之间的关系,也便于在仿真波形中逐级观察关键中间信号。 测试平台 Add10_tb 用于驱动 Add10 模块进行功能仿真,验证输入激励下的输出变化。Vivado 工程中已包含仿真配置和波形配置文件,可用于复现实验过程并查看仿真结果。整体设计重点在于 Verilog 层次化建模、组合逻辑模块复用以及 Vivado 仿真验证流程。

模块结构

主要模块结构如下: 1. Add10:10 位加法器核心模块,负责组织各基础单元并完成整体加法逻辑。 2. InputCell:输入处理单元,用于产生后续进位计算所需的基础信号。 3. BlackCell:黑单元,用于组合和传递进位生成/传播相关信号。 4. GreyCell:灰单元,用于生成特定层级的进位输出信号。 5. OutputCell:输出处理单元,根据输入和进位信息生成最终结果位。 6. Add10_tb:仿真测试平台,用于给 Add10 提供测试激励并观察仿真输出。 7. glbl:Vivado 仿真全局模块,用于仿真环境中的全局复位、三态和 JTAG 等全局信号建模。

演示视频

包含仿真演示视频,可用于查看 Vivado 仿真运行过程和输出结果展示。该视频适合配合工程文件与仿真波形一起学习,帮助理解测试平台如何驱动 Add10 模块以及仿真结果如何呈现。

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

设计文档包含工程文件说明、testbench 文件说明、仿真图及结果等内容,并配有多张仿真相关图片。文档可用于快速了解工程组成、仿真入口以及结果观察方式。

10位加法器 FPGA 设计 Verilog Vivado 设计文档图片 image4.png

10位加法器 FPGA 设计 Verilog Vivado 设计文档图片 image3.png

10位加法器 FPGA 设计 Verilog Vivado 设计文档图片 image2.png

10位加法器 FPGA 设计 Verilog Vivado 设计文档图片 image1.png

部分代码

以下展示顶层模块 glbl 的部分代码,完整源码请下载压缩包查看。

module glbl ();

    parameter ROC_WIDTH = 100000;
    parameter TOC_WIDTH = 0;

//--------   STARTUP Globals --------------
    wire GSR;
    wire GTS;
    wire GWE;
    wire PRLD;
    tri1 p_up_tmp;
    tri (weak1, strong0) PLL_LOCKG = p_up_tmp;

    wire PROGB_GLBL;
    wire CCLKO_GLBL;
    wire FCSBO_GLBL;
    wire [3:0] DO_GLBL;
    wire [3:0] DI_GLBL;
   
    reg GSR_int;
    reg GTS_int;
    reg PRLD_int;

//--------   JTAG Globals --------------
    wire JTAG_TDO_GLBL;
    wire JTAG_TCK_GLBL;
    wire JTAG_TDI_GLBL;
    wire JTAG_TMS_GLBL;
    wire JTAG_TRST_GLBL;

    reg JTAG_CAPTURE_GLBL;
    reg JTAG_RESET_GLBL;
    reg JTAG_SHIFT_GLBL;
    reg JTAG_UPDATE_GLBL;
    reg JTAG_RUNTEST_GLBL;

    reg JTAG_SEL1_GLBL = 0;
    reg JTAG_SEL2_GLBL = 0 ;
    reg JTAG_SEL3_GLBL = 0;
    reg JTAG_SEL4_GLBL = 0;

    reg JTAG_USER_TDO1_GLBL = 1'bz;
    reg JTAG_USER_TDO2_GLBL = 1'bz;
    reg JTAG_USER_TDO3_GLBL = 1'bz;
    reg JTAG_USER_TDO4_GLBL = 1'bz;

    assign (weak1, weak0) GSR = GSR_int;
    assign (weak1, weak0) GTS = GTS_int;
    assign (weak1, weak0) PRLD = PRLD_int;

    initial begin
	GSR_int = 1'b1;
	PRLD_int = 1'b1;
	#(ROC_WIDTH)
	GSR_int = 1'b0;
	PRLD_int = 1'b0;
    end

    initial begin
	GTS_int = 1'b1;
	#(TOC_WIDTH)
	GTS_int = 1'b0;
    end

endmodule

代码文件(付费下载)

📥 付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 10位加法器 FPGA 设计 Verilog Vivado

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员