交通灯控制器的设计EDA课程设计.docx
- 文档编号:5602555
- 上传时间:2022-12-28
- 格式:DOCX
- 页数:12
- 大小:136.36KB
交通灯控制器的设计EDA课程设计.docx
《交通灯控制器的设计EDA课程设计.docx》由会员分享,可在线阅读,更多相关《交通灯控制器的设计EDA课程设计.docx(12页珍藏版)》请在冰豆网上搜索。
交通灯控制器的设计EDA课程设计
大学
课程设计说明书
名称交通灯控制器的设计
院 系电子信息工程系
班级
姓名
学号
系 主 任
教研室主任
指导教师
第一章绪论
1电子设计自动化简介
1.1概要
EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。
利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。
现在对EDA的概念或范畴用得很宽。
包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA的应用。
目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。
1.1.1EDA系统的设计分类
根据采用计算机辅助技术的介入程度,可以分为三类:
第一类:
人工设计方法,这是一种传统的设计方法,从方案的提出到验证和修改均采用人工手段完成,尤其是系统的验证需要经过实际搭试电路完成,花费大、效率低、制造周期长。
第二类:
借助计算机来完成数据处理、模拟评价、设计验证等部分,由人和计算机共同完成,但由于软件匮乏,该阶段许多工作尚需人工完成。
第三类:
该阶段的世纪方法称为电子设计自动化,这个阶段发展起来的EDA工具,目的是在设计前期将设计工程师从事的许多高层次设计由工具完成。
整个设计过程或大部分设计均有计算机完成。
1.1.2EDA技术发展表现形式
(1)CPLD/FPGA系统:
使用EDA技术开发CPLD/FPGA,使自行开发的CPLD/FPGA作为电子系统、控制系统、信息处理系统的主体。
(2)“CPLD/FPGA+MCU”系统:
综合应用EDA技术与单片机技术,将自行开发的“CPLD/FPGA+MCU”作为电子系统、控制系统、信息处理系统的主体。
(3)“CPLD/FPGA+专用DSP处理器”系统:
将EDA技术与DSP专用处理器配合使用,用“CPLD/FPGA+专用DSP处理器”构成一个数字信号处理系统的整体。
(4)基于FPGA实现的现代DSP系统:
基于SOPC(aSystemonaProgrammableChip)技术、EDA技术与FPGA技术实现方式的现代DSP系统。
(5)基于FPGA实现的SOC片上系统:
使用超大规模的FPGA实现的,内含1个或数个嵌入式CPU或DSP,能够实现复杂系统功能的单一芯片系统。
(6)基于FPGA实现的嵌入式系统:
使用CPLD/FPGA实现的,内含嵌入式处理器,能满足对象系统要求的特定功能的,能够嵌入到宿主系统的专用计算机应用系统。
1.2EDA数字系统设计
1.2.1分析方法
传统的电路设计方法都是自底向上进行设计的,也就是首先确定可用的元器件,然后根据这些器件进行逻辑设计,完成各模块后进行连接,最后形成系统。
在基于EDA技术的系统设计的最重要环节——在系统的基本功能或行为级上对设计的产品进行描述和定义时,我们采用自顶向下分析,自底向上设计的方法。
所谓“自顶向下分析”,就是指将数字系统的整体逐步分解为各个子系统和模块,若子系统规模较大,则还需将子系统进一步分解为更小的子系统和模块,层层分解,直至整个系统中各子系统关系合理,并便于逻辑电路级的设计和实现为止。
1.2.2实现方法
1.硬件描述语言编程实现法
2.原理图设计实现法
3.参数可设置兆功能块实现法
4.软的或硬的IP核实现法
第二章设计要求
2设计基本要求
1)设计一个十字路口的交通灯控制器,能显示十字路口东西、南北两个方向的红、黄、绿灯的指示状态。
用两组红、黄、绿三种颜色的灯分别作为东西、南北两个方向的红、黄、绿灯。
变化规律为:
东西绿灯亮,南北红灯亮——东西黄灯亮,南北红灯亮——东西红灯亮,南北绿灯亮——东西红灯亮,南北黄灯亮——东西绿灯亮,南北红灯亮……,这样依次循环。
2)南北方向是主干车道,东西方向是支干车道,要求两条交叉道路上的车辆交替运行,主干车道每次通行时间为35秒,支干车道每次通行的时间为25秒,时间可设置修改。
3)在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道。
4)要求交通控制器有复位功能,在复位信号使能的情况下能够实现交通灯的自动复位,并且要求所有交通灯的状态变化,包括复位信号引起的均发生在时钟脉冲的上升沿。
2.1电路工作原理
根据交通灯系统设计要求,可以用一个有限的状态机来实现这个交通灯控制器。
根据功能要求,明确两组交通灯的状态,这两组交通灯总共有四种状态,分别可用st0,st1,st2,st3不表示:
st0表示主干路绿灯亮,支干路红灯亮;
st1表示主干路黄灯亮,支干路红灯亮;
st2表示主干路红灯亮,支干路绿灯亮;
st3表示主干路红灯亮,支干路黄灯亮;
根据上述四种描述列出的状态转换表如下表1所示及交通灯控制器状态转换图如下图1所示:
表1交通灯控制器状态转换表
第三章系统的设计
3系统设计要求
1)设计一个十字路口的交通灯控制器,能显示十字路口东西、南北、南北左转三个方向的红、黄、绿灯的指示状态。
用三组红、黄、绿三种颜色的灯分别作为东西、南北、南北左转三个方向的红、黄、绿灯。
变化规律为:
南北绿灯亮,南北左转红灯亮,东西红灯亮
南北黄灯亮,南北左转红灯亮,东西红灯亮
南北红灯亮,南北左转绿灯亮,东西红灯亮
南北红灯亮,南北左转黄灯亮,东西红灯亮
南北红灯亮,南北左转红灯亮,东西绿灯亮
南北红灯亮,南北左转红灯亮,东西黄灯亮
南北绿灯亮,南北左转红灯亮,东西红灯亮这样依次循环。
2)南北方向是主干车道,东西方向是支干车道,要求两条交叉道路上的车辆交替运行,主干车道每次通行时间为35秒,主干转弯车道每次通行时间为20秒,支干车道每次通行的时间为25秒,时间可设置修改。
3)在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道。
4)要求交通控制器有复位功能,在复位信号使能的情况下能够实现交通灯的自动复位,并且要求所有交通灯的状态变化,包括复位信号引起的均发生在时钟脉冲的上升沿。
5)显示器倒计时显示时间
3.1设计思路
1)本交通灯控制器是一个已知主、主左、支干道通行时间的系统,为了满足主、主左、支干道通行时间变化要求,我们可设计一个可预置主、主左、支干道通行时间的交通控制器。
2)交通灯控制器的电路控制主要包括置数器模块、定时计数器模块、主控制器模块和译码器模块。
置数器模块将交通灯的点亮时间预置到置数电路中。
计数器模块以秒为单位倒计时,当计数值减为零时,主控电路改变输出状态,电路进入下一个状态的倒计时。
核心部分是主控制模块。
3.2设计流程
根据设计要求和系统所具有功能,并参考相关的文献资料,经可行方案设计画出如下所示的十字路口交通灯控制器系统框图,及为设计的总体方案,框图如下图
(2)所示:
图
(2)交通灯控制器系统框图
3.3系统结构图
3.4系统程序
控制器电路程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYledcontrolIS
PORT(reset,clk,urgen:
INSTD_LOGIC;
state:
OUTSTD_LOGIC_VECTOR(2DOWNTO0);
sub,set1,set2,set3:
OUTSTD_LOGIC);
ENDledcontrol;
ARCHITECTUREaOFledcontrolIS
SIGNALcount:
STD_LOGIC_VECTOR(6DOWNTO0);
SIGNALsubtemp:
STD_LOGIC;
BEGIN
sub<=subtempAND(NOTclk);
statelabel:
PROCESS(reset,clk)
BEGIN
IFreset='1'THEN
count<="0000000";
state<="000";
set2<='1';
ELSIFclk'eventANDclk='1'THEN
IFurgen='0'THENcount<=count+1;subtemp<='1';ELSEsubtemp<='0';ENDIF;
IFcount=0thenstate<="000";set1<='1';set2<='1';set3<='1';
ELSIFcount=35thenstate<="001";set1<='1';
ELSIFcount=40THENstate<="010";set1<='1';set2<='1';
ELSIFcount=60THENstate<="011";set2<='1';
ELSIFcount=65THENstate<="100";set2<='1';set3<='1';
elsifcount=90THENstate<="101";set3<='1';
ELSIFcount=95THENcount<="0000000";ELSEset1<='0';set2<='0';set3<='0';ENDIF;
ENDIF;
ENDPROCESSstatelabel;
ENDa;
输出显示电路程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYledshowIS
PORT(
clk,urgen:
INSTD_LOGIC;
state:
INSTD_LOGIC_VECTOR(2DOWNTO0);
sub,set1,set2,set3:
INSTD_LOGIC;
eg1,ey1,er1,edg2,edy2,edr2,ng1,ny1,nr1:
OUTSTD_LOGIC;
led1,led2:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDledshow;
ARCHITECTUREaOFledshowIS
SIGNALcount1,count2,count3:
STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALsetstate1,setstate2,setstate3:
STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALetg1,ety1,etr1,edirr1,edirg1,ediry1,norg2,nory2,norr2:
STD_LOGIC;
BEGIN
led1<="00000000"WHENurgen='1'ANDclk='0'ELSE
count1WHENstate="000"ELSE
count1WHENstate="001"ELSE
count2WHENstate="010"ELSE
count2WHENstate="011"ELSE
count2WHENstate="100"ELSE
count1;
led2<="00000000"WHENurgen='1'ANDclk='0'ELSE
count3WHENstate="000"ELSE
count3WHENstate="001"ELSE
count3WHENstate="010"ELSE
count3WHENstate="011"ELSE
count3WHENstate="100"ELSE
count3WHENstate="101"ELSE
count3;
etg1<='1'WHENstate="000"ANDurgen='0'ELSE'0';
ety1<='1'WHENstate="001"ANDurgen='0'ELSE'0';
etr1<='1'WHENstate="010"orurgen='1'ORstate="011"ORstate="100"ORstate="101"ORstate="110"ORstate="111"ELSE'0';
edirg1<='1'WHENstate="010"andurgen='0'ELSE'0';
ediry1<='1'WHENstate="011"andurgen='0'ELSE'0';
edirr1<='1'WHENstate="000"ORurgen='1'ORstate="001"ORstate="100"ORstate="101"ORstate="110"ORstate="111"ELSE'0';
norg2<='1'WHENstate="100"ANDurgen='0'ELSE'0';
nory2<='1'WHENstate="101"andurgen='0'ELSE'0';
norr2<='1'WHENstate="000"ORstate="001"ORstate="010"ORstate="011"ORstate="110"ORstate="111"ORurgen='1'ELSE'0';
setstate1<="00110101"WHENstate="000"ELSE
"00000101"WHENstate="001"ELSE
"00110000"WHENstate="101"ELSE
"00100000";
setstate2<="00010101"WHENstate="000"ELSE
"00100000"WHENstate="010"ELSE
"00000101"WHENstate="011"ELSE
"00110000"WHENstate="100"ELSE
"00000000";
setstate3<="01100101"WHENstate="000"ELSE
"00100101"WHENstate="100"ELSE
"00000101"WHENstate="101"ELSE
"01100101";
label3:
PROCESS(sub)
BEGIN
IFsub'eventANDsub='1'THEN
IFset3='1'THEN
count3<=setstate3;
elsifcount3(3downto0)="0000"thencount3<=count3-7;
ELSEcount3<=count3-1;
ENDIF;
ng1<=norg2;
ny1<=nory2;
nr1<=norr2;
ENDIF;
ENDPROCESSlabel3;
label2:
PROCESS(sub)
BEGIN
IFsub'eventANDsub='1'THEN
IFset2='1'THEN
count2<=setstate2;
elsifcount2(3downto0)="0000"thencount2<=count2-7;
ELSEcount2<=count2-1;ENDIF;
edg2<=edirg1;
edy2<=ediry1;
edr2<=edirr1;
ENDIF;
ENDPROCESSlabel2;
label1:
PROCESS(sub)
BEGIN
IFsub'eventANDsub='1'THEN
IFset1='1'THEN
count1<=setstate1;
elsifcount1(3downto0)="0000"thencount1<=count1-7;
ELSEcount1<=count1-1;
ENDIF;
eg1<=etg1;
er1<=etr1;
ey1<=ety1;
ENDIF;
ENDPROCESSlabel1;
ENDa;
3.5仿真与调试
系统总体仿真图如图(3)所示:
图(3)系统总体仿真图
复位电路仿真图:
图(4)复位仿真图
系统硬件管脚分配图如下:
图(5)管脚分配图
第四章心得体会
参考文献
【1】孙加存《电子设计自动化》西安电子科技大学出版社2008
【2】谭会生等主编,《EDA技术及应用》,西安电子科技大学出版社,2001
【2】江国强《EDA技术与应用》北京电子工业出版社2003
【3】焦素敏《EDA应用技术》北京清华大学出版社2005
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通灯 控制器 设计 EDA 课程设计