交通灯定时器与全加器设计 Verilog Vivado

名称:交通灯定时器与全加器设计 Verilog Vivado

软件:Vivado

语言:Verilog

开发板/平台:Basys 3

功能介绍

这是一个基于 Verilog 和 Vivado 的 FPGA 综合设计工程,包含交通灯定时器与一位全加器两个可独立学习和验证的功能模块。交通灯定时器能够完成交通灯状态控制、定时计数以及两位数码管显示,适合用于掌握时钟分频、有限状态控制、倒计时和数码管动态显示等常见 FPGA 外设设计方法。全加器案例则从半加器出发,完成带输入进位的二进制加法,并输出和位 S 与进位 Cout。

工程配套顶层模块、功能子模块、testbench、Vivado 工程文件和管脚约束文件,便于从 RTL 结构、仿真验证到开发板部署逐步学习。交通灯设计包括 clk_div、timer、traffic_ctrl、display_2digit 和 traffic_light_top 等模块;全加器设计包括 half_adder、full_adder、full_adder_top 及对应测试文件。两个案例覆盖组合逻辑与时序逻辑,适合课程设计、Verilog 入门和 Basys 3 实验开发。

运行环境

开发环境为 Xilinx Vivado,设计语言为 Verilog。工程包含交通灯定时器和全加器的 Vivado 项目文件、RTL 源码、仿真 testbench、综合实现生成文件以及 Basys 3 管脚约束,可在 Vivado 中打开相应 XPR 工程后进行源码查看、仿真、综合、实现和比特流生成。

设计思路

工程包含交通灯定时器和全加器两个 Verilog 设计案例。交通灯部分采用模块化结构,将系统时钟处理、定时计数、交通灯状态控制以及两位数码管显示分别组织,先由时钟分频模块产生适合控制逻辑使用的节拍,再由定时器维护倒计时数据,交通灯控制模块根据状态和计时条件切换信号,显示模块负责把计数值转换为动态扫描所需的段选与位选输出。这样的划分便于单独检查计时、状态转换和显示时序,也方便在不同开发板工程中调整时钟参数与管脚约束。

全加器部分以两个半加器和一个或逻辑组成一级全加器。第一级处理 A、B,得到中间和 s1 及进位 c1;第二级将 s1 与 Cin 相加,产生最终和 S 及进位 c2;最终进位由 c1 与 c2 进行或运算得到 Cout。该结构清晰对应全加器的逻辑关系,适合配合 testbench 对所有输入组合进行验证,也可作为多位串行或级联加法器的基础单元。

模块结构

交通灯定时器的顶层为 traffic_light_top,内部连接 clk_div 时钟分频、timer 定时计数、traffic_ctrl 交通灯状态控制和 display_2digit 两位数码管显示模块,traffic_light_tb 用于仿真激励。全加器部分由 full_adder_top 连接 full_adder,full_adder 内部例化两个 half_adder,并通过或逻辑合成最终进位;full_adder_tb 用于对输入组合进行测试。工程同时提供对应的 Vivado XPR 工程文件和 XDC 管脚约束文件。

开发板验证

工程提供 Basys 3 开发板的管脚约束文件,并配有 BASYS3 管脚分配图,可用于 Vivado 工程的引脚配置与上板连接。交通灯定时器部分可结合时钟分频、倒计时显示和交通灯控制逻辑进行验证;全加器部分可通过输入端口施加 A、B、Cin 组合,观察 S 与 Cout 输出,检查半加器级联和进位逻辑。

交通灯定时器与全加器设计 Verilog Vivado 开发板验证图片 BASYS3管脚.JPG

演示视频

配套演示视频展示工程的运行过程,便于结合 Vivado 工程文件、仿真波形和 Basys 3 管脚配置理解交通灯定时器及全加器的输入输出关系。

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

工程配有交通灯和全加器的 testbench、Vivado 仿真工程及波形文件,并提供 RTL 结构图、管脚分配图和仿真图等设计资料。交通灯仿真可用于观察分频节拍、计时变化、交通灯状态及数码管输出之间的时序关系;全加器仿真可用于检查 A、B、Cin 不同组合下 S 和 Cout 的逻辑结果。

交通灯定时器与全加器设计 Verilog Vivado 设计文档图片 image1.png

交通灯定时器与全加器设计 Verilog Vivado 设计文档图片 image10.png

交通灯定时器与全加器设计 Verilog Vivado 设计文档图片 image2.png

交通灯定时器与全加器设计 Verilog Vivado 设计文档图片 image3.png

交通灯定时器与全加器设计 Verilog Vivado 设计文档图片 image4.png

交通灯定时器与全加器设计 Verilog Vivado 设计文档图片 image5.png

交通灯定时器与全加器设计 Verilog Vivado 设计文档图片 image6.png

交通灯定时器与全加器设计 Verilog Vivado 设计文档图片 image7.png

交通灯定时器与全加器设计 Verilog Vivado 设计文档图片 image8.png

交通灯定时器与全加器设计 Verilog Vivado 设计文档图片 image9.png

交通灯定时器与全加器设计 Verilog Vivado 设计文档图片 image1.png

交通灯定时器与全加器设计 Verilog Vivado 设计文档图片 image2.png

交通灯定时器与全加器设计 Verilog Vivado 设计文档图片 image3.png

交通灯定时器与全加器设计 Verilog Vivado 设计文档图片 image4.png

交通灯定时器与全加器设计 Verilog Vivado 设计文档图片 image5.png

交通灯定时器与全加器设计 Verilog Vivado 设计文档图片 image6.png

交通灯定时器与全加器设计 Verilog Vivado 设计文档图片 image7.png

交通灯定时器与全加器设计 Verilog Vivado 设计文档图片 image8.png

部分代码

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

module full_adder(
    input  A,
    input  B,
    input  Cin,
    output S,
    output Cout
);

    wire s1, c1, c2;

    // 第一级半加器:A + B
    half_adder ha1(
        .A(A),
        .B(B),
        .S(s1),
        .C(c1)
    );

    // 第二级半加器:s1 + Cin
    half_adder ha2(
        .A(s1),
        .B(Cin),
        .S(S),
        .C(c2)
    );

    // 进位输出:或门
    assign Cout = c1 | c2;

endmodule

代码文件(付费下载)

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

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

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