• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

交通灯控制器带左转灯Verilog代码Quartus仿真

06/27 09:36
187
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240110155Z21D.doc

共1个文件

名称:交通灯控制器带左转灯Verilog代码Quartus仿真

软件:Quartus

语言:Verilog

代码功能:

利用状态机,按照图1中十字路口交通运行的实际情况,使用 Verilog HDL语言,设计一个交通灯系统控制器。

其中方向1是主干道,车流量大,因此绿灯时间较长;方向2是次干道,绿灯时间较短,两个方向的交通灯变化显示时间,如表1所示。

从表1可以看出每个方向四种灯按“绿灯→黄灯→左转灯→黄灯→红灯”顺序依次点亮,不断循环,且每个方向红灯亮的时间与另一方向绿、黄、左转、黄灯亮的总时间相等。

QQ图片20240110155429.png

假设用“1”表示灯亮,“0”表示灯灭,方向1和方向2的绿灯、黄灯、左转灯和红灯分别用字母G1、Y1、L1、R1和G2、Y2、L2、R2来表示,则该交通灯控制器的功能表,如表2所示。

QQ图片20240110155511.png

2、设计要求

根据图1,设计一个交通灯系统控制器,具体要求如下:

(1)利用状态机,使用 Verilog HDL语言描述实现该交通灯控制器,要求方向1和方向2的红(R)、黄(Y)、绿(G)和左拐(L)四盏灯按照表1和表2的显示时间与功能状态循环亮灭,将灯亮的时间以倒计时的形式显示出来,且能够方便地进行设置和修改,给出 Quartus I平台的编译结果。

(2)画出该状态机的结构框图、状态转换图;

(3)编写测试模块,在 Modelsim上对所设计的交通灯控制器进行仿真,验证所有结果,并给出其时序仿真波形图;要求按照两组不同参数设定,其中一组参数限定为仿真时间2000ns,在100ns前完成复位,CLK时钟激励周期10ns,占空比50%;另一组参数自由选择。

(4)时序波形图中要求将现态变量(current_state)和次态变量? ? (next state)的状态变换值以十进制形式显示,每一个方向上每一种颜色灯亮的持续时间以十进制形式显示出来。

(5)使用系统函数$ monitor、$time,以二进制形式打印待测模块的输出数据,显示当前的时间单位,并给出一段清晰截图。注意:要求图形清晰,建议用 Visio或 Edraw(亿图)画图,直接复制粘贴至word。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

各模块框图

分频模块

状态机控制模块

显示模块

5. Testbench(仿真代码)

仿真参数1

仿真参数2

6. 仿真图(以仿真参数1为例)

整体仿真图

Moniter输出

State状态

分频模块仿真图

状态机控制模块仿真图

显示模块仿真图

部分代码展示:

//交通灯
module?trafic(
input?clk,//时钟
input?key,//复位
output?main_red,//主干道红灯--R1
output?main_green,//主干道绿灯--G1
output?main_yellow,//主干道黄灯--Y1
output?main_left,//主干道左转灯--L1
output?branch_red,//支干道红灯--R2
output?branch_green,//支干道绿灯--G2
output?branch_yellow,//支干道黄灯--Y2
output?branch_left,//支干道左转灯--L2
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
);
//状态机控制模块
state_machine?i_state_machine(
.?clk_1Hz(clk_1Hz),//1Hz
.?key(key),
.?main_red(main_red),
.?main_green(main_green),
.?main_yellow(main_yellow),
.?main_left(main_left),
.?branch_red(branch_red),
.?branch_green(branch_green),
.?branch_yellow(branch_yellow),
.?branch_left(branch_left),
.?main_cnt(main_cnt),
.?branch_cnt(branch_cnt)
);

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=527

  • 2-240110155Z21D.doc
    下载

相关推荐