版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 . . . 课题名称:简易十字路口车流量模拟与红绿灯控制学生:班级 : 学号 :指导教师:项目功能:1、 自动模拟简易十字路口(只两个方向通行)的车流状况2、 根据当前的车流状况确定红绿灯的时常(可变)以最快的疏散交通3、 增添交通管制功能:所有路口禁行,指示灯闪烁4、 通过数码管将每个路口的停车数量和交通灯的时常 倒 计时显示出来;交通灯通过指示灯显示5、 特点:自动模拟一简易十字路口的交通状况,程序运行后即不需再进行其他的控制,可以从数码管上看到当前的交通状况项目原理框图控制信号1、 本项目主要分为3个模块:十字路口停车数的统计、交通灯时长与功能控制、数码管显示2、 原理框图控制信号交通
2、灯时长停车数数码管显示模块SMG1十字路口的停车数交通灯时长和功能控制模块lamp停车数统计模块Car-wave控制信号各子模块的设计与验证 停车数统计模块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
3、); -加法/减法功能选择信号 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由VHDL代码编写,其代码如下begin process(clk,dataIn
4、) begin din<="00"&dataIn; if rising_edge(clk) then if sel="00" then -00时做加法 if(dn11<10-din) then dn11<=dn11+din; -判断是否有进位 elsif(dn11>10-din) then dn11<=dn11+din-10;dn12<=dn12+1; end if; elsif sel="01" then -01时做减法if(dn11+din<4)and dn12>0) the
5、n dn11<=dn11+6+din;dn12<=dn12-1;-判断是否要借位 elsif(dn11>4) then dn11<=dn11-4+din; else dn11<="0000" end if; end if; end if; num11<=dn11; num12<=dn12;end process;end bhv;Counter100说明:由sel信号决定执行加法还是减法功能,sel为00时执行加法功能,sel为01时执行减法功能;sel信号由lamp(交通灯)模块生成;该加法/减法器的输入为lpm_counter4的
6、计数值功能验证1、 波形仿真:Grid Size:100ns,End Time:10.0us信号说明:clk1: Counter100的时钟信号 COUNT EVERY:100.0ns clk2:模4的时钟信号 COUNT EVERY:15.0ns raod1,road2:两个路口的等待车辆数目 sel1,sel2 : Counter100功能选择信号2、 下载验证:添加数码管显示电路后的下载验证管脚分配信号管脚clk1(Counter100的时钟信号) P122clk2(模4和七段译码器时钟)P128sel11.0,sel21.0P86,P87,P92,Mp95eq0,eq1,eq3,eq4
7、(数码管片选信号)P96,P97,P99,P100qa.qg(数码管段选信号)P51,P49,P48,P47,P46,P44,P43仿真结论:两个路口的车辆能正确的增加和减少,该模块设计正确 交通灯时长和功能控制模块lamp该模块的主要功能是:根据输入的路口等待车辆数自动调整红绿灯时长;产生时长倒计时;自动的进行两个路口红-黄-绿灯之间的转换该模块通过VHDL语言设计实现,其代码如下library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity lamp isport( clk,enemy,en :
8、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交通灯信号red2,green2,yellow2:out std_logic; -路口2交通灯信号 time1,time2 :out std_logic_vecto
9、r(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交通灯时长信号signal lamp_rgy:std_logic_vector(6 downto 0);-交通指示灯signal fuc :std_logic
10、_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" then sel1<="01&q
11、uot;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 东西通行时 lam
12、p_rgy<="0100001" elsif fuc="11" then sel1<="00"sel2<="00"-red1 yellow2 lamp_rgy<="0100010" end if; end if; end if; end process;- 确定交通灯时长 产生时长倒计时模块 process(clk,en,enemy,fuc,load) begin if (rising_edge(clk) and en='1') then if load=
13、'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'
14、&daIn21(3 downto 1)+5; t2<='0'&daIn22(3 downto 1); load<='1' elsif fuc="11" then t1<="0101" t2<="0000" load<='1' end if; else if enemy='1' then t1<="0000"t2<="0000" elsif enemy='0'
15、then if t1>0 then t1<=t1-1; elsif t2>0 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; fla
16、sh <=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=00,lamp1=001,lamp
17、2=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(数码管时钟)P125EnP95EnemyP92red1,green1,yellow1(路口1指示灯)P23,P22,P21red
18、2,green2,yellow2(路口2指示灯)P20,P19,P18daIn11(daIn11)P72,P73,P78,P79信号管脚daIn12(daIn12)P86,P87,P88,P89Flash(交通管制指示灯)P9sel11.0P41,P39Sel21.0P32,P31eq0,eq1(显示时间)(数码管片选信号)P96,P97qa.qg(数码管段选信号)P51,P49,P48,P47,P46,P44,P43下载主要验证了交通灯能否正确的执行各功能之间的转换以与交通灯时长是否会根据车辆书发生变化,经验证能正确的实现设计目的 数码管显示模块SMG1:显示路口车辆数与交通灯时长倒计时由模
19、6计数器,3-6译码器,6-1多路选择器、7449构成顶层图:这部分在以前的实验中使用过多次,基本原理已十分清楚,在这里不在赘述项目总的顶层图与功能验证进行功能验证的时候主要进行了实验箱上的下载验证,其中管脚分配的情况在上图中已有显示;经验证能正确的实现设计目的,设计完成操作手册:显示状态说明:运行时数码管上的P8和P102显示交通灯时长变化;P96和P97显示路口1的停车数量的变化;P100和P101显示路口2的停车数量的变化;指示灯P23 P22 P21对应路口1的红黄绿灯得状态,P20 P19 P1对应路口2的红黄绿灯的状态,P9对应交通管制信号操作说明:该程序的控制按键共有两个en和e
20、nemy,接在电平开关P95和P92上;各按键的状态和对应的功能如下enenemy执行功能显示状态10正常运转交通灯,车辆数,时长有规律的变化11紧急状况,交通管制两个路口同时亮红灯,指示灯闪烁,停车数逐渐增加,时长显示为00X废弃状态不工作交通灯灭,时长显示为0,车辆数显式为0实验日志在整个综合实验中遇到过很多问题,比如频率的选取、交通灯功能的自动转换等等;下面我分别介绍一下在每个模块中遇到的主要问题与解决方法,和做完整个设计后的总体感受停车数统计模块Car-wave:在该模块出现的问题主要有两个1、 模4计数器和counter100的频率的选取:设计要求counter100的频率要远低于模
21、4,以此实现随机性;但在波形仿真的时候却发现选取不同的频率时会出现意外情况:counter100从模4计数器读取的值会大于4甚至更大,在数码管上无确显示;分析问题可能出在时钟信号不稳定上;经多次试验发现,当counter100的频率是模4的七次分频时效果最佳;因此单独设计了一个50%占空比的7次分频器(这在最后的综合设计时仍被淘汰掉),在最后的综合设计中二者选取的一样的时钟频率,实现了相对的随机性2、 进行加法或减法计数时的进位和借位的判断:这里主要是一开始遗漏了一些情况,对判断条件设定有误;后结合波形图进行了修改解决了这个问题交通灯时长和功能控制模块lamp1、 红绿黄灯之间的自动切换:设计要求交通灯之间能自动的切换以实现不同的功能,通过增加控制信号fuc(两位2进制)实现,每当交通灯时长变到0的时候,fuc的值加1;fuc四个不同的值刚好对应交通灯四种不同的状态:fuc路口1路口200绿灯红灯01黄灯红灯10红灯绿灯11红灯黄灯2、 红绿灯时长装载或是产生倒计时的确定:红绿灯时长有两个改变发式:产生时长倒计时和切换到另一时长;在设计时一开始是将
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 喉梗阻急救与护理配合
- 抓岩机司机创新应用能力考核试卷含答案
- 耐蚀衬胶工安全实践强化考核试卷含答案
- 石质文物修复师持续改进强化考核试卷含答案
- 26年全球抗癌随访服务适配
- 医学26年:多系统萎缩诊疗进展 查房课件
- 26年靶向疗效双语服务
- 26年恶性胸水疗效评估规范
- 医学26年:医疗废物处理要点解读 查房课件
- 体育与学科的交叉-体育运动促进学科学习
- 2026年同等学力申硕英语模拟卷
- 摩根士丹利 -半导体:中国AI加速器-谁有望胜出 China's AI Accelerators – Who's Poised to Win
- 2026辽宁沈阳汽车集团有限公司所属企业华亿安(沈阳)置业有限公司下属子公司招聘5人笔试历年参考题库附带答案详解
- 2025~2026学年江苏镇江市第一学期高三“零模”化学试卷
- 2026年公路养护工职业技能考试题库(新版)
- 宜宾市筠连县国资国企系统2026年春季公开招聘管理培训生农业考试模拟试题及答案解析
- 2026年福建南平市八年级地生会考考试真题及答案
- 2025-2030非洲智能汽车零部件行业市场供需理解及投资潜力规划分析研究报告
- 2026季华实验室管理部门招聘3人(广东)建设笔试模拟试题及答案解析
- 北京市大兴区瀛海镇人民政府招聘劳务派遣4人考试参考试题及答案解析
- 4.7-北师数学二下第四单元《有多厚》课件
评论
0/150
提交评论