基于FPGA的智能交通灯控制器Word格式文档下载.docx
- 文档编号:19594404
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:6
- 大小:58.70KB
基于FPGA的智能交通灯控制器Word格式文档下载.docx
《基于FPGA的智能交通灯控制器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于FPGA的智能交通灯控制器Word格式文档下载.docx(6页珍藏版)》请在冰豆网上搜索。
1.实验目的
通过Verilog的编程,深入了解并掌握可编程芯片的使用技术,完成规定的设计任务,加强对《数字逻辑》课程所学知识的理解,培养学生创造性思维能力和独立解决实际问题的能力。
2.实验内容
用Verilog代码实现智能交通灯信号控制器设计,具体内容及要求如下:
(1)在主干道与次干道公路十字交叉路口,为确保人员、车辆安全、迅速地通过,在交叉路口的每个入口处设置了红、绿、黄三色信号灯。
红灯禁止通行;
绿灯允许通行;
黄灯亮则给行驶中的车辆有时间行驶到禁行线之外。
(2)主干道和次干道公路十字交叉路口都安装了车辆检测传感器(C),要求如下:
(A)在每日的早、晚高峰时段,双边“CN”主干道通行时间是次干道通行时间的2倍;
(B)全天主、次干道有车一方有优先通行权;
(3)主干道公路路口安装有人员通过请求按钮(PQ),—旦有请求信息,控制器应给与放行。
(4)Online控制信号由交通控制中心发出,(Online=1)一旦它有效,则主干道放行,十字交叉路口控制器“失效”,Online=0十字交叉路口控制器恢复控制权。
(6)在每次由绿灯亮变成红灯亮的转换过程中间,要亮5s时间的黄灯作为过渡。
(7)用“开关”代替传感器作为人员通过请求和车辆是否到来的信号。
用红、绿、黄三种颜色的发光二极管作交通灯。
(8)要求显示时间,倒计时。
3.实验环境
PC个人计算机、ISE14.2软件、Adept软件、开发板Basys2、USB下载线
4.实验设计方案
4.1输入输出与引脚分配说明
4.1.1输入信号:
PQ,人员请求信号一一接板子“E2”开关
ONLINE,控制中心接管信号——接“N3”
SET,控制器开关一一接“P11”
RST,复位开关一一接“L3”
RUSH,高峰判断开关——接“F3”
CM,主道车辆传感器一一接“G3”
CC,支道车辆传感器一一接“B4”
CLK,系统时钟一一接“B8”
4.1.2输出信号:
[2:
0]ML,ML0~2主道绿、黄、红灯——分别接“G1、P4、N4”
0]CL,CL0~1支道绿、黄、红灯一一分别接“P7、M11、M5”
[6:
0]a_to_g,七段数码管接口——a_to_g0~6分别接“M12、L13、P12、N11、
N14、H12、L14”
[3:
0]an,四选一控制接口——an0~4分别接“F12、J12、M13、K14
4.2模块图
4.2.1模块层级图
顶层模块
422模块1•时钟生成模块
423模块2.控制模块
【1】输入信号
inputwireclkls,近似1s的时钟信号
inputwirePQ,人员请求信号
inputwireONLINE,控制中心请求信号
inputwireSET,控制器开关信号
inputwireRST,复位信号
inputwireRUSH,高峰信号
inputwireCM,主道车辆检测信号
inputwireCC,支道车辆检测信号
【2】输出信号
outputreg[2:
0]ML,主道信号灯接口
0]CL,支道信号灯接口
output[7:
0]ACOUNT,存放主道两个时间数字的8421码
0]BCOUNT,存放支道两个时间数字的8421码
(ACOUNT、BCOUNT整合到顶层文件b[15:
0]中,方便调用七段显示模块)
3】模块内部流程图
424模块3.七段显示模块
【1】显示原理
使用同步扫描电路,对4位数码管的控制端口进行扫描,每一个时刻只有一个数码管亮,只要设置足够快的频率扫描,由于眼睛的视觉停留效应,就会使得显示结果达到4位同时亮的效果。
【2】输入信号
inputwire[15:
0]x,存放了主、支道时间数字的4*4位8421码
inputwireCLK,扫描时钟信号(传入的是clk_scar)
【3】输出信号
outputreg[6:
0]a_to_g,接七段数码管引脚
outputreg[3:
0]an,接选择显示引脚
【4】流程图
5.实验步骤与观察记录
找到相关资料,确认大致结构为自顶向下式设计,开始编写verilog代码。
语法错误检查无错误之后进行引脚分配,然后下载到板子上进行测试。
开始结果不符合预期,就回到verilog代码进行修改调试,再重复上面步骤,直到实现某个模块功能。
然后逐步增加功能,调试、修改、测试,渐渐趋于完整。
6.实验过程分析、处理和讨论
6.1时钟的生成
由于系统时钟周期过短,不利于实际红绿灯的控制,所以必须生成另外的时钟。
采用系统时钟驱动某个寄存器变量自增,然后取该变量某一位的变化作为新的时钟。
而新的时钟又分为“红绿灯控制时钟(clkl)”和“扫描时钟(clk_scan,用于七段数码管显示)”。
6.2绿黄红灯循环亮和RUSH(高峰)的实现方法
经借鉴,采用的方法是:
先把主道和支道的红、黄、绿灯亮的“秒数”分别存在6个寄存器变量中,以方便后面的调用,即预置秒数。
加上判断RUSH请求信号分别预置秒数。
按钮红、黄、绿灯点亮与否各用1个bit位控制。
循环亮的方法就是用一个case语句和有关判断来实现。
6.3控制器开关按钮(SET)、复位按钮(RST)的设定
用一个变量en的值对应以上两开关打开与否,然后用case语句处理不同按钮工作的情况。
6.4人员请求(PQ)、控制中心请求(ONLINE)、主(支)道优先通行的简单实现思路
这些功能的实现开始也是用变量en的值控制,这样的话一旦出现PQ或ONLINE请求灯会突变,不符合实际要求。
所以改放在“主干道(支道)控制系统”这一always过程中,用if语句进行判断。
7.实验方案的改进意见
在PQ请求和ONLINE请求的理解上,开始出现了偏差,所以在后面修改起来有点不顺,思路显得略微混乱。
而且最后发现有个bug,就是当PQ和ONLINE同时按下又复位后不会按正常情况倒计时。
方案自顶向下的设计使得模块之间的功能清晰明了,但是第二个主模块中还容纳了各种请求判断,它们中的有些放到另外模块中也许更好。
8.心得体会
①最主要的是对verilog语言的理解的深入。
为了做实验不得不查阅有关的教程。
在这个过程中,起码知道了什么是“阻塞赋值”个“非阻塞赋值”和它们的区别,以及case语句的运用,能使功能很方便地实现,代码也易读。
©
verilog语言是硬件设计语言,所以不像C语言,对算法精妙性探索要求更高。
Verilog语言设计中,更主要的是逻辑上的合理性和连贯性,以及变量和硬件之间的联系,有时候小小地修改一个变量的属性可能就让warning全部消失了。
不知道如此表达是否合适,这是我的理解。
③交通灯贴近生活,特别是在这个学车潮席卷的时代,所以设计交通灯控制系统感到很亲切。
估计以后看到马路上的交通灯就会心潮澎湃。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA 智能 交通灯 控制器
![提示](https://static.bdocx.com/images/bang_tan.gif)