收藏 分享(赏)

课程设计报告:基于FPGA的智能交通灯控制器.doc

上传人:您的好秘书 文档编号:5633411 上传时间:2022-05-27 格式:DOC 页数:10 大小:67.42KB
下载 相关 举报
课程设计报告:基于FPGA的智能交通灯控制器.doc_第1页
第1页 / 共10页
课程设计报告:基于FPGA的智能交通灯控制器.doc_第2页
第2页 / 共10页
课程设计报告:基于FPGA的智能交通灯控制器.doc_第3页
第3页 / 共10页
课程设计报告:基于FPGA的智能交通灯控制器.doc_第4页
第4页 / 共10页
课程设计报告:基于FPGA的智能交通灯控制器.doc_第5页
第5页 / 共10页
亲,该文档总共10页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、数字逻辑课 程 设 计 报 告题目:基于FPGA的智能交通灯控制器课程名称: 数字逻辑课程设计 专业班级: 学 号: 姓 名: 报告日期: 计算机科学与技术学院1. 实验目的通过Verilog的编程,深入了解并掌握可编程芯片的使用技术,完成规定的设计任务,加强对数字逻辑课程所学知识的理解,培养学生创造性思维能力和独立解决实际问题的能力。2. 实验内容用Verilog代码实现智能交通灯信号控制器设计,具体内容及要求如下:(1) 在主干道与次干道公路十字交叉路口,为确保人员、车辆安全、迅速地通过,在交叉路口的每个入口处设置了红、绿、黄三色信号灯。红灯禁止通行;绿灯允许通行;黄灯亮则给行驶中的车辆有

2、时间行驶到禁行线之外。 (2)主干道和次干道公路十字交叉路口都安装了车辆检测传感器(C),要求如下: (A)在每日的早、晚高峰时段,双边“C=1”则主干道通行时间是次干道通行时间的2倍; (B)全天主、次干道有车一方有优先通行权;(3)主干道公路路口安装有人员通过请求按钮(PQ),一旦有请求信息,控制器应给与放行。 (4)Online控制信号由交通控制中心发出,(Online=1)一旦它有效,则主干道放行,十字交叉路口控制器“失效”,Online=0十字交叉路口控制器恢复控制权。(6)在每次由绿灯亮变成红灯亮的转换过程中间,要亮5s时间的黄灯作为过渡。(7)用“开关”代替传感器作为人员通过请求

3、和车辆是否到来的信号。用红、绿、黄三种颜色的发光二极管作交通灯。(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, ML02 主道绿、黄

4、、红灯分别接“G1、P4、N4” 2:0 CL , CL01 支道绿、黄、红灯分别接“P7、M11、M5” 6:0 a_to_g, 七段数码管接口a_to_g06分别接“M12、L13、P12、N11、N14、H12、L14” 3:0 an, 四选一控制接口an04分别接“F12、J12、M13、K14”4.2 模块图4.2.1 模块层级图顶层模块时钟生成控制模块显示模块ONLINE请求判断PQ请求判断高峰判断4.2.2 模块1时钟生成模块输入系统时钟信号 CLK定义计数变量24:0counter取counter不同位生成不同周期的时钟信号clk1、clk_scan输出时钟信号clk1、clk

5、_scan4.2.3 模块2. 控制模块【1】 输入信号input wire clk1s, 近似1s的时钟信号 input wire PQ, 人员请求信号 input wire ONLINE, 控制中心请求信号 input wire SET, 控制器开关信号 input wire RST, 复位信号 input wire RUSH, 高峰信号 input wire CM, 主道车辆检测信号 input wire CC, 支道车辆检测信号【2】 输出信号 output reg 2:0 ML, 主道信号灯接口 output reg 2:0 CL, 支道信号灯接口 output 7:0 ACOUNT

6、,存放主道两个时间数字的8421码 output 7:0 BCOUNT,存放支道两个时间数字的8421码(ACOUNT、BCOUNT整合到顶层文件b15:0中,方便调用七段显示模块)【3】 模块内部流程图输入信号内部参数定义分情况预置主、支道信号灯秒数设定变量en的值代表不同的触发效果时钟触发主干道自动控制过程时钟触发支道自动控制过程连续赋值传出时间参量:assign ACOUNT = numm;assign BCOUNT = numc;输出信号ML、CL、ACOUNT、BCOUNT4.2.4 模块3. 七段显示模块【1】 显示原理使用同步扫描电路,对4位数码管的控制端口进行扫描,每一个时刻只

7、有一个数码管亮,只要设置足够快的频率扫描,由于眼睛的视觉停留效应,就会使得显示结果达到4位同时亮的效果。【2】 输入信号input wire 15:0 x, 存放了主、支道时间数字的4*4位8421码 input wire RST, 复位信号input wire CLK, 扫描时钟信号(传入的是clk_scan)【3】 输出信号 output reg6:0 a_to_g, 接七段数码管引脚 output reg3:0 an, 接选择显示引脚【4】 流程图输入信号内部参数定义s:用于扫描显示digit:存放8421码分段提取b15:0中8421码七段译码过程扫描时钟驱动循环改变s值达到扫描效果设

8、置an3:0的值选择四个数码管是否亮输出信号5. 实验步骤与观察记录找到相关资料,确认大致结构为自顶向下式设计,开始编写verilog代码。语法错误检查无错误之后进行引脚分配,然后下载到板子上进行测试。开始结果不符合预期,就回到verilog代码进行修改调试,再重复上面步骤,直到实现某个模块功能。然后逐步增加功能,调试、修改、测试,渐渐趋于完整。6. 实验过程分析、处理和讨论6.1时钟的生成由于系统时钟周期过短,不利于实际红绿灯的控制,所以必须生成另外的时钟。采用系统时钟驱动某个寄存器变量自增,然后取该变量某一位的变化作为新的时钟。而新的时钟又分为“红绿灯控制时钟(clk1)”和“扫描时钟(c

9、lk_scan,用于七段数码管显示)”。6.2 绿黄红灯循环亮和RUSH(高峰)的实现方法经借鉴,采用的方法是:先把主道和支道的红、黄、绿灯亮的“秒数”分别存在6个寄存器变量中,以方便后面的调用,即预置秒数。加上判断RUSH请求信号分别预置秒数。按钮红、黄、绿灯点亮与否各用1个bit位控制。循环亮的方法就是用一个case语句和有关判断来实现。6.3 控制器开关按钮(SET)、复位按钮(RST)的设定用一个变量en的值对应以上两开关打开与否,然后用case语句处理不同按钮工作的情况。6.4 人员请求(PQ)、控制中心请求(ONLINE)、主(支)道优先通行的简单实现思路这些功能的实现开始也是用变

10、量en的值控制,这样的话一旦出现PQ或ONLINE请求灯会突变,不符合实际要求。所以改放在“主干道(支道)控制系统”这一always过程中,用if语句进行判断。7. 实验方案的改进意见在PQ请求和ONLINE请求的理解上,开始出现了偏差,所以在后面修改起来有点不顺,思路显得略微混乱。而且最后发现有个bug,就是当PQ和ONLINE同时按下又复位后不会按正常情况倒计时。方案自顶向下的设计使得模块之间的功能清晰明了,但是第二个主模块中还容纳了各种请求判断,它们中的有些放到另外模块中也许更好。8. 心得体会最主要的是对verilog语言的理解的深入。为了做实验不得不查阅有关的教程。在这个过程中,起码知道了什么是“阻塞赋值”个“非阻塞赋值”和它们的区别,以及case语句的运用,能使功能很方便地实现,代码也易读。verilog语言是硬件设计语言,所以不像C语言,对算法精妙性探索要求更高。Verilog语言设计中,更主要的是逻辑上的合理性和连贯性,以及变量和硬件之间的联系,有时候小小地修改一个变量的属性可能就让warning全部消失了。不知道如此表达是否合适,这是我的理解。交通灯贴近生活,特别是在这个学车潮席卷的时代,所以设计交通灯控制系统感到很亲切。估计以后看到马路上的交通灯就会心潮澎湃。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 计划文书

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报