- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
交通灯控制器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)