EDA课程实训设计(交通信号灯设计实现)12页
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
交通灯的设计与实现
一、实训目的
提高学生动手编程能力和对EDA可编程逻辑器件课程在实际生活中的应用的能力。
二、实训内容及要求
在EDA实验箱上完成十字路口交通灯的设计与实现。要求将实验箱上的8个LED灯中的6个表示东西方向和南北方向的红黄绿交通灯。同时在数码管上显示等待时间,并在数秒后进行红绿灯的转换,可增加扩展功能。
三、实训软硬件简介
1.Quartus II 8.0
Quartus II 8.0是著名可编程逻辑器件生产商Altera的综合性开发软件,在21世纪推出,可以在XP,linux,unix上使用,已取代MAX+PLUSⅡ,它提供了一种与结构无关的设计与环境,使设计者能方便地进行设计输入、快速处理和器件编程。其便于其支持的硬件描述语言有VHDL、Verilog等,解决了原理图与HDL混合输入设计的问题。编译仿真检测无误后,便可以下载信息通过编程器下载至目标器件中了。
2.EDA综合实验箱
综合实验箱可分为实验主板和可编程逻辑器件核心两部分,可编程逻辑器件核心板可以按需更换,以满足不同要求。实验箱主要具有以下几个特点:
★实验箱电路动态可重组:可按需配置成不同连接,以满足不同实验项目的需要
★可独立支持MCS—51单片机实验:具有仿真功能,不需要额外配备昂贵的仿真器。★可独立完成可编程逻辑器件实验:可按需更换不同芯片模板,满足不同实验需要;★提供了扩展接口:让学生可以设计自己的电路连接到试验箱;
★灵活支撑综合性、创造性实验:有利于训练学生综合创新能力。
综合实验箱采用模式化结构,可以通过不同的模式选择是进行单片机实验还是可编程实验。通过主控电路选择左侧的单片机或者是下侧的可编程器件,选择需要的外围资源。主要硬件资源由三个部分构成:单片机资源、可编程逻辑器件资源、以及一些常用外设资源。
四、实训设计思想
1.设计效果
将实训要求和实际生活中的交通信号灯状态相结合,本系统设计实现数码管实时显示东西和南北两个方向的交通信号灯的通行和等待的剩余时间,在实验箱的LED灯中选取6个灯分别代表两个方向的红绿黄灯同时与数码管显示的时间相对应,为了防止出现交通灯出现临时性错误,设计一个复位键,以能够及时恢复至正常状态。因深夜时车辆较少,故而设计一个按键在深夜时将交通灯全部变为黄灯闪烁,提醒车辆减速行驶。
2.程序代码设计思想
经过分析,交通信号灯在正常情况下分为6个状态,同时增加两种特殊情况下出现的两种状态;本系统运用状态机,将系统频率clk通过分频器分频,实现了LED灯的闪烁和数码管的显示功能,同时增加了两个额外特殊情况处理功能,成功模拟了现实生活中的交通信号灯的运作状况。
(1)分频设计
因数码管和LED 灯的显示频率不同,故需要对系统clk 进行分频,分频器实现的是将高频时钟信号转换成低频的时钟信号,用于触发控制器、计数器和扫描显示电路。该分频器实现的是一千分频,将一千赫兹的时钟信号分频成一赫兹的时钟信号。
图1 分频器部分原理图
(2)状态机设计
根据要实现的功能及各状态之间的转换经分析,正常状态下交通信号灯可以分为4个状态分别为表一中的S1、S2、S3、S4,在出现特殊情况或者在深夜时,状态转移分别是S5、S6,各状态之间持续时间详见表一,状态转移图详见图2.。
(3)显示模块设计
串行连接,即每个数码管对应的引脚都连接在一起,通过控制公共端为高电平控制相应数码管的亮,灭(共阴极数码管的公共端为高电平时,LED 不亮;共阳极的公共端为低电平时,LED 不亮) 五、实训步骤及仿真结果
CNT1=
CNT1=
图 2 交通信号灯状态转
1.实训步骤
·设计输入:使用原理图、硬件描述语言(VHDL、AHDL、VerilogHDL)等设计文件对待设计的功能做设计图。
·综合:将硬件描述语言翻译成由逻辑门、触发器、寄存器等组成的电路结构。
·布局布线:利用综合后的网表文件,将逻辑和时序要求映射到目标器件中,进行目标器件逻辑资源的分配、布线、互联等。
·仿真:利用软件,验证设计的正确性。仿真分为功能仿真和时序仿真,功能仿真仅验证逻辑功能,不包含时延信息。
·时序分析:观察和报告时序信息,并可进行时序约束。主要参数有:建立时间(tsu)、保持时间(th)、时钟至输出延时(tco)、引脚至引脚延时(tpd)、最大时钟频率(fmax)等.
·编程和配置:设计流程的最后一步,将软件产生的配置文件下载到目标器件中,进行硬件的实现和验证。
2.时序仿真
3.硬件仿真
在完成设计输入及成功编译、仿真后经编译无错后,设置pins锁定引脚,(详见管脚分配表2),经过硬件检验,可以实现如下功能:
1)在交通信号灯开始工作前,等待系统指令。
2)按下key0键,系统切换至正常工作,交通信号灯在正常的顺序下开始闪烁,同
时数码管可以实时显示剩余等待时间。
3)按下key1键,系统切换至红灯状态,目的为了在交通事故出现后及时进行事故
处理。
4)按下key2键,系统切换至深夜工作状态,全部亮黄灯提醒,过往车辆慢速行驶。
六、实训总结
在这次EDA实训中,我们充分运用了上学期学习的知识,将分频器和状态机等知识融入其中,实现了更加智能化的交通灯系统设计,程序代码更易扩展。通过一个星期的实训,我们对于交通灯的控制原理有了清晰的了解,进一步加深了EDA程序设计的熟练程度。对Quartus II 8.0 仿真工具使用更加得心应手。这次实训,我们分工明确,积极配合,体现了团队协作的精神,圆满完成了实训任务。
附录
(十字路口交通灯程序代码)
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity jtd is
port( clock : in std_logic;
reset,reset1,reset2 : in std_logic;
seg_out : out std_logic_vector(7 downto 0); q_out : out std_logic_vector(7 downto 0); w:out std_logic_vector(7 downto 0)
end ;
architecture bhv of jtd is
component qhz_any
port( clk: in std_logic;
Q: out std_logic
end component;
component qhz_any1
port( clk: in std_logic;
Q: out std_logic
end component;
component jsq0123
port( clk: in std_logic;
Q: out std_logic_vector(1 downto 0));
end component;
component mux21a
port( s : in std_logic_vector(1 downto 0);
a,b,c,d : in std_logic_vector(7 downto 0); y : out std_logic_vector(7 downto 0);
w1:out std_logic_vector(7 downto 0)
end component;
component traffic
port( clk : in std_logic;
rst,rst1 ,rst2: in std_logic;
times : out integer range 0 to 100;
q : out std_logic_vector(7 downto 0);
shi0,shi1: out std_logic_vector(7 downto 0); ge0,ge1: out std_logic_vector(7 downto 0) end component;
signal m1 : std_logic;