交通灯定时器与全加器设计 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 输出,检查半加器级联和进位逻辑。
演示视频
配套演示视频展示工程的运行过程,便于结合 Vivado 工程文件、仿真波形和 Basys 3 管脚配置理解交通灯定时器及全加器的输入输出关系。仿真图/仿真说明/设计文档图片
工程配有交通灯和全加器的 testbench、Vivado 仿真工程及波形文件,并提供 RTL 结构图、管脚分配图和仿真图等设计资料。交通灯仿真可用于观察分频节拍、计时变化、交通灯状态及数码管输出之间的时序关系;全加器仿真可用于检查 A、B、Cin 不同组合下 S 和 Cout 的逻辑结果。

















部分代码
以下展示顶层模块 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
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » 交通灯定时器与全加器设计 Verilog Vivado