资源描述
《EDA技术》
课程设计报告
题 目: 交通信号控制器的设计
班 级:
学 号:
姓 名:
同组人员:
指导教师:
年 月 日
《EDA技术》课程设计成绩评定
成绩评定: (百分制)
指导教师签字:
评阅时间:
目 录
1 设计要求与目的 1
1.1 设计要求 1
1.2 设计目的 1
2 方案设计 1
2.1 设计思路 1
2.2 设计总体框图 2
2.3 状态分析表 3
3 电路的设计 3
3.1 主控模块的设计 3
3.2 计数器模块的设计 6
3.3 显示控制器的设计 9
3.4 顶层文件原理图 10
4 系统仿真 11
5 硬件调试与结果分析 11
6 设计总结 13
参考文献 13
交通信号控制器的设计
1 设计要求与目的
1.1 设计要求
用EDA设计一个简单的交通灯控制器,具有如下功能:
(1)设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。
(2)用红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号。
(3)主干道处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。 主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。
(4)在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。
1.2 设计目的
(1)掌握十字路口交通灯控制的设计原理,并能够运用VHDL编程语言编写出实
(2)验程序,进一步对所学的EDA知识进行掌握与实际应用。 学会在MAX+plus Ⅱ软件环境中仿真,熟悉软件的基本操作和运行环境。
(3)锻炼自己获取信息的能力,以及能够独立自主的思考和解决问题的能力。
2 方案设计
2.1 设计思路
(1)主、支干道用传感器检测车辆到来情况,实验电路用逻辑开关代替。
(2)45秒、25秒、5秒定时信号可用顺计时,也可用倒计时,计时起始信号由主控电路给出,定时结束信号也输入到主控电路,由主控电路启、闭三色信号灯或启动另一计时电路。
(3)主控电路是核心,这是一个时序电路,其输入信号为:车辆检测信号(A,B); 45秒、25秒、5秒定时信号(C,D,E)。其状态转化如图2-1所示:
主道有车或支道没车但45秒未到
5秒已到
5秒已到
主道绿灯亮
支道红灯亮
主道无车,支道有车,或主,
支道均有车,45秒已到
主道红灯亮
支道黄灯亮
未过5秒
主道黄灯亮
支道红灯亮
支道无车,或主支道均有车,25秒已到
5秒已到
主道红灯亮
支道绿灯亮
支道有车,主道无车,或主支道均有车,45秒未到
图 2-1 状态转换图
2.2 设计总体框图
发光二极管
控制器
分频电路
分位电路
计数器
七段数码管
译码电路
倒计时数
Clk
图2-2 设计框图
具体控制过程为支干道没有车来,主干道处于常允许通行的状态,此时主干道亮绿灯,支干道亮红灯,支干道有车来,即主、支干道均有车,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,且在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡。由于主、支干道有45秒和25秒得放行时间,以及每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,所以设计45秒、25秒和5秒计时电路,均采用倒计时。考虑到显示的方便,每个计时电路又由计数器和码型转换电路组成。码型转换电路是把对应的二进制码直接转换成数码管显示时的码字,采用数码管的静态显示。
2.3 状态分析表
表2-1 状态分析表
主干道
支干道
指示灯
亮灯时间
指示灯
亮灯时间
红灯亮
30s
绿灯亮
25s
红灯亮
黄灯亮
5s
绿灯亮
45s
红灯亮
50s
黄灯亮
5s
红灯亮
3 电路的设计
3.1 主控模块的设计
由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄、左拐允许四盏信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外,左拐灯亮允许车辆向左拐弯。信号灯变换次序为:主支干道交替允许通行,主干道每次放行40S,亮5S红灯让行驶中的车辆有时间停到禁行线外,左拐放行15秒,亮5S红灯;支干道放行30S,亮5S黄灯,左拐放行15秒,亮5S红灯,其中主支干道的红黄绿灯表示如MR、MY、MG、BR、BY、BG。根据下面源程序生成如图3-1的控制器元件图
图 3-1 控制器元件图
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY JTDKZ IS
PORT(CLK,SM,SB:IN STD_LOGIC;
MR,MY,MG,BR,BY,BG: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 S:INTEGER RANGE 0 TO 45;
VARIABLE CLR,EN:BIT;
BEGIN
IF(CLK'EVENT AND CLK='1') THEN
IF CLR='0'THEN
S:=0;
ELSIF EN='0'THEN
S:=S;
ELSE
S:=S+1;
END IF;
CASE STATE IS
WHEN A=>MR<='0';MY<='0';MG<='1';
BR<='1';BY<='0';BG<='0';
IF(SB AND SM)='1'THEN
IF S=45 THEN
STATE<=B;CLR:='0';EN:='0';
ELSE
STATE<=A;CLR:='1';EN:='1';
END IF;
ELSIF(SB AND (NOT SM))='1'THEN
STATE<=B;CLR:='0';EN:='0';
ELSE
STATE<=A;CLR:='1';EN:='1';
END IF;
WHEN B=>MR<='0';MY<='1';MG<='0';
BR<='1';BY<='0';BG<='0';
IF S=5 THEN
STATE<=C;CLR:='0';EN:='0';
ELSE
STATE<=B;CLR:='1';EN:='1';
END IF;
WHEN C=>MR<='1';MY<='0';MG<='0';
BR<='0';BY<='0';BG<='1';
IF(SM AND SB)='1'THEN
IF S=25 THEN
STATE<=D;CLR:='0';EN:='0';
ELSE
STATE<=C;CLR:='1';EN:='1';
END IF;
ELSIF SB='0'THEN
STATE<=D;CLR:='0';EN:='0';
ELSE
STATE<=C;CLR:='1';EN:='1';
END IF;
WHEN D=>MR<='1';MY<='0';MG<='0';
BR<='0';BY<='1';BG<='0';
IF S=5 THEN
STATE<=A;CLR:='0';EN:='0';
ELSE
STATE<=D;CLR:='1';EN:='1';
END IF;
END CASE;
END IF;
END PROCESS CNT;
END ARCHITECTURE ART;
3.2 计数器模块的设计
这里计数器的计数范围为0—45S 。计到45后,下一个时钟沿回复到0,开始下一轮计数。根据下面源程序生成如图3-2的45s计数器元件图,当计数器及时45s后,主干道由绿转黄,支干道由红转绿。
图 3-2 45s计数器元件图
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT45S IS
PORT (SB,CLK,EN45:IN STD_LOGIC;
DOUT45M,DOUT45B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END ENTITY CNT45S;
ARCHITECTURE ART OF CNT45S IS
SIGNAL CNT6B:STD_LOGIC_VECTOR(5 DOWNTO 0);
BEGIN
PROCESS(SB,CLK,EN45) IS
BEGIN
IF SB='0' THEN CNT6B<=CNT6B-CNT6B-1;
ELSIF(CLK'EVENT AND CLK='1')THEN
IF EN45='1' THEN CNT6B<=CNT6B+1;
ELSIF EN45='0' THEN CNT6B<=CNT6B-CNT6B-1;
END IF;
END IF;
END PROCESS;
PROCESS(CNT6B)IS
BEGIN
CASE CNT6B IS
WHEN"000000"=>DOUT45M<="00111111";DOUT45B<="00111111";
WHEN"000001"=>DOUT45M<="00111111";DOUT45B<="00000110";
WHEN"000010"=>DOUT45M<="00111111";DOUT45B<="01011011";
WHEN"000011"=>DOUT45M<="00111111";DOUT45B<="01001111";
WHEN"000100"=>DOUT45M<="00111111";DOUT45B<="01100110";
WHEN"000101"=>DOUT45M<="00111111";DOUT45B<="01101101";
WHEN"000110"=>DOUT45M<="00111111";DOUT45B<="01111101";
WHEN"000111"=>DOUT45M<="00111111";DOUT45B<="00000111";
WHEN"001000"=>DOUT45M<="00111111";DOUT45B<="01111111";
WHEN"001001"=>DOUT45M<="00111111";DOUT45B<="01101111";
WHEN"001010"=>DOUT45M<="00000110";DOUT45B<="00111111";
WHEN"001011"=>DOUT45M<="00000110";DOUT45B<="00000110";
WHEN"001100"=>DOUT45M<="00000110";DOUT45B<="01011011";
WHEN"001101"=>DOUT45M<="00000110";DOUT45B<="01001111";
WHEN"001110"=>DOUT45M<="00000110";DOUT45B<="01100110";
WHEN"001111"=>DOUT45M<="00000110";DOUT45B<="01101101";
WHEN"010000"=>DOUT45M<="00000110";DOUT45B<="01111101";
WHEN"010001"=>DOUT45M<="00000110";DOUT45B<="00000111";
WHEN"010010"=>DOUT45M<="00000110";DOUT45B<="01111111";
WHEN"010011"=>DOUT45M<="00000110";DOUT45B<="01101111";
WHEN"010100"=>DOUT45M<="01011011";DOUT45B<="00111111";
WHEN"010101"=>DOUT45M<="01011011";DOUT45B<="00000110";
WHEN"010110"=>DOUT45M<="01011011";DOUT45B<="01011011";
WHEN"010111"=>DOUT45M<="01011011";DOUT45B<="01001111";
WHEN"011000"=>DOUT45M<="01011011";DOUT45B<="01100110";
WHEN"011001"=>DOUT45M<="01011011";DOUT45B<="01101101";
WHEN"011010"=>DOUT45M<="01011011";DOUT45B<="01111101";
WHEN"011011"=>DOUT45M<="01011011";DOUT45B<="00000111";
WHEN"011100"=>DOUT45M<="01011011";DOUT45B<="01111111";
WHEN"011101"=>DOUT45M<="01011011";DOUT45B<="01101111";
WHEN"011110"=>DOUT45M<="01001111";DOUT45B<="00111111";
WHEN"011111"=>DOUT45M<="01001111";DOUT45B<="00000110";
WHEN"100000"=>DOUT45M<="01001111";DOUT45B<="01011011";
WHEN"100001"=>DOUT45M<="01001111";DOUT45B<="01001111";
WHEN"100010"=>DOUT45M<="01001111";DOUT45B<="01100110";
WHEN"100011"=>DOUT45M<="01001111";DOUT45B<="01101101";
WHEN"100100"=>DOUT45M<="01001111";DOUT45B<="01111101";
WHEN"100101"=>DOUT45M<="01001111";DOUT45B<="00000111";
WHEN"100110"=>DOUT45M<="01001111";DOUT45B<="01111111";
WHEN"100111"=>DOUT45M<="01001111";DOUT45B<="01101111";
WHEN"101000"=>DOUT45M<="01100110";DOUT45B<="00111111";
WHEN"101001"=>DOUT45M<="01100110";DOUT45B<="00000110";
WHEN"101010"=>DOUT45M<="01100110";DOUT45B<="01011011";
WHEN"101011"=>DOUT45M<="01100110";DOUT45B<="01001111";
WHEN"101100"=>DOUT45M<="01100110";DOUT45B<="01100110";
WHEN OTHERS=>DOUT45M<="00000000";DOUT45B<="00000000";
END CASE;
END PROCESS;
END ARCHITECTURE ART;
3.3 显示控制器的设计
根据从主控制器检测的到的路况,从而使不同路况显示不同时间,根据下面源程序生成如图3-3所示显示器模块元件图,当主干道绿灯支干道红灯时,显示器45s计时,主干道黄灯支干道红灯时,显示器5s计时,当主干道红灯支干道绿灯时,显示器25s计时,当主干道红灯支干道黄灯时,显示器5s计时
图3-3 显示器模块元件图
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY XSKZ IS
PORT(EN45,EN25,EN05M,EN05B:IN STD_LOGIC;
AIN45M,AIN45B:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
AIN25M,AIN25B,AIN05:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
DOUTM,DOUTB:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END ENTITY XSKZ;
ARCHITECTURE ART OF XSKZ IS
BEGIN
PROCESS(EN45,EN25,EN05M,EN05B)IS
BEGIN
IF EN45='1'THEN
DOUTM<=AIN45M(7 DOWNTO 0);DOUTB<=AIN45B(7 DOWNTO 0);
ELSIF EN05M='1'THEN
DOUTM<=AIN05(7 DOWNTO 0);DOUTB<=AIN05(7 DOWNTO 0);
ELSIF EN25='1'THEN
DOUTM<=AIN25M(7 DOWNTO 0);DOUTB<=AIN25B(7 DOWNTO 0);
ELSIF EN05B='1'THEN
DOUTM<=AIN05(7 DOWNTO 0);DOUTB<=AIN05(7 DOWNTO 0);
END IF;
END PROCESS;
END ARCHITECTURE ART;
3.4 顶层文件原理图
图 3-4 顶层文件原理图
根据设计要求及生成的各模块元件图绘制成如图3-4所示的顶层文件原理图
4 系统仿真
图4-1主控制器仿真图
由图可以看出,当SB、SM、为高电平时,主干道由黄灯转向红灯,支干道由红灯转向绿灯,符合设计基本要求
图4-2 全局仿真
由图可以看出,当主干道由绿转黄时,支干道亮红灯,支干道由绿转黄时,主干道亮红灯。
5 硬件调试与结果分析
主干道在前45s,无论s是否有信号,都不改变状态,到达45s且s有信号,状态改变,主干道黄灯支干道红灯5s后转为主干道红灯支干道绿灯。再经25s状态改变,主干道红灯支干道黄灯5s后转为主干道绿灯乡村道红灯,继续等待。
图5-1
主干道亮绿灯,支干道两红灯,数码管开始45s计时
图5-2
主干道亮黄灯,支干道两红灯,数码管5s计时
图5-3
主干道亮红灯,支干道亮绿灯,数码管25s计时
6 设计总结
EDA设计我感觉程序调试、试验软件、硬件熟悉最重要。在编完各模块程序之后,编译查错最初有三十几个错误,有输入错误、语法错误。一遍一遍的变异查错,直到没有错误。必须注意工程名和实体名一致,不然一般会出错。在没有错误之后可以进行波型仿真。若与理想的不同,再查看程序,有无原理上的编辑错误或没有查出的输入错误。
并且,在本次课程设计的过程中还应该多联系下实际情况,要了解实际情况下交通信号灯的工作情况,才能更好的完成此次的课程设计。在今后的工作和学习中,我们不能仅仅把目光停留在课本上,要多理论联系实际。有的时候,理论上是正确的东西放到现实中去,可能由于种种因素的制约,并不能达到实际的效果,还需要我们进行相应的修改才能完成要求。这次的课程设计使我巩固了以前学习到的知识,还使我掌握了以前没有掌握的知识,同时锻炼了自己的能力。
参考文献
[1] 柴诚敬,刘国维,李阿娜,《化工原理课程设计》,天津,天津科学技术出版社,1994年
[2] 边肇祺,《模式识别(第二版)》,北京,清华大学出版社,1988年
[3] 李永忠,《几种小波变换的图像处理技术》,西北民族学院学报(自然科学版),2001年
[4] 褚振勇,《FPGA设计与应用》,西安,西安电子科技大学出版社,2003
[5] 夏宇闻,《Verilog数字系统设计教程》,北京,北京航空航天大学出版社,2008年
[6] 夏宇闻,《复杂数字电路与系统的Verilog HDL设计技术》,北京,清华大学出版社,1998年
展开阅读全文