基于CPLD的交通灯系统设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于CPLD 的交通灯系统设计
The Design of Traffic Light Based on CPLD
联系方式:jencharn@ QQ:327761220
摘 要 交通灯系统已成为现代社会中必不可少的控制系统,本文应用
CPLD 设计交通灯系统,其特点是速度快,精确高。 关键词 复杂可编程逻辑,交通灯
一、 交通灯系统介绍
在一个主次干道的十字路口,东西和南北方向各设置一个红,黄,绿三种颜色的交通灯。红灯亮表示禁止通行,绿灯亮表示可以通行。在绿灯变红灯时先要求黄灯亮5秒钟,以便让后来车辆准备停车。由于主干道车辆较多,次干道车辆较少,所以要求主干道处于通行状态的时间要长一些,为30秒;而次干道通行时间为20秒。
二、 设计思路
基于交通灯系统的情况,系统可以分为两大功能:红绿灯显示和相应时间显示,具体如下:
1. 主次干道交通灯对应时间关系图:
2.数码管显示时间为倒计时显示 主绿,次红 主黄,次红 主红,次绿 主红,次黄
三、 设计模型及模块
由模型可得程序可以分为三大模块:分频模块,控制模块,译码显示模块
四、程序设计算法
--交通灯系统
Y N
--jtd.vhd
--最后完成日期06/05/28
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY jtd IS
PORT( start, clk: IN std_logic;
digih,digil: OUT std_logic_vector(6 DOWNTO 0); --数码管高低位
led : OUT std_logic_vector(5 DOWNTO 0));--主红,绿,黄;次红,绿,黄
END jtd;
ARCHITECTURE rtl OF jtd IS
TYPE STATES IS (s1,s2,s3,s4);
SIGNAL state:STATES;
BEGIN
PROCESS(clk)
V ARIABLE en:std_logic_vector(1 downto 0); --状态控制信号
V ARIABLE dh:integer RANGE 0 to 3;
V ARIABLE dl:integer RANGE 0 to 9;
begin
IF start='0' THEN
dh:=3;dl:=0;en:="00";
ELSIF rising_edge(clk) THEN
IF state=s1 THEN --主绿,次红
IF dh=0 and dl=0 THEN
en:="01";dl:=5;
ELSIF dl=0 THEN
dl:=9;
dh:=dh-1;
ELSe dl:=dl-1;
END IF;
END IF;
IF state=s2 THEN --主黄,次红
IF dl=0 THEN
en:="10";dh:=2;
ELSe dl:=dl-1;
END IF;
END IF;
IF state=s3 THEN --主红,次绿
IF dh=0 and dl=0 THEN
en:="11";dl:=5;
ELSIF dl=0 THEN
dl:=9;
dh:=dh-1;
ELSe dl:=dl-1;
END IF;
END IF;
IF state=s4 THEN --主红,次黄
IF dl=0 THEN
en:="00";dh:=3;
ELSe dl:=dl-1;
END IF;
END IF;
END IF;
CASE dh IS --数码管高位译码WHEN 0=>digih<="0111111";
WHEN 1=>digih<="0000110";
WHEN 2=>digih<="1011011";
WHEN 3=>digih<="1001111";
WHEN OTHERS=>NULL;
END CASE;
CASE dl IS --数码管低位译码WHEN 0=>digil<="0111111";
WHEN 1=>digil<="0000110";
WHEN 2=>digil<="1011011";
WHEN 3=>digil<="1001111";
WHEN 4=>digil<="1100110";
WHEN 5=>digil<="1101101";
WHEN 6=>digil<="1111101";
WHEN 7=>digil<="0000111";
WHEN 8=>digil<="1111111";
WHEN 9=>digil<="1101111";
WHEN OTHERS=>NULL;
END CASE;
CASE en IS --交通灯状态控制
WHEN "00"=>state<=s1;led<="010100";
WHEN "01"=>state<=s2;led<="001100";
WHEN "10"=>state<=s3;led<="100010";
WHEN "11"=>state<=s4;led<="100001";
WHEN OTHERS=>NULL;
END CASE;
END PROCESS;
END rtl;
六、选择器件及使用情况
器件选择ALTER公司的AMAX7000S系列中的EPM7128SLC84-6:
Chip/ Input Output Bidir Shareable
POF Device Pins Pins Pins LCs Expanders % Utilized jtd EPM7128SLC84-6 2 20 0 80 66 62 %
七、仿真波形