1、 1 EDA 课程设计 题目: 交通灯控制器的设计 学院: 信息科学技术学院 专业: 电子信息工程 姓名: 同组: 指导老师: 2 一、一、 设计题目设计题目 交通灯控制器的设计 二、二、 设计功能:设计功能: 实现高速公路与乡间小路的交叉路口红绿灯的控制 三、具体功能要求:三、具体功能要求: 1、只有在小路上发现汽车时,高速公路上的交通灯才可能变成 红灯。 2、当汽车行驶在小路上时,小路的交通灯保持为绿灯,但不能 超过给定的延迟时间。 (注:这段时间定义为 20 秒时间) 3、高速公路灯转为绿灯后,即使小路上有汽车出现,而高速公 路上并无汽车,也将在给定时间内保持高速公路绿灯。 (注:这段时
2、间定义为 60 秒时间) 3 4、交通信号灯的 4 种状态如下表: A B C D 高速交通灯 绿(60 秒) 黄(5 秒) 红(20 秒) 红(5 秒) 小道交通灯 红 红 绿 黄 四,设计思路四,设计思路 根据交通信号灯的变化可以有四种状态, 分别为 A,B,C,D输入为 XLB 即判断小路是否有车, 当小路有车时再判断此时大路的绿灯状态,如 果绿灯的状态还没结束,那么小路此时为红色,当高速路 60s 结束后 在经过 5s 的黄灯, 在跳转到 C 状态即小路变为绿灯, 大路变为红灯, 当小路 20s 过后再经过 5s 的黄灯跳转到 D 状态,大路变为绿灯小路 变为红灯, 采用赋值的方法来计
3、数, 当计数到想要值得时候在令 CLR 清零,状态也是采用赋值的方法实现不同状态的变化。 各输入端口和输出端口及变量信号的说明: 输入端 CLK XLB 意义 时钟信号 小路是否有车 输出端 GSR GSY GSG XLR XLY XLG 意义 高速红灯 高速黄灯 高速绿灯 小路红灯 小路黄灯 小路绿灯 变量或信号 CLR S 意义 清零变量 计时变量 4 五,源程序的设计五,源程序的设计 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JTDKZ IS PORT(CLK:IN
4、 STD_LOGIC; XLB:IN STD_LOGIC; GSR,GSY,GSG,XLR,XLY,XLG:OUT STD_LOGIC); END ENTITY JTDKZ; ARCHITECTURE ART OF JTDKZ IS 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 为时钟计时
5、器) 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=GSR=0;GSY=0;GSG=1; BR=1;BY=0;BG=0; IF(XLB=1) THEN-判断小路是否有车 IF(S=“111011“) THEN-判断大路通行是否满 60 秒 STATE=B;CLR:=0; -大路满 60 秒,计时清零,转到状态 B ELSE STATE=A;CLR:=1; -大路不满 60 秒,继续状态 A END IF; ELSE STATEGSR=0;GSY=1;GSG=0; XLR=1;XLY=0;XLG=0; 5 IF S=“000100“ THEN-判断大路黄灯是否满 5 秒 STATE=C;CLR:=0; -满 5 秒,计时清零,跳转到 C 状态 ELSE STATEGSR=1;GSY=0;GSG=0; XLR=0;XLY=0;XLG=1; IF (XLB=1)THEN-判断小路是否有车 IF S=“010011“ THEN-判断大路通行是否满 20 秒 STATE=D;CLR:=0; -满 20 秒,计时清零