名称:交通灯的控制和倒计时显示设计Verilog代码VIVADO? MicroZus开发板
软件:VIVADO
语言:Verilog
代码功能:
交通灯的控制和倒计时显示
系统要实现交通灯的变化控制和倒计时显示,系数可以分为三个模块设计:时钟分频模块、交通灯控制模块、数码管显示模块。
时钟分频模块:用于产生计时器的计时频率,计时频率为10KHz,系统时钟为50MHz,将50M分频为10K;
交通灯控制模块:用于在10K的计时频率下,控制红黄绿三个led的亮灭以及对应的倒计时计数;
数码管显示模块:用于显示交通灯控制模块输出的倒计时到数码管上。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在MicroZus开发板验证,MicroZus开发板如下,其他开发板可以修改管脚适配:
演示视频:
设计文档:
系统配置图(不知道是不是这个)
架构/模块描述
系统要实现交通灯的变化控制和倒计时显示,系数可以分为三个模块设计:时钟分频模块、交通灯控制模块、数码管显示模块。
时钟分频模块:用于产生计时器的计时频率,计时频率为10KHz,系统时钟为50MHz,将50M分频为10K;
交通灯控制模块:用于在10K的计时频率下,控制红黄绿三个led的亮灭以及对应的倒计时计数;
数码管显示模块:用于显示交通灯控制模块输出的倒计时到数码管上。
实验结果
见下面仿真图
计时器精度
计时时钟为10KHz,精度为0.1ms。
1. 工程文件
1. 程序文件
2. 管脚约束
3. 程序编译
4. RTL图
5. 分模块仿真
6.1分频模块仿真
模块代码
Testbench
仿真图
6.2交通灯控制模块仿真
模块代码
Testbench
仿真图
6.3数码管显示模块仿真
模块代码
Testbench
仿真图
部分代码展示:
`timescale?1ns?/?1ps ////////////////////////////////////////////////////////////////////////////////// //?Company:? //?Engineer:? //? //?Create?Date:?2019/08/13?22:53:09 //?Design?Name:? //?Module?Name:?clk_div //?Project?Name:? //?Target?Devices:? //?Tool?Versions:? //?Description:? //? //?Dependencies:? //? //?Revision: //?Revision?0.01?-?File?Created //?Additional?Comments: //? ////////////////////////////////////////////////////////////////////////////////// //50M分频为10K module?clk_div( ????input?clk_50M, ????input?reset_n, ????output?reg?clk_10K ????); reg?[31:0]?count=32'd0; always@(posedge?clk_50M?or?negedge?reset_n)? ????if(!reset_n) ????????count<=32'd0; ????else ????????if(count>=32'd4999) ????????????count<=32'd0; ????????else???????? ????????????count<=count+32'd1; always@(posedge?clk_50M?or?negedge?reset_n)? ????if(!reset_n) ????????clk_10K<=0; ????else ????????if(count>=32'd2499) ????????????clk_10K<=1; ????????else???????? ????????????clk_10K<=0; endmodule
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1101