收藏 分享(赏)

EDA课程设计十字路口红绿灯模拟.doc

上传人:HR专家 文档编号:7551962 上传时间:2019-05-21 格式:DOC 页数:14 大小:268KB
下载 相关 举报
EDA课程设计十字路口红绿灯模拟.doc_第1页
第1页 / 共14页
EDA课程设计十字路口红绿灯模拟.doc_第2页
第2页 / 共14页
EDA课程设计十字路口红绿灯模拟.doc_第3页
第3页 / 共14页
EDA课程设计十字路口红绿灯模拟.doc_第4页
第4页 / 共14页
EDA课程设计十字路口红绿灯模拟.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、课题名称:简易十字路口车流量模拟及红绿灯控制学生姓名:班级 : 学号 :指导教师:项目功能:1、 自动模拟简易十字路口(只两个方向通行)的车流状况2、 根据当前的车流状况确定红绿灯的时常(可变)以最快的疏散交通3、 增添交通管制功能:所有路口禁行,指示灯闪烁4、 通过数码管将每个路口的停车数量和交通灯的时常 倒 计时显示出来;交通灯通过指示灯显示5、 特点:自动模拟一简易十字路口的交通状况,程序运行后即不需再进行其他的控制,可以从数码管上看到当前的交通状况项目原理框图1、 本项目主要分为 3 个模块:十字路口停车数的统计、交通灯时控制信号长及功能控制、数码管显示2、 原理框图各子模块的设计及验

2、证停车数统计模块 Car-wave:顶层图其中 Car-counter 模块由模 4 计数器和加法器 counter100 实现模 4 计数器有元件定制方式实现(略)Counter100 由 VHDL 代码编写,其代码如下停车数统计模块Car-wave交通灯时长和功能控制模块lamp数码管显示模块SMG1十字路口的停车数停车数交通灯时长控制信号控制信号library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter100 isport(clk:in std_logic; -时钟信号se

3、l:in std_logic_vector(1 downto 0); -加法/减法功能选择信号dataIn:in std_logic_vector(1 downto 0); -加法/减法器输入num11,num12:out std_logic_vector(3 downto 0);-计数器结果end counter100;architecture bhv of counter100 issignal dn11,dn12:std_logic_vector(3 downto 0);signal din:std_logic_vector(3 downto 0);Counter100 说明:由 sel

4、 信号决定执行加法还是减法功能,sel 为00 时执行加法功能,sel 为 01 时执行减法功能;sel 信号由lamp(交通灯)模块生成;该加法/减法器的输入为 lpm_counter4的计数值beginprocess(clk,dataIn)begin din10-din) then dn110) then dn114) then dn110 then t10 then t2=t2-1;t1=“1001“; elsif (t1=“0000“ and t2=“0000“ and enemy=0 and en=1) then load=0;fuc=fuc+1;end if;end if;end

5、if;end if;end process; time1 =t1;time2 =t2; flash =lamp_rgy(6);red1 =lamp_rgy(5);yellow1 =lamp_rgy(4);green1 =lamp_rgy(3);red2 =lamp_rgy(2);yellow2 =lamp_rgy(1);green2 =lamp_rgy(0);end bhv;交通灯时长的确定是根据当前排队车辆数目除以 2 再加 5 得到的功能验证1、 波形仿真;Grid Size:100.0ns End Time:20.0usen=1,enemy=0,flash=0,sel1=01,sel2=

6、00,lamp1=001,lamp2=100;time=17状态:路口 1 绿灯,路口 2 红灯 en=1,enemy=0,flash=0,sel1=00,sel2=00,lamp1=010,lamp2=100;time=5状态:路口 1 黄灯,路口 2 红灯en=1,enemy=0,flash=0,sel1=00,sel2=00,lamp1=010,lamp2=001;time=17状态:路口 1 黄灯,路口 2 绿灯2、 下载验证:添加了数码管显示电路后的下载验证管脚分配信号 管脚Clk1(lamp 时钟) P122Clk2(数码管时钟) P125En P95下载主要验证了交通灯能否正确的

7、执行各功能之间的转换以及交通灯时长是否会根据车辆书发生变化,经验证能正确的实现设计目的数码管显示模块 SMG1:显示路口车辆数及交通灯时长倒计时由模 6 计数器,3-6 译码器,6-1 多路选择器、 7449 构成顶层图:这部分在以前的实验中使用过多次,基本原理已十分清楚,在这里不在赘述Enemy P92red1,green1,yellow1(路口 1 指示灯)P23,P22,P21red2,green2,yellow2(路口 2 指示灯)P20,P19,P18daIn11(daIn11) P72,P73,P78,P79信号 管脚daIn12(daIn12) P86,P87,P88,P89Fl

8、ash(交通管制指示灯) P9sel110 P41,P39Sel210 P32,P31eq0,eq1(显示时间)(数码管片选信号)P96,P97qaqg(数码管段选信号 ) P51,P49,P48,P47,P46,P44,P43项目总的顶层图及功能验证进行功能验证的时候主要进行了实验箱上的下载验证,其中管脚分配的情况在上图中已有显示;经验证能正确的实现设计目的,设计完成操作手册:显示状态说明:运行时数码管上的 P8 和 P102 显示交通灯时长变化;P96 和 P97 显示路口 1 的停车数量的变化;P100 和 P101 显示路口2 的停车数量的变化;指示灯 P23 P22 P21 对应路口

9、 1 的红黄绿灯得状态,P20 P19 P1 对应路口 2 的红黄绿灯的状态,P9 对应交通管制信号操作说明:该程序的控制按键共有两个 en 和 enemy,接在电平开关 P95 和 P92 上;各按键的状态和对应的功能如下en enemy 执行功能 显示状态1 0 正常运转 交通灯,车辆数,时长有规律的变化1 1 紧急状况,交通管制 两个路口同时亮红灯,指示灯闪烁,停车数逐渐增加,时长显示为 00 X 废弃状态不工作 交通灯灭,时长显示为 0,车辆数显式为 0实验日志在整个综合实验中遇到过很多问题,比如频率的选取、交通灯功能的自动转换等等;下面我分别介绍一下在每个模块中遇到的主要问题及解决方

10、法,和做完整个设计后的总体感受停车数统计模块 Car-wave:在该模块出现的问题主要有两个1、 模 4 计数器和 counter100 的频率的选取:设计要求counter100 的频率要远低于模 4,以此实现随机性;但在波形仿真的时候却发现选取不同的频率时会出现意外情况:counter100 从模 4 计数器读取的值会大于 4 甚至更大,在数码管上无法正确显示;分析问题可能出在时钟信号不稳定上;经多次试验发现,当 counter100 的频率是模 4 的七次分频时效果最佳;因此单独设计了一个 50%占空比的 7 次分频器(这在最后的综合设计时仍被淘汰掉),在最后的综合设计中二者选取的相同的

11、时钟频率,实现了相对的随机性2、 进行加法或减法计数时的进位和借位的判断:这里主要是一开始遗漏了一些情况,对判断条件设定有误;后结合波形图进行了修改解决了这个问题交通灯时长和功能控制模块 lamp1、 红绿黄灯之间的自动切换:设计要求交通灯之间能自动的切换以实现不同的功能,通过增加控制信号 fuc(两位 2 进制)实现,每当交通灯时长变到 0 的时候,fuc 的值加 1;fuc 四个不同的值刚好对应交通灯四种不同的状态:fuc 路口 1 路口 200 绿灯 红灯01 黄灯 红灯10 红灯 绿灯11 红灯 黄灯2、 红绿灯时长装载或是产生倒计时的确定:红绿灯时长有两个改变发式:产生时长倒计时和切

12、换到另一时长;在设计时一开始是将这两部分分别写到两个进程中,后来报错误:不能再两个进程中对同一信号的值进行更改;当把它们放到同一个进程中时问题就是怎么确定不同情况下时间的改变方式,经过对程序的仔细分析增加了一个中间信号 load 来控制:当 load=0 时进行时长的切换,load=1 时时长递减 1;并且在时长切换后将load 值设为 1 这样在下一个时钟周期就能正确的实现时长递减 1 了;在时长减为 0 时将 load 设为 0 再进行时长的切换,很好的实现了这部分的设计3、 红绿灯时长的确定:黄灯时长固定的设为了 5s;绿灯的时长则根据路口的等待车辆数确定;经过多次测试发现将绿灯的时长设

13、为(路口等待车辆数目/2)+5 能较好的疏散交通在数码管显示模块和最后的综合设计中没出现什么大的问题实验总结1、 整个项目的设计花费自己了很多时间,在这中间我学到了很多东西,同时也复习了前面所学的计数器、加法器、分频器和数码管显示电路等等;其中实验的大部分内容都是通过 VHDL 编写的,加深了自己对 VHDL 语言的了解,比如其中进程语句process 的使用,中间信号的定义和使用方法等; 同时通过本次实验,也锻炼了自己独立设计程序的能力;在本次试验中我很重视功能划分以及各模块的封装,将整个实验分成了三个子模块,这有利于程序的检测和修改;实验中由于自己对红绿灯模型不是很熟悉,在设计绿灯的时间时是通过很多测试才得到合理的结果,这个过程消耗了自己很多时间;2、 总体来看本次设计,只是十分简单的模拟了简化后的十字路口车辆行驶场景:只能东西和南北两个方向通行,交通灯只有三个状态(红、黄、绿) ;同时中间关于车辆数量的统计和红绿灯时长计算都进行了很多简化,不一定能反映出真实的情况,整个设计还有很大的修改空间。

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

当前位置:首页 > 企业管理 > 管理学资料

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


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

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

道客多多©版权所有2020-2025营业执照举报