《FPGA控制的交通灯课程设计(共30页).doc》由会员分享,可在线阅读,更多相关《FPGA控制的交通灯课程设计(共30页).doc(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上山东理工大学 毕业设计(论文)题 目: 学 院: 专 业: 学生姓名: 指导教师: 毕业设计(论文)时间:二 六年 月 日 月 日 共 周摘 要设计一个十字路口两道路的交通灯控制器,两道路交替通行,每次通行时间可设定20秒。该十字路口交通灯控制电路能使南北、东西各四个灯(红、黄、绿、左转),四个灯能够按顺序依次亮灭。而且要求绿灯亮转红灯亮或者转左转灯亮之前要先转黄灯亮5秒,左转灯亮转红灯亮之前也要先转黄灯亮5秒,红灯亮可以直接转绿灯或左转灯亮,四种灯的点亮时间能够以倒计时的形式显示出来。关键词:交通灯 左转 倒计时AbstractElectronic excited
2、state is one of the common forms in which atoms, molecules and ions exist in the nature. Study on the characters and dynamics behaviors of the molecular excited states, such as energy levels, lifetimes, predissociation and auto-ionization, as well as on their electronic structures, is not only a sig
3、nificant topic related to chemical reactions and chemical dynamics, but also one of the frontiers in the field of atomic and molecular physics.In present dissertation, experimental studies of the predissociated Rydberg states of CaCl by using the resonance enhanced multiphoton ionization (REMPI) and
4、 ion-dip detection spectroscopy were carried out. Five core-penetrating Rydberg states of CaCl in the intermediate effective principle quantum number region, n*=57, were observed for the first time. Theoretical analysis confirmed the predissociation mechanism which supposed these Rydberg states were
5、 led by an interaction with a 2S+ continuum state. A potential energy curve of this 2S+ continuum state in the energy region of 4500047500cm-1 was fitted based on the observed predissociation linewidths. Some Rydberg levels with anomalously small rotational constants were also observed. They might b
6、e the fragments of the core-nonpenetrating Rydberg states. All these results provide rich information for understanding the mechanism of dissociation of molecules with highly polar core and some correlative dynamical processes. Systematical investigation on the high-lying triplet gerade states of Na
7、2 by using the perturbation facilitated optical-optical double resonance (PFOODR) method is also made. A doubly excited valence state of Na2, 13Sg- state, which consists in the unique 3Sg- state as well as the unique pure two-electron excitation state below the ionization threshold, was first observ
8、ed and characterized. A number of v=057 vibration levels were determined and assigned. The levels cover more than 99% of the potential well depth of the state. No evident autoionization was found related to the levels belonging to the 13Sg- state above the ionization threshold, implying the distinct
9、 character of the doubly excited valence state from the Rydberg states. The observation of this state is of great importance for expounding homo-diatomic molecular structure in quantum chemistry.专心-专注-专业目录1 FPGA/CPLD概述随着世界范围内城市化和机动化进程的加快,城市交通越来越成为一个全球化的问题。城市交通基础设施供给滞后于高速机动化增长需求,道路堵塞日趋加重,交通事故频繁,环境污染加
10、剧等问题普遍存在。目前,全国大中城市普遍存在着道路拥挤、车辆堵塞、交通秩序混乱的现象,交通事故频发,这给人民的生命财产安全带来了极大的损失。如何解决城市交通问题已成为全社会关注的焦点和大众的迫切呼声。探究城市交通发展中存在问题的原因,无论是从宏观上还是从微观上分析,其根本原因在于城市交通系统的管理机制不适应。城市交通控制系(UTC ,Urban Traffic Control System)是现代城市智能交通系统(IDJ ,Intelligent transport system)的组成之一,主要用于城市道路交通的控制与管理。城市平交路口实现交通信号控制是城市交通管理现代化的基本标志之一,是提
11、高交通管理效能的重要技术手段。路口信号控制器是控制交叉路口交通信号的设备,它是交通信号控制的重要组成部分。各种交通控制方案,最终都要由路口信号控制器来实现。为了确保十字路口的行人和车辆顺利、畅通地通过,往往采用电子控制的交通信号来进行指挥。伴随着社会的发展以及人类生活水平的提高,汽车的数量在不断增加,EDA技术的发展和应用领域也在不断的扩大与深入,机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域的重要性日益突出。利用EDA技术设计交通灯来完成这个需求就显的更加迫切,同样也是非常的实用和合理。FPGA(现场可编程门阵列)和CPLD(复杂可编程逻辑器件)都是可编程逻辑器件,他们是
12、在PAL,GAL等逻辑器件的基础上发展起来的。同以往的PAL,GAL相比较FPGA/CPLD的规模比较大,它可以替代几十甚至几千块通用IC芯片。这样的FPGA/CPLD上就是一个子系统部件。这种芯片收到世界范围内电子工程设计人员的广泛关注和普遍欢迎。比较典型的就是Altera公司和Xilinx公司的CPLD器件系列和FPGA器件系列,他们开发较早,占用了较大的PLD市场。FPGA/CPLD芯片都是特殊的ASIC芯片,除了具有ASIC的特点外,还具有以下几个优点:随着VLSI(超大集成电路)工艺的不断提高单一芯片内部可以容纳上百万个晶体管,FPGA/CPLD芯片的规模也越来越大,其单片逻辑门数已
13、达上百万门,它所实现的功能也越来越强,同时也可以实现系统集成,即片上系统SOC。FPGA/CPLD芯片在出厂之前都做过百分之百的测试,不需要设计人员承担芯片风险和费用,设计人员只需在自己的实验室就可以通过相关的软硬件环境来完成芯片的最终功能设计。所以,FPGA/CPLD的资金投入就少,减少了潜在的花费。用户可以反复的编程,擦除,使用或者在外围电路不动的情况下用不同软件就可实现不同的功能。FPGA/CPLD软件包中有各种输入工具和仿真工具,及版图设计工具和编程器等全线产品,电路设计人员在很短的时间内就可完成电路的输入,编译,优化,仿真,直至最后芯片的制作。当电路有少量的改动,更能显示FPGA/C
14、PLD的优势。在线可编程技术(ISP)使得使用FPGA/CPLD的产品可以做到远程升级。 2 系统分析与总体方案2.1系统分析 通过分析可以知道,所要设计的十字路口交通灯控制电路要能够使南北、东西各四个灯(红、黄、绿、左转),四个灯能够按顺序依次亮灭。而且要求绿灯亮转红灯亮或者转左转灯亮之前要先转黄灯亮5秒,左转灯亮转红灯亮之前也要先转黄灯亮5秒,红灯亮可以直接转绿灯或左转灯亮(四种灯的循环顺序如图2.1所示)。还要求四种灯的点亮时间能够以倒计时的形式显示出来。可以用VHDL语言合理设计系统功能,使红黄绿左转灯的转换有一个准确的时间间隔和转换顺序。绿灯黄灯左转灯黄灯红灯图2.1 四种灯的循环顺
15、序使用基于FPGA的方法具有周期短、使用灵活、易于修改等明显的优点。而且,随着FPGA器件,设计语言和电子设计自动化工具的发展和改进,越来越多的电子系统采用FPGA来设计。未来使用FPGA器件设计的产品将出现在各个领域。因此此次的交通灯控制器将基于FPGA的设计方案来实现所需要的功能。 2.2 设计的总体方案 根据设计要求和系统所具有功能,并参考相关的文献资料经行方案设计画出如下所示的十字路口交通灯控制器系统框图,及为设计的总体方案,框图如下图3.1所示:CLK时钟分频模块交通灯控制及计时模块扫描显示模块LED显示数码管位码数码管段码图2.2 系统的框图3 硬件电路设计3.1分频器设计 分频器
16、实现的是将高频时钟信号转换成低频时钟信号,用于触发控制器、计数器和扫描显示电路。具体实物模块如图: 图3.1 分频器模块3.2 状态控制电路设计状态控制器的作用是根据计数器的计数值控制各方向上发光二极管的亮、灭,当计时时间到达,状态控制器就响应,自动跳转到下一个状态。此外,当检测到特殊情况(EMI =1)发生时,无条件点亮红灯的二极管(急救灯按下EMI=1,则东西南北都亮红灯,在这种状态下原来的状态必须保持,即东西南北方向定时时间保持不变。急救灯未按下或者按下后恢复,则继续计时(计时通过计数器ct),同时恢复东西南北原来灯的状态)。具体实物模块如图:图3.2控制电路模块3.3计数器设计这里需要
17、的计数器的计数范围为0-80。计到80后,下一个时钟沿回复到0,开始下一轮计数。此外,当检测到特殊情况(EMI =1)发生是,计数器暂停计数,而系统复位信号RESET则使计数器异步清零。图3.3计数器模块3.4译码显示电路设计根据状态控制器所控制的状态和计数器的计时时间,选择当前状态下的显示器,使显示器输出当前状态下的数码管亮、灭指令,其中数码管的显示采用动态扫描显示。具体实物模块如图:图3.4译码显示电路模块4 实验程序设计一个完整的VHDL语言程序通常包括实体(Entity)、构造体、配置、包集合(Package)和库(Library)5个部分组成。下面结合实际的程序来加以说明。4.1实体
18、定义library IEEE;use IEEE.std_logic_1164.all;entity traffic_light is port(clk : in std_logic; - 时钟频率为250KHz. start : in std_logic; - 交通灯控制:1 开, 0 关. EMI : in std_logic; - 急救灯控制,1 所有红灯亮. ew_rled : out std_logic; -东西红灯控制,0 开, 1 关. ew_gled : out std_logic; - 东西绿灯控制,0 开, 1 关. ew_yled : out std_logic; - 东西
19、黄灯控制,0 开, 1 关. ew_turnled: out std_logic; - 东西左转灯控制,0 开, 1 关 sn_rled : out std_logic; - 南北红灯控制,0 开, 1 关 sn_gled : out std_logic; - 南北绿灯控制,0开, 1关 sn_yled : out std_logic; - 南北黄灯控制,0 开, 1 关 sn_turnled: out std_logic; - 南北左转灯控制,0 开, 1 关 L : out std_logic_vector(2 downto 0); -显示器选取 dled : out std_logic_
20、vector(7 downto 0); -显示器数据输出end traffic_light;4.2译码显示 architecture control of traffic_light isTYPE eastwe IS (ew_red,ew_green,ew_yellow0,ew_yellow1,ew_turnl); TYPE southnorth IS (sn_red,sn_green,sn_yellow0,sn_yellow1,sn_turnl); signal ew_state: eastwest; signal sn_state: southnorth; begin process(cl
21、k) function display(s:integer range 0 to 9) return std_logic_vector is variable result:std_logic_vector(7 downto 0); begin cases is when 0 = result:=XFC;-0 when 1 = result:=X60;-1 when 2 = result:=XDA;-2 when 3 = result:=XF2;-3 when 4 = result:=X66;-4 when 5 = result:=XB6;-5 when 6 = result:=XBE;-6
22、when 7 = result:=XE0;-7 when 8 = result:=XFE;-8 when 9 = result:=XF6;-9 when others = null; end case; return result;end display; 4.3状态转换 variable cnt:integer range 0 to 7; variable ct:integer range 0 to 5; variable ew_secondH,sn_secondH: integer range 0 to 8; variable ew_secondL,sn_secondL: integer
23、range 0 to 9; begin if start=0 then 初始化 dled=X00; ew_state=ew_red; sn_state=sn_green; ew_secondH:=8; ew_secondL:=0; sn_secondH:=5; sn_secondL:=0; ew_rled=0; ew_gled=1; ew_yled=1;ew_turnled=1; sn_rled=1; sn_gled=0; sn_yled=1;sn_turnled=1; elsif clkevent and clk=1 then - clk rising edge detection cnt:
24、=cnt+1; if EMI=1 then ew_rled=0; ew_gled=1; ew_yled=1;ew_turnled=1; sn_rled=0; sn_gled=1; sn_yled=1;sn_turnled ew_rled=0; ew_gled=1; ew_yled=1;ew_turnled ew_rled=1; ew_gled=0; ew_yled=1; ew_turnled ew_rled=1; ew_gled=1; ew_yled=0;ew_turnled ew_rled=1; ew_gled=1; ew_yled=0;ew_turnled ew_turnled=0;ew_
25、rled=1; ew_gled=1; ew_yled ew_rled=0; ew_gled=1; ew_yled=1; ew_turnled sn_rled=0; sn_gled=1; sn_yled=1; sn_turnled sn_rled=1; sn_gled=0; sn_yled=1;sn_turnled sn_rled=1; sn_gled=1; sn_yled=0;sn_turnled sn_rled=1; sn_gled=1; sn_yled=0;sn_turnled sn_turnled=0;sn_rled=1; sn_gled=1; sn_yled sn_rled=0; sn
26、_gled=1; sn_yled=1;sn_turnled ew_state ew_state ew_stateew_stateew_state ew_state sn_state sn_state sn_statesn_statesn_state sn_state L=000; dled L=001; dled L=010; dled L=011; dled L=100; dled L=101; dled L=110; dled L=111; dled result:=XFC;-0 when 1 = result:=X60;-1 when 2 = result:=XDA;-2 when 3
27、= result:=XF2;-3 when 4 = result:=X66;-4 when 5 = result:=XB6;-5 when 6 = result:=XBE;-6 when 7 = result:=XE0;-7 when 8 = result:=XFE;-8 when 9 = result:=XF6;-9 when others = null; end case; return result;end display; variable cnt:integer range 0 to 7; variable ct:integer range 0 to 5; variable ew_secondH,sn_secondH: integer range 0 to 8; variable ew_secondL,sn_secondL: integer range 0 to 9; begin if start=0 then 初始化 dled