基于FPGA的智能交通灯控制器.docx

上传人:b****6 文档编号:6580648 上传时间:2023-01-08 格式:DOCX 页数:6 大小:58.70KB
下载 相关 举报
基于FPGA的智能交通灯控制器.docx_第1页
第1页 / 共6页
基于FPGA的智能交通灯控制器.docx_第2页
第2页 / 共6页
基于FPGA的智能交通灯控制器.docx_第3页
第3页 / 共6页
基于FPGA的智能交通灯控制器.docx_第4页
第4页 / 共6页
基于FPGA的智能交通灯控制器.docx_第5页
第5页 / 共6页
点击查看更多>>
下载资源
资源描述

基于FPGA的智能交通灯控制器.docx

《基于FPGA的智能交通灯控制器.docx》由会员分享,可在线阅读,更多相关《基于FPGA的智能交通灯控制器.docx(6页珍藏版)》请在冰豆网上搜索。

基于FPGA的智能交通灯控制器.docx

基于FPGA的智能交通灯控制器

数字逻辑课程设计报告

题目:

基于FPGA的智能交通灯控制器

课程名称:

数字逻辑课程设计

专业班级:

学号:

姓名:

报告日期:

计算机科学与技术学院

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”

[2:

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,主道信号灯接口

outputreg[2:

0]CL,支道信号灯接口

output[7:

0]ACOUNT,存放主道两个时间数字的8421码

output[7:

0]BCOUNT,存放支道两个时间数字的8421码

(ACOUNT、BCOUNT整合到顶层文件b[15:

0]中,方便调用七段显示模块)

3】模块内部流程图

424模块3.七段显示模块

 

【1】显示原理

使用同步扫描电路,对4位数码管的控制端口进行扫描,每一个时刻只有一个数码管亮,只要设置足够快的频率扫描,由于眼睛的视觉停留效应,就会使得显示结果达到4位同时亮的效果。

【2】输入信号

inputwire[15:

0]x,存放了主、支道时间数字的4*4位8421码

inputwireRST,复位信号

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全部消失了。

不知道如此表达是否合适,这是我的理解。

③交通灯贴近生活,特别是在这个学车潮席卷的时代,所以设计交通灯控制系统感到很亲切。

估计以后看到马路上的交通灯就会心潮澎湃。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1