EDA交通灯课程设计.docx
- 文档编号:25459461
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:23
- 大小:398.81KB
EDA交通灯课程设计.docx
《EDA交通灯课程设计.docx》由会员分享,可在线阅读,更多相关《EDA交通灯课程设计.docx(23页珍藏版)》请在冰豆网上搜索。
EDA交通灯课程设计
EDA技术实用教程
课题名称:
EDA课程设计
学院:
大数据与信息工程学院
专业:
通信工程
年级:
通信121
任课教师:
2015年5月27日
前言
伴随着社会的发展以及人类生活水平的提高,汽车的数量在D的DEA技术的发展和应用领域的扩大与深入,EDA技术在电子信息,通信,自动,控制及计算机应用等领域的重要性日益突出。
随着技术市场与人才市场对DEA的不断的增加,交通的问题日益突出,单单依靠人力来指挥交通已经不可行了,所以,设计交通灯来完成这个需求就显的越加迫切了.为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。
以下就是运用数字电子设计出的交通灯:
其中红灯亮,表示该条路禁止通行;黄灯亮表示停车;绿灯亮表示允许通行。
交通管理器工作流程图:
1、设计任务
设计一个十字路口的交通灯控制系统,用实验平台上的LED发光二极管显示车辆通过的方向(甲车道和乙车道各一组),用数码管显示该方向的亮灯时间。
要求:
交通灯按正常状态依次点亮红、黄、绿灯,交警可以根据路口车流量的情况分别设置红、绿、黄灯持续点亮的时间。
在红、绿灯点亮时,能够显示其点亮持续的时间。
2、题目分析与整体构思
2.1交通灯控制器应具备的功能
设甲车道和乙车道方向的车流量大致相同,因此红、黄、绿灯的时长也相同,考虑到黄灯的作用是警示已过停车线的司机尽快离开路口,而路口总宽度不变,因此将其固定为5秒,而红灯亮的时间等于绿灯亮的时间加上黄灯亮的时间,因此紧对绿灯点亮时间进行设置就可以同时改变红灯亮的时间,这里将绿灯所能设置的最长时间设置为40秒即(0 同时用数码管正计时指示当前状态(红、黄、绿)所亮的时间。 2.2实现方案 2.2.1从题目中计数值与交通灯的亮灭的关系如图 (1)所示: 图一 2.2.2交通灯控制器系统框图如图2所示: 3、硬件电路设计 3.1分频器的设计 分频器实现的是将高频时钟信号转换成低频的时钟信号,用于触发控制器和计数器。 该分频器实现的是一千分频,将一千赫兹的时钟信号分频成一赫兹的时钟信号。 生成的Symbol文件如图3和仿真波形如图4所示。 图三 图四 3.2控制器的设计 控制器的作用是根据计数器的计数值及t1的输入数据控制发光二极管的亮、灭,以及输出正计时数值给七段数码管的分位译码电路。 本控制器是利用时钟沿的下降沿读取前级计数器的计数值,然后作出反应;生成的实体模块如图5和仿真波形如图6所示。 图五 图六 3.3计数器的设计 计数器1的计数范围为由t1引脚输入。 计到t1后,下一个时钟沿恢复到0,开始下一轮计数。 仿真波形如图当t1取7时,计数器计数到7后清零。 实体模块如图7和仿真波形如图8。 计数器2和计数器3的实体模块如图9和图10所示。 图7 图9 图10 图8 3.4分位译码电路的设计--1 由于控制器输出的正计时数值可能是1位或者2位十进制数,因此在七段数码管的译码电路前要加上分位电路(即将其分成2个1位的十进制数,如40分成4和0,5分为0和5)。 与控制器一样,分位电路同样可以由时钟驱动,也可以设计成纯组合逻辑电路。 控制器中,引入了寄存器。 本电路中分位电路使用组合逻辑电路实现。 生成的实体模块如图11及仿真波形如图12。 图11 图12 3.5分位译码电路的设计—2 分位译码电路2和分位译码电路1的功能是一样的,为了区别两个不同的引脚 图(8) 图(11) 图(12) NumC[3..0]和NumD[3..0]因此再设计一个电路,只是引脚名的名称不同,如图13。 3.6数码管驱动的设计——绿灯和红灯驱动 要求数码管共阳极连接(共阳极的公共端为低电平时,LED不亮),在设计中为每个数码管都添加了一个驱动电路,在使用时通过调用模块来实现。 本模块设计为时序逻辑电路,采用下降沿触发。 实体模块如图14和仿真波形如图15。 图14 图15 3.7数码管驱动的设计——黄灯驱动 由于黄灯固定时间是5秒,因此变化范围是0至5秒,七段数码管只要能显示0-5的数就行了,所以单独用一个数码管驱动。 实体模块如图16和仿真波形如图17。 图16 图17 3.8顶层连接及其仿真 交通灯控制器的顶层文件连接图如图18和仿真波形如图19。 图18 图19 对图18和19的解释: 在图18中,绿灯计数器直接接分位译码器1,红灯计数器直接接分位译码器2,每个译码器分别接两个驱动电路,然后接输出。 左边5个驱动器接的数码管显示的是甲车道各个灯亮的时间,右边5个驱动器接的数码管显示的是乙车道各个灯亮的时间。 在19图中可以看出甲、乙车道绿灯亮的时间加上黄灯亮的时间等于甲车道红灯灭的时间。 同时我们可以看出该系统满足我们所需的要求。 4、程序设计 4.1分频器的设计 libraryieee; useieee.std_logic_1164.all; entityfredevideris----------分频器 port (clkin: instd_logic; clkout: outstd_logic); end; architecturedevideroffredevideris constantN: integer: =499; signalcounter: integerrange0toN; 图(1 signalClk: std_logic; begin process(clkin) begin ifrising_edge(clkin)then ifCounter=Nthen counter<=0; clk<=notclk; else counter<=counter+1; endif; endif; endprocess; clkout<=clk; end; 4.2控制器的设计 控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出正计时数值给七段译码管的分译码电路。 libraryieee; useieee.std_logic_1164.all; entitycontrolis-----------控制器 port(clk: instd_logic; c1,c2,c3: outstd_logic;------计数器工作时能信号,为1时计数 w1,w2,w3: instd_logic;------计数器指示信号,在计数过程中,相应的指示信号为0,计数结束时为1 r1,r2: outstd_logic;------分别为甲乙车道红灯 y1,y2: outstd_logic;-------分别为甲乙车道黄灯 g1,g2: outstd_logic;------分别为甲乙车道绿灯 reset: instd_logic);-------复位信号,高电平有效 endcontrol; architectureaofcontrolis typestate_spaceis(s3,s2,s1,s0);-----四种状态 signalstate: state_space; begin process(clk) begin ifreset='1'then state<=s0;--------复位时状态为S0 elseif(clk'eventandclk='1')then-------时钟上升沿到来 casestateis whens0=> ifw1='1'then state<=s1; endif; whens1=> ifw2='1'then state<=s2; endif; whens2=> ifw3='1'then state<=s3; endif; whens3=> ifw2='1'then state<=s0; endif; endcase; endif; endif; endprocess; c1<='1'whenstate=s0else'0'; c2<='1'whenstate=s1orstate=s3else'0'; c3<='1'whenstate=s2else'0'; r1<='1'whenstate=s1orstate=s0else'0'; y1<='1'whenstate=s3else'0'; g1<='1'whenstate=s2else'0'; r2<='1'whenstate=s2orstate=s3else'0'; y2<='1'whenstate=s1else'0'; g2<='1'whenstate=s0else'0'; enda; 4.3计数器的设计 4.3.1绿灯计数器 libraryieee; useieee.std_logic_1164.all; entitycounter1is port(clk: instd_logic; enable: instd_logic; t1: inintegerrange0to40;-------绿灯可设置亮的时间 c1: outstd_logic); endcounter1; architectureaofcounter1is begin process(clk) variablecnt: integerrange0to40;-----变量cnt定义为常数,取值范围为0 到40 begin if(clk'eventandclk='1')then-----时钟上升沿到来 ifenable='1'andcnt cnt: =cnt+1;------加计数 else cnt: =0; endif; ifcnt=t1then c1<='1';---------乙道开始通行,S0状态 else c1<='0'; endif; endif; endprocess; enda; 4.3.2红灯计数器 libraryieee; useieee.std_logic_1164.all; entitycounter2is port(clk: instd_logic; enable: instd_logic; t1: inintegerrange0to40; c2: outstd_logic); endcounter2; architectureaofcounter2is constanty: Integer: =5;---------黄灯固定时间为5秒 signalt2: integerrange0to45;-------红灯亮的时间 begin process(clk) variablecnt: integerrange0to45;----------变量cnt定义为常数,取值范围为0 到45 begin t2<=t1+y; if(clk'eventandclk='1')then-------时钟上升沿到来 ifenable='1'andcnt cnt: =cnt+1; else cnt: =0; endif; ifcnt=t2then c2<='1';-------工作在S1或S3状态 else c2<='0'; endif; endif; endprocess; enda; 4.3.3黄灯计数器 libraryieee; useieee.std_logic_1164.all; entitycounter3is port(clk: instd_logic; enable: instd_logic; c3: outstd_logic; m3: outintegerrange0to5); endcounter3; architectureaofcounter3is begin process(clk) variablecnt: integerrange0to5;-------变量cnt定义为常数,取值范围为0 到5 begin if(clk'eventandclk='1')then-----时钟上升沿到来 ifenable='1'andcnt<5then-----使能信号为1,并且cnt小于5时 cnt: =cnt+1;------加计数 else cnt: =0; endif; ifcnt=5then c3<='1';---------工作在S2状态 else c3<='0'; endif; endif; m3<=cnt; endprocess; enda; 4.4分位译码电路设计--1 LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL; ENTITYFenwei1IS PORT (Numin: INintegerRANGE0TO45; NumA,NumB: OUTIntegerRANGE0to9-------绿灯亮的时间,十位和个位数字 ); END; ARCHITECTUREbehaviorOFFenwei1IS BEGIN process(Numin) BEGIN IFNumin>=40THEN-------输入计时数据大于40 NumA<=4;-------把十位数字送给A NumB<=Numin-40;-------把个位数字送给B ELSIFNumin>=30THEN NumA<=3; NumB<=Numin-30; ELSIFNumin>=20THEN NumA<=2; NumB<=Numin-20; ELSIFNumin>=10THEN NumA<=1; NumB<=Numin-10; ELSE NumA<=0; NumB<=Numin; ENDIF; ENDPROCESS; END; 4.5分位译码电路的设计—2 LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL; ENTITYFenwei2IS PORT (Numin: INintegerRANGE0TO45; NumC,NumD: OUTIntegerRANGE0to9-----红灯亮的时间,十位和个位 ); END; ARCHITECTUREbehaviorOFFenwei2IS BEGIN process(Numin) BEGIN IFNumin>=40THEN NumC<=4; NumD<=Numin-40; ELSIFNumin>=30THEN NumC<=3; NumD<=Numin-30; ELSIFNumin>=20THEN NumC<=2; NumD<=Numin-20; ELSIFNumin>=10THEN NumC<=1; NumD<=Numin-10; ELSE NumC<=0; NumD<=Numin; ENDIF; ENDPROCESS; END; 4.6数码管驱动的设计 4.6.1红绿灯驱动 LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL; ENTITYqudongIS PORT (clk: inSTD_LOGIC; enable: instd_logic; data: INintegerRANGE0TO9;------输入数字 segout: outSTD_LOGIC_VECTOR(6downto0));-------七段显示器输出 END; ARCHITECTUREbehaviorOFqudongIS BEGIN process(Clk,data) BEGIN IFfalling_edge(Clk)andenable='1'then------下降沿到来和使能信号为1时 casedatais when0=>segout<="1111110"; when1=>segout<="0110000"; when2=>segout<="1101101"; when3=>segout<="1111001"; when4=>segout<="0110011"; when5=>segout<="1011011"; when6=>segout<="0011111"; when7=>segout<="1110000"; when8=>segout<="1111111"; when9=>segout<="1110011"; whenothers=>null; ENDCASE; ENDIF; ENDPROCESS; END; 4.6.2黄灯驱动 LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL; ENTITYHDqudongIS---------黄灯驱动 PORT (clk: inSTD_LOGIC; enable: instd_logic; data: INintegerRANGE0TO5;------黄灯变化范围 segout: outSTD_LOGIC_VECTOR(6downto0)); END; ARCHITECTUREbehaviorOFHDqudongIS BEGIN process(Clk,data) BEGIN IFfalling_edge(Clk)andenable='1'then casedatais when0=>segout<="1111110"; when1=>segout<="0110000"; when2=>segout<="1101101"; when3=>segout<="1111001"; when4=>segout<="0110011"; when5=>segout<="1011011"; whenothers=>null; ENDCASE; ENDIF; ENDPROCESS; END; 5﹑硬件测试 把顶层文件连接图进行编译仿真后就可以进行硬件测试了,我们所用的仿真实验箱是GW48系列SOPC/EDA实验开发系统(杭州康芯电子有限公司现代DSP实验开发系统)。 在实验箱中因为有1HZ的频率并且自带译码器,所以在下载时用的顶层文件连接图就把分频器和译码器驱动电路给去掉了,如图(20),在实验过程中由于数码管不够,图中5个数码管显示的是一个车道的绿、红、黄灯时间。 图20 6、引脚锁定 在下载之前,要进行引脚的锁定,我们用的是模式5,各个端口的引脚锁定如图21。 图21 在确定引脚锁定正确后再编译一次,然后下载到实验箱中。 首先对绿灯时间t1进行置数,可在0到40任意置数,不妨设为7秒,然后系统开始工作,绿灯从0开始正计时到7再跳到黄灯从0开始正计时到5然后再跳到红灯从0开始正计时到12。 相应的另一车道的红、绿、黄灯会变化只是没有显示相应的时间。 7、心得体会 EDA课程设计,使我对EDA的认识有提高了一个层次,现在能够熟练的使用QuartsII,能够用VHDL语言编写简单的、实用的小程序,这次EDA课程设计重点学习了交通灯部分程序的编写、调试、还有硬件下载、操作等过程。 在整个课程设计的过程中,我查阅了大量的关于EDA的资料,特别是在网上和图书馆我找到了大量的关于硬件编程的资料。 另外,图(21)-22-在课程设计的过程中我认为调试程序是很重要的,要有耐心。 我在第一次编译时有三十几个错误,其中有输入错误、语法错误,如: 工程名和实体名不一致,少了分号或者少了ENDIF等错误。 发现错误之后就要一遍一遍的仔细查错,直到没有错误,然后可以进行波型仿真了。 8﹑参考文献 (1)潘松,黄继业.EDA技术实用教程.科学出版社.2006.9 (2)李辉.PLD与数字系统设计.西安电子科技大学出版社.2005 (3)蒋璇.臧蠢华.数字系统设计与PLD应用(第二版).电子工业出 版社.2005 (4)刘笃仁、杨万海编著.在系统可编程技术及其器件原理与应用. 西安: 电子科技大学出版社.2001 (5)张原编著.可编程逻辑器件设计及应用.北京: 机械工业出版 社.2001
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 交通灯 课程设计
![提示](https://static.bdocx.com/images/bang_tan.gif)