赞
踩
名称:十字路口交通灯控制器带左转灯Verilog代码Quartus仿真(文末获取)
软件:Quartus
语言:Verilog
代码功能:
(1)设计任务—交通灯控制器
利用VerilogHDL语言设计一个十字路口交通灯控制器,其示意图如下图1所示,A方向与B方向各设红(R),黄(Y),绿(G),和左拐(L)四种灯,四种灯按合理的顺序亮灭,并能将灯亮的时间以倒计时的形式显示出来。
两个方向这种灯亮的时间应该能够非常方便地进行设置和修改,此外假设A方向是主干路,车流量大,因此A方向同行的时间应该比B方向长一些。
图1
(2)交通的控制器状态表
交通灯控制器的状态转换表如表1所示,表中1表示灯亮,0表示灯灭。A方向和B方向的红、黄、绿和左拐灯分别用R1、Y1、G1、L1和R2、Y2、G2、L2来表示。
A方向 | B方向 | ||||||
绿灯 (G1) | 黄灯 (Y1) | 左拐灯 (L1) | 红灯 (R1) | 绿灯 (G2) | 黄灯 (Y2) | 左拐灯 (L2) | 红灯 (R2) |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 |
0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 |
0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
从状态转换表中可以看出,每个方向四种灯依次按如下顺序点亮,并不断循环:
绿灯- 黄灯 左拐灯 黄灯 红灯。
并且没个方向红灯亮的时间与另一方向绿、黄、左拐、黄灯亮的时间相等。黄灯所起的作用是用来在绿灯和左拐灯后进行缓冲,以提醒行人该方向马上要禁行了。
其中A方向红、绿、黄、左拐灯亮的时间分别为:55秒、40秒、5秒和15秒,B方向红、绿、黄、左拐灯亮的时间分别为:65秒、30秒、5秒和15秒。要求输出的灯亮时间用BCD码。
A是55秒,B是65秒(因为A是主干路)
1. 工程文件
2. 程序文件
3. 程序编译
4. RTL图
5. Testbench(仿真代码)
6. 仿真图
整体仿真图
分频模块仿真图
状态机控制模块仿真图
显示模块仿真图
部分代码展示:
//交通灯 module trafic( input clk,//50M input key,//复位 output main_red,//主干道红灯 output main_green,//主干道绿灯 output main_yellow,//主干道黄灯 output main_left,//主干道左转灯 output branch_red,//支干道红灯 output branch_green,//支干道绿灯 output branch_yellow,//支干道黄灯 output branch_left,//支干道左转灯 output [7:0] HEX0,//数码管0 output [7:0] HEX1,//数码管1 output [7:0] HEX2,//数码管2 output [7:0] HEX3//数码管3 ); wire clk_1Hz; wire [7:0] main_cnt; wire [7:0] branch_cnt; //分频模块 div i_div( . clk(clk),//时钟 . clk_1Hz(clk_1Hz)//1Hz );
扫描文章末尾的公众号二维码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。