ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:233.93KB ,
资源ID:11352064      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11352064.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(EDA课程设计十字路口红绿灯模拟.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

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

2、理框图交通灯时长各子模块的设计及验证 停车数统计模块Car-wave: 顶层图其中Car-counter模块由模4计数器和加法器counter100实现模4计数器有元件定制方式实现(略)library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity counter100 isport(clk:in std_logic; -时钟信号 sel:in std_logic_vector(1 downto 0); -加法/减法功能选择信号 dataIn:in std_logic_vector(1 downto

3、 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由VHDL代码编写,其代码如下begin process(clk,dataIn) begin din=00&dataIn; if rising_edge(clk) then if

4、sel=00 then -00时做加法 if(dn1110-din) then dn1110-din) then dn11=dn11+din-10;dn12=dn12+1; end if; elsif sel=01 then -01时做减法if(dn11+din0) then dn11=dn11+6+din;dn124) then dn11=dn11-4+din; else dn11=0000; end if; end if; end if; num11=dn11; num12=dn12;end process;end bhv; Counter100说明:由sel信号决定执行加法还是减法功能,

5、sel为00时执行加法功能,sel为01时执行减法功能;sel信号由lamp(交通灯)模块生成;该加法/减法器的输入为lpm_counter4的计数值功能验证1、 波形仿真:Grid Size:100ns,End Time:10.0us信号说明:clk1: Counter100的时钟信号 COUNT EVERY:100.0 ns clk2:模4的时钟信号 COUNT EVERY:15.0 ns raod1,road2:两个路口的等待车辆数目 sel1,sel2 : Counter100功能选择信号2、 下载验证:添加数码管显示电路后的下载验证管脚分配信号管脚clk1(Counter100的时钟

6、信号) P122clk2(模4和七段译码器时钟)P128sel11.0,sel21.0P86,P87,P92,Mp95eq0,eq1,eq3,eq4(数码管片选信号)P96,P97,P99,P100qa.qg(数码管段选信号)P51,P49,P48,P47,P46,P44,P43仿真结论:两个路口的车辆能正确的增加和减少,该模块设计正确 交通灯时长和功能控制模块lamp该模块的主要功能是:根据输入的路口等待车辆数自动调整红绿灯时长;产生时长倒计时;自动的进行两个路口红-黄-绿灯之间的转换该模块通过VHDL语言设计实现,其代码如下library ieee;use ieee.std_logic_1

7、164.all;use ieee.std_logic_unsigned.all;entity lamp isport( clk,enemy,en :in std_logic;- enemy是交通管制信号,en使能信号daIn11,daIn12:in std_logic_vector(3 downto 0);-南北路口的等待车辆数daIn21,daIn22:in std_Logic_vector(3 downto 0);-东西路口的等待车辆数 flash :out std_logic; -交通管制信号 red1,green1,yellow1:out std_logic; -路口1交通灯信号red

8、2,green2,yellow2:out std_logic; -路口2交通灯信号 time1,time2 :out std_logic_vector(3 downto 0);-交通灯时长 sel1 :out std_logic_vector(1 downto 0);-南北路口控制信号 sel2 :out std_logic_vector(1 downto 0); -东西路口控制信号 );end lamp;architecture bhv of lamp is signal t1,t2 :std_logic_vector(3 downto 0);-the length of time交通灯时长

9、信号signal lamp_rgy:std_logic_vector(6 downto 0);-交通指示灯signal fuc :std_logic_vector(1 downto 0);-功能转换控制信号signal load :std_logic; -交通灯时长装载信号begin -交通灯和车流量控制信号的产生 process(clk,en,enemy) begin if enemy=1 then lamp_rgy(5 downto 0)=100100;lamp_rgy(6)=clk; elsif rising_edge(clk) then if en=1 then if fuc=00 t

10、hen sel1=01;sel2=00;-green1 red2 南北通行时 lamp_rgy=0001100; elsif fuc=01 then sel1=00;sel2=00;-yellow1 red2 lamp_rgy=0010100; elsif fuc=10 then sel1=00;sel2=01;-red1 green2 东西通行时 lamp_rgy=0100001; elsif fuc=11 then sel1=00;sel2=00;-red1 yellow2 lamp_rgy=0100010; end if; end if; end if; end process;- 确定

11、交通灯时长 产生时长倒计时模块 process(clk,en,enemy,fuc,load) begin if (rising_edge(clk) and en=1) then if load=0 then if fuc=00 then t1=0&daIn11(3 downto 1)+5; t2=0&daIn12(3 downto 1); load=1; elsif fuc=01 then t1=0101; t2=0000; load=1; elsif fuc=10 then t1=0&daIn21(3 downto 1)+5; t2=0&daIn22(3 downto 1); load=1;

12、 elsif fuc=11 then t1=0101; t2=0000; load=1; end if; else if enemy=1 then t1=0000;t20 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 if; end if; end process; time1 =t1; time2 =t2; flash =lamp_rgy(6); red1 =lamp_rgy(5); yello

13、w1 =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=00,lamp1=001,lamp2=100;time=17状态:路口1绿灯,路口2红灯 en=1,enemy=0,flash=0,sel1=00,sel2=00,lam

14、p1=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(数码管时钟)P125EnP95EnemyP92red1,green1,yellow1(路口1指示灯)P23,P22,P21red2,green2,yellow2(路口2指示灯)P20,P19,P18daIn11(daIn11)P72,P73,P78,P79信号管脚

15、daIn12(daIn12)P86,P87,P88,P89Flash(交通管制指示灯)P9sel11.0P41,P39Sel21.0P32,P31eq0,eq1(显示时间)(数码管片选信号)P96,P97qa.qg(数码管段选信号)P51,P49,P48,P47,P46,P44,P43下载主要验证了交通灯能否正确的执行各功能之间的转换以及交通灯时长是否会根据车辆书发生变化,经验证能正确的实现设计目的 数码管显示模块SMG1:显示路口车辆数及交通灯时长倒计时由模6计数器,3-6译码器,6-1多路选择器、7449构成顶层图:这部分在以前的实验中使用过多次,基本原理已十分清楚,在这里不在赘述项目总的

16、顶层图及功能验证进行功能验证的时候主要进行了实验箱上的下载验证,其中管脚分配的情况在上图中已有显示;经验证能正确的实现设计目的,设计完成操作手册:显示状态说明:运行时数码管上的P8和P102显示交通灯时长变化;P96和P97显示路口1的停车数量的变化;P100和P101显示路口2的停车数量的变化;指示灯P23 P22 P21对应路口1的红黄绿灯得状态,P20 P19 P1对应路口2的红黄绿灯的状态,P9对应交通管制信号操作说明:该程序的控制按键共有两个en和enemy,接在电平开关P95和P92上;各按键的状态和对应的功能如下enenemy执行功能显示状态10正常运转交通灯,车辆数,时长有规律

17、的变化11紧急状况,交通管制两个路口同时亮红灯,指示灯闪烁,停车数逐渐增加,时长显示为00X废弃状态不工作交通灯灭,时长显示为0,车辆数显式为0实验日志在整个综合实验中遇到过很多问题,比如频率的选取、交通灯功能的自动转换等等;下面我分别介绍一下在每个模块中遇到的主要问题及解决方法,和做完整个设计后的总体感受停车数统计模块Car-wave:在该模块出现的问题主要有两个1、 模4计数器和counter100的频率的选取:设计要求counter100的频率要远低于模4,以此实现随机性;但在波形仿真的时候却发现选取不同的频率时会出现意外情况:counter100从模4计数器读取的值会大于4甚至更大,在

18、数码管上无法正确显示;分析问题可能出在时钟信号不稳定上;经多次试验发现,当counter100的频率是模4的七次分频时效果最佳;因此单独设计了一个50%占空比的7次分频器(这在最后的综合设计时仍被淘汰掉),在最后的综合设计中二者选取的相同的时钟频率,实现了相对的随机性2、 进行加法或减法计数时的进位和借位的判断:这里主要是一开始遗漏了一些情况,对判断条件设定有误;后结合波形图进行了修改解决了这个问题交通灯时长和功能控制模块lamp1、 红绿黄灯之间的自动切换:设计要求交通灯之间能自动的切换以实现不同的功能,通过增加控制信号fuc(两位2进制)实现,每当交通灯时长变到0的时候,fuc的值加1;f

19、uc四个不同的值刚好对应交通灯四种不同的状态:fuc路口1路口200绿灯红灯01黄灯红灯10红灯绿灯11红灯黄灯2、 红绿灯时长装载或是产生倒计时的确定:红绿灯时长有两个改变发式:产生时长倒计时和切换到另一时长;在设计时一开始是将这两部分分别写到两个进程中,后来报错误:不能再两个进程中对同一信号的值进行更改;当把它们放到同一个进程中时问题就是怎么确定不同情况下时间的改变方式,经过对程序的仔细分析增加了一个中间信号load来控制:当load=0时进行时长的切换,load=1时时长递减1;并且在时长切换后将load值设为1这样在下一个时钟周期就能正确的实现时长递减1了;在时长减为0时将load设为

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

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

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