交通灯控制器vhdl程序设计方案.docVIP

  • 5
  • 0
  • 约2.92千字
  • 约 9页
  • 2017-11-14 发布于江苏
  • 举报
交通灯控制器vhdl程序设计方案

交通灯控制器 实验目的: 1、学会使用VHDL语言编程解决实际问题; 2、实现高速公路与乡间小路的交叉路口红绿灯的控制; 3、熟悉MAX-plusⅡ的使用。 实验设备: PC 机一台 实验原理与内容: 实现高速公路与乡间小路的交叉路口红绿灯的控制。 功能如下要求: 1.只有在小路上发现汽车时,高速公路上的交通灯才可能变为红灯。 2.当汽车行驶在小路上时、小路的交通灯保持为绿灯,但不能超过给定的延迟时间。 〔 注;这段时间定义为20S时间)。 高速公路灯转为绿灯后,即使小路上有汽车出现,而高速公路上并无汽车,也将在给定的时间内保持高速公路绿灯。 (注:这段时间定义为60S)。 程序流程图: 实验步骤: 在C盘以后的盘上建一个文件夹,后缀名不能有中文。 打开MAX-plusⅡ,单击file,在new中选择text editor file,单击ok打开文本编辑框。 保存到新建的文件夹中,名称与实体一致,类型为 .vhd 。 在编辑框中输入程序,保存,置顶(file-project-set project current file); 编译MAX-plusⅡ-compiler-star,如果有错误,可根据错误提示修改源程序,直到编译没有错误。 波形编辑MAX-plusⅡ-Wavefrom editor-Enter Nodes from Snf-list- = -ok; 设置仿真信号(时钟信号,输入信号),保存。 仿真simulator,保存,改变输入信号仿真。 程序: LIBRARY IEEE; --库和程序包 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JTDKZ IS --实体JTDKZ的说明 PORT(CLK:IN STD_LOGIC; --时钟信号 SB:IN STD_LOGIC; --小路有无车信号(SB=1:小路有车) MR,MY,MG,BR,BY,BG:OUT STD_LOGIC);--交通灯信号 END ENTITY JTDKZ; ARCHITECTURE ART OF JTDKZ IS--JTDKZ的结构体说明 TYPE STATE_TYPE IS(A,B,C,D);--定义信号 SIGNAL STATE:STATE_TYPE; BEGIN CNT:PROCESS(CLK) IS VARIABLE CLR:BIT; --在进程中定义变量CLR(CLR=0:计时清零) VARIABLE S:STD_LOGIC_VECTOR(0 TO 5); --在进程中定义变量S(S为时钟计时器) BEGIN IF(CLKEVENT AND CLK=1)THEN--判断时钟信号上升沿 IF CLR=0THEN--当CLR=0时计时变量清零 S:=000000; ELSE S:=S+1; END IF; CASE STATE IS --状态A为大路通车(绿灯),小路禁止通车(红灯) WHEN A=MR=0;MY=0;MG=1; BR=1;BY=0;BG=0; IF(SB=1) THEN--判断小路是否有车 IF(S=111011) THEN--判断大路通行是否满60秒 STATE=B;CLR:=0; --大路满60秒,计时清零,转到状态B ELSE STATE=A;CLR:=1; --大路不满60秒,继续状态A END IF; ELSE STATE=A;CLR:=1;--小路没车,大路一直通车 END IF; --状态B为大路禁止通车(黄灯),小路禁止通车(红灯) WHEN B=MR=0;MY=1;MG=0; BR=1;BY=0;BG=0; IF S=000100 THEN--判断大路黄灯是否满5秒 STATE=C;CLR:=0; --满5秒,计时清零,跳转到C状态 ELSE

文档评论(0)

1亿VIP精品文档

相关文档