名称:十字路口交通灯控制器带左转灯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是主干路)
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
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 );
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=526
991