EDA大作业实验报告交通控制器设计_第1页
EDA大作业实验报告交通控制器设计_第2页
EDA大作业实验报告交通控制器设计_第3页
EDA大作业实验报告交通控制器设计_第4页
EDA大作业实验报告交通控制器设计_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

班级021291学号02129057EDA试验汇报学院电子工程学院专业电子信息工程学生姓名02129057导师姓名纠博

交通控制器设计目标设计一个十字路口交通控制系统,其东西,南北两个方向除了有红、黄、绿灯指示是否允许通行外,还设有时钟,以倒计时方式显示每一路允许通行时间,绿灯,黄灯,红灯连续时间分别是70、5和75秒。当东西或南北两路中任一道上出现特殊情况,比如有消防车,警车要去执行任务,此时交通控制系统应可由交警手动控制立刻进入特殊运行状态,即两条道上全部车辆皆停顿通行,红灯全亮,时钟停顿计时,且其数字在闪烁。当特殊运行状态结束后,管理系统恢复原来状态,继续正常运行。设计思绪与实施方案1.设计目标思绪整理①在十字路口两个方向上各设一组红、绿、黄灯,显示次序为其中一方向(东西方向)是绿灯、黄灯、红灯;另一方向(南北方向)是红灯、绿灯、黄灯。②设置一组数码管,以倒计时方式显示允许通行或禁止通行时间,其中绿灯、黄灯、红灯连续时间分别是70s、5s和75s。③当各条路上任意一条上出现特殊情况时,如当消防车、救护车或其余需要优先放行车辆经过时,各方向上均是红灯亮,倒计时停顿,且显示数字在闪烁。当特殊运行状态结束后,控制器恢复原来状态,继续正常运行。2.原理分析本系统主要由分频器,计数器,控制器,倒计时显示器等电路组成。分频器将晶振送来50MHZ信号变为1HZ时钟信号;计数器实现总共150秒计数,它也是交通控制系统一个大循环;控制器控制系统状态转移和红黄绿灯信号输出;倒计时显示电路实现75秒,70秒及5秒倒计时和显示功效。整个系统工作时序受控制器控制,是系统关键。基于此,做出交通控制系统转移图以下:其中,s0:A方向绿灯亮,B方向红灯亮,此状态连续70秒;S1:A方向黄灯亮,B方向红灯亮,此状态连续5秒;S2:A方向红灯亮,B方向绿灯亮,此状态连续70秒;S3:A方向红灯亮,B方向黄灯亮,此状态连续5秒;S4:紧急制动状态,A方向红灯亮,B方向红灯亮,当hold=‘0‘时进入这种状态。 当紧急制动信号无效时,状态按照s0—s1—s2—s3—s0循环;当紧急制动信号有效时,立刻进入s4,两个方向红灯全亮,计数器停顿计数。设计过程1.电路设计交通控制系统顶层原理图以下列图示,它主要由50MHZ分频器模块,控制器,倒计时计数器模块,7段数码管组成。(1)分频器设计分频器外部接口如右图所表示:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityfp50mis port( clk:instd_logic; reset:instd_logic; clk_out:outstd_logic );endentityfp50m;architecturebehavioroffp50mis signalcount:std_logic_vector(31downto0); signalQ:std_logic;begin process(reset,clk) begin if(reset='0')then count<=(others=>'0'); --复位计数器elsifclk'eventandclk='1'then count<=count+1; if(count=25000000)then Q<=notQ; --反置输出 count<=(others=>'0'); endif; endif; clk_out<=Q; endprocess;endarchitecturebehavior;因为50MHz过大,在这里就不展示分频时序图。(2)控制器设计控制器control逻辑符号以下列图所表示。其中,clk为时钟输入信号;hld为紧急制动信号;ared,agreen,ayellow为东西方向驱动红灯,绿灯及黄灯指示输出信号;bred,bgreen,byellow分别为南北方向驱动红灯。绿灯及黄灯指示输出信号。控制器按照上边状态转移图所表示控制系统时序,即为个方向红,绿,黄灯亮灭时间。controlVHDL描述文件control.vhd:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycontrolisport(clk,hold:instd_logic;ared,agreen,ayellow,bred,bgreen,byellow:outstd_logic);endcontrol;architecturebehaviorofcontrolistypestate_typeis(s0,s1,s2,s3,s4);signalcurrent_state,next_state:state_type;signalcounter:std_logic_vector(6downto0);beginsynch:processbeginwaituntilclk'eventandclk='1';ifhold='0'then--当紧急制动信号有效时,计数器停顿工作counter<=counter;else--当紧急制动信号无效时,计数器进行周期为150s计数ifcounter<149thencounter<=counter+1;elsecounter<=(others=>'0');endif;endif;endprocess;process--状态机状态转移描述beginwaituntilclk'eventandclk='1';current_state<=next_state;endprocess;state_trans:process(current_state)begincasecurrent_stateiswhens0=>ifhold='0'thennext_state<=s4;elseifcounter<69thennext_state<=s0;elsenext_state<=s1;endif;endif;whens1=>ifhold='0'thennext_state<=s4;elseifcounter<74thennext_state<=s1;elsenext_state<=s2;endif;endif;whens2=>ifhold='0'thennext_state<=s4;elseifcounter<144thennext_state<=s2;elsenext_state<=s3;endif;endif;whens3=>ifhold='0'thennext_state<=s4;elseifcounter<149thennext_state<=s3;elsenext_state<=s0;endif;endif;whens4=>ifhold='0'thennext_state<=s4;elseifcounter<69thennext_state<=s0;elsifcounter<74thennext_state<=s1;elsifcounter<144thennext_state<=s2;elsifcounter<149thennext_state<=s3;endif;endif;endcase;endprocess;output:process(current_state)--每种状态下两个路口红绿灯状态描述begincasecurrent_stateiswhens0=>ared<='0';agreen<='1';ayellow<='0';bred<='1';bgreen<='0';byellow<='0';whens1=>ared<='0';agreen<='0';ayellow<='1';bred<='1';bgreen<='0';byellow<='0';whens2=>ared<='1';agreen<='0';ayellow<='0';bred<='0';bgreen<='1';byellow<='0';whens3=>ared<='1';agreen<='0';ayellow<='0';bred<='0';bgreen<='0';byellow<='1';whens4=>ared<='1';agreen<='0';ayellow<='0';bred<='1';bgreen<='0';byellow<='0';whenothers=>NULL;endcase;endprocess;endbehavior;control时序图由图能够看出紧急制动有效,即’hold’=0时,两个方向都是红灯。而紧急制动无效时,为s1状态,一方为绿灯,另一方红灯。(3)倒计时计数器upm75(x)设计倒计时计数器upm75(x)逻辑符号以下列图所表示。其中,clk,cr分别为时钟和清零端,en0~en2分别表示倒计数75s,70s,5s使能端,ql[3..0],qh[3..0],oc分别为BCD码个位,十位跟进位输出。VHDL描述upm75(x).vhd以下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityupm75is--实体申明port(clk:instd_logic;en0,en1,en2:instd_logic;cr,hld:instd_logic;ql,qh:outstd_logic_vector(3downto0);oc:outstd_logic);endupm75;architecturebehaviorofupm75is--结构体signalcoul,couh:std_logic_vector(3downto0);beginprocess(cr,clk,hld,en0,en1,en2)beginifcr='0'then--异步清零coul<="0000";couh<="0000";elsifclk'eventandclk='1'thenifhld='1'then--紧急制动无效时,计数器正常计数ifen0='1'then--en0有效,倒计时75sif(coul=0andcouh=0)then--减法记到00后,重新指数75coul<="0101";couh<="0111";elsifcoul=0then--不然,个位记到0时置为9,十位减1coul<="1001";couh<=couh-1;elsecoul<=coul-1;--不然,个位减1endif;endif;ifen1='1'then--en1有效,倒计时70sif(coul=0andcouh=0)thencoul<="0000";couh<="0111";elsifcoul=0thencoul<="1001";couh<=couh-1;elsecoul<=coul-1;endif;endif;ifen2='1'then--en2有效,倒计时5sif(coul=0andcouh=0)thencoul<="0101";couh<="0000";elsifcoul=0thencoul<="1001";couh<=couh-1;elsecoul<=coul-1;endif;endif;elsecoul<=coul;--紧急制动有效时,各位保持不变couh<=couh;endif;endif;endprocess;process(coul,couh)beginif(coul=0andcouh=0)then--减到00时,借位输出oc<='1';elseoc<='0';endif;endprocess;ql<=coul;qh<=couh;endbehavior;倒计时时序仿真图以下:1.75s倒计时由图能够看出紧急制动有效时,停顿计时,一直连续在75s,满足要求。2.70s倒计时3.5s倒计时(4)七段数码管设计分频器外部接口如右图所表示:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYDECL7SISPORT(A:INSTD_LOGIC_VECTOR(3DOWNTO0);hold:INSTD_LOGIC;clk:INSTD_LOGIC;LED7S:OUTSTD_LOGIC_VECTOR(6downto0));END;ARCHITECTUREoneOFDECL7SISBEGINPROCESS(A)BEGINif(hold='0'andclk='1')thenLED7S<="0000000";elsif(hold='1')thenCASEAISWHEN"0000"=>LED7S<="0111111";WHEN"0001"=>LED7S<="0000110";WHEN"0010"=>LED7S<="1011011";WHEN"0011"=>LED7S<="1001111";WHEN"0100"=>LED7S<="1100110";WHEN"0101"=>LED7S<="110

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论