名称:交通灯的控制和倒计时显示设计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
622