《EDA课程实训设计(交通信号灯设计实现).doc》由会员分享,可在线阅读,更多相关《EDA课程实训设计(交通信号灯设计实现).doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课程设计任务单交通灯的设计与实现一、实训目的提高学生动手编程能力和对EDA可编程逻辑器件课程在实际生活中的应用的能力。二、 实训内容及要求在EDA实验箱上完成十字路口交通灯的设计与实现。要求将实验箱上的8个LED灯中的6个表示东西方向和南北方向的红黄绿交通灯。同时在数码管上显示等待时间,并在数秒后进行红绿灯的转换,可增加扩展功能。三、 实训软硬件简介1. Quartus II 8.0Quartus II 8.0是著名可编程逻辑器件生产商Altera的综合性开发软件,在21世纪推出,可以在XP,linux,unix上使用,已取代MAX+PLUS,它提供了一种与结构无关的设计与环境,使设计者能方便
2、地进行设计输入、快速处理和器件编程。其便于其支持的硬件描述语言有VHDL、Verilog等,解决了原理图与HDL混合输入设计的问题。编译仿真检测无误后,便可以下载信息通过编程器下载至目标器件中了。2. EDA综合实验箱综合实验箱可分为实验主板和可编程逻辑器件核心两部分,可编程逻辑器件核心板可以按需更换,以满足不同要求。实验箱主要具有以下几个特点:实验箱电路动态可重组:可按需配置成不同连接,以满足不同实验项目的需要可独立支持MCS51单片机实验:具有仿真功能,不需要额外配备昂贵的仿真器。可独立完成可编程逻辑器件实验:可按需更换不同芯片模板,满足不同实验需要;提供了扩展接口:让学生可以设计自己的电
3、路连接到试验箱;灵活支撑综合性、创造性实验:有利于训练学生综合创新能力。综合实验箱采用模式化结构,可以通过不同的模式选择是进行单片机实验还是可编程实验。通过主控电路选择左侧的单片机或者是下侧的可编程器件,选择需要的外围资源。主要硬件资源由三个部分构成:单片机资源、可编程逻辑器件资源、以及一些常用外设资源。四、 实训设计思想1. 设计效果将实训要求和实际生活中的交通信号灯状态相结合,本系统设计实现数码管实时显示东西和南北两个方向的交通信号灯的通行和等待的剩余时间,在实验箱的LED灯中选取6个灯分别代表两个方向的红绿黄灯同时与数码管显示的时间相对应,为了防止出现交通灯出现临时性错误,设计一个复位键
4、,以能够及时恢复至正常状态。因深夜时车辆较少,故而设计一个按键在深夜时将交通灯全部变为黄灯闪烁,提醒车辆减速行驶。2. 程序代码设计思想经过分析,交通信号灯在正常情况下分为6个状态,同时增加两种特殊情况下出现的两种状态;本系统运用状态机,将系统频率clk通过分频器分频,实现了LED灯的闪烁和数码管的显示功能,同时增加了两个额外特殊情况处理功能,成功模拟了现实生活中的交通信号灯的运作状况。(1)分频设计因数码管和LED灯的显示频率不同,故需要对系统clk进行分频,分频器实现的是将高频时钟信号转换成低频的时钟信号,用于触发控制器、计数器和扫描显示电路。该分频器实现的是一千分频,将一千赫兹的时钟信号
5、分频成一赫兹的时钟信号。图1 分频器部分原理图(2)状态机设计根据要实现的功能及各状态之间的转换经分析,正常状态下交通信号灯可以分为4个状态分别为表一中的S1、S2、S3、S4,在出现特殊情况或者在深夜时,状态转移分别是S5、S6,各状态之间持续时间详见表一,状态转移图详见图2.。表1 交通信号各灯状态详细表交通灯东西方向南北方向持续时间状态红(led7)黄(led6)绿(led5)红(led2)黄(led1)绿(led0)S110000112S21000104S300110012S40101004S5100100/S6010010/S1S2S3S4CNT1=0CNT1=0CNT1=4CNT1
6、=0图2 交通信号灯状态转移图S5S6rst1=0rst2=0(3)显示模块设计串行连接,即每个数码管对应的引脚都连接在一起,通过控制公共端为高电平控制相应数码管的亮,灭(共阴极数码管的公共端为高电平时,LED不亮;共阳极的公共端为低电平时,LED不亮)五、 实训步骤及仿真结果1. 实训步骤设计输入:使用原理图、硬件描述语言(VHDL、AHDL、VerilogHDL)等设计文件对待设计的功能做设计图。综合:将硬件描述语言翻译成由逻辑门、触发器、寄存器等组成的电路结构。布局布线:利用综合后的网表文件,将逻辑和时序要求映射到目标器件中,进行目标器件逻辑资源的分配、布线、互联等。仿真:利用软件,验证
7、设计的正确性。仿真分为功能仿真和时序仿真,功能仿真仅验证逻辑功能,不包含时延信息。时序分析:观察和报告时序信息,并可进行时序约束。主要参数有:建立时间(tsu)、保持时间(th)、时钟至输出延时(tco)、引脚至引脚延时(tpd)、最大时钟频率(fmax)等.编程和配置:设计流程的最后一步,将软件产生的配置文件下载到目标器件中,进行硬件的实现和验证。2. 时序仿真3. 硬件仿真在完成设计输入及成功编译、仿真后经编译无错后,设置pins锁定引脚,(详见管脚分配表2),经过硬件检验,可以实现如下功能:1) 在交通信号灯开始工作前,等待系统指令。2) 按下key0键,系统切换至正常工作,交通信号灯在
8、正常的顺序下开始闪烁,同时数码管可以实时显示剩余等待时间。3) 按下key1键,系统切换至红灯状态,目的为了在交通事故出现后及时进行事故处理。4) 按下key2键,系统切换至深夜工作状态,全部亮黄灯提醒,过往车辆慢速行驶。表2 管脚分配表原理图Mode5EP3C10E144原理图Mode5EP3C10E144PIO0CLK1PIN38PIO26SEG3PIN74/SW0PIN86PIO27SEG4PIN75PIO15LED0PIN60PIO28SEG5PIN76PIO16LED1PIN64PIO29SEG6PIN77PIO17LED2PIN65PIO30SEG7PIN79PIO18LED3PI
9、N66PIO31DIG0PIN80PIO19LED4PIN67PIO32DIG1PIN83PIO20LED5PIN68PIO33DIG2PIN84PIO21LED6PIN69PIO34DIG3PIN85PIO22LED7PIN70PIO35DIG4PIN4PIO23SEG0PIN71PIO36DIG5PIN3PIO24SEG1PIN72PIO37DIG6PIN2PIO25SEG2PIN73PIO38DIG7PIN1六、 实训总结在这次EDA实训中,我们充分运用了上学期学习的知识,将分频器和状态机等知识融入其中,实现了更加智能化的交通灯系统设计,程序代码更易扩展。通过一个星期的实训,我们对于交通
10、灯的控制原理有了清晰的了解,进一步加深了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_o
11、ut : 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 iscomponent 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 compon
12、ent;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
13、 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;signal m2 : std_logic;signal m3 :
14、integer range 0 to 100;signal m4 : std_logic_vector(7 downto 0);signal m5 : std_logic_vector(7 downto 0);signal m6 : std_logic_vector(1 downto 0);signal m7 : std_logic_vector(7 downto 0);signal m8 : std_logic_vector(7 downto 0); begin u1 : qhz_any port map(clk=clock,Q=m1); u2 : qhz_any1 port map(clk
15、=clock,Q=m2); u3 : jsq0123 port map(clk=m2,Q=m6); u4 : traffic port map(clk=m1,q=q_out,rst=reset,rst1=reset1,rst2=reset2,ge0=m4,shi0=m5,ge1=m7,shi1=m8); u5 : mux21a port map(a=m4,b=m5,c=m7,d=m8,y=seg_out,s=m6,w1=w); end bhv; -miao fenpin- library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_u
16、nsigned.all;entity qhz_any is generic(n:integer:=20000); port( clk: in std_logic; Q: out std_logic);end qhz_any;architecture bhv of qhz_any is begin process(clk) variable cout:integer:=0; begin if clkevent and clk=1 then if cout(n/2) then Q=1; cout:=cout+1; elsif cout(n-1) then Q=0; cout:=cout+1; el
17、se cout:=0; end if; end if; end process; end bhv; -jishuqi0123- library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity jsq0123 is port( clk: in std_logic; Q: out std_logic_vector(1 downto 0);end jsq0123;architecture bhv of jsq0123 is signal cqi:std_logic_vector(1 downto 0);
18、begin process(clk) begin if clkevent and clk=1 then cqi=cqi+1; end if; end process; Q=cqi; end bhv; -scan fenpin- library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity qhz_any1 is generic(n:integer:=20); port( clk: in std_logic; Q: out std_logic);end qhz_any1;architecture b
19、hv of qhz_any1 is begin process(clk) variable cout:integer:=0; begin if clkevent and clk=1 then if cout(n/2) then Q=1; cout:=cout+1; elsif cout(n-1) then Q=0; cout:=cout+1; else cout:=0; end if; end if; end process; end bhv; -traffic-library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arit
20、h.all; use ieee.std_logic_unsigned.all; entity traffic is 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,ge0,ge1,shi1:out std_logic_vector(7 downto 0);end traffic;architecture bhv of traffic is signal cnt0,cnt1 :
21、 integer range 0 to 100; signal l10,l20,l11,l21:integer range 0 to 9; type state_value is (s1,s2,s3,s4,s5,s6); signal state : state_value; begin process(clk,rst,rst1,rst2) begin if rst=0 then state=s1; -S,N travel E,W stop cnt0=11; cnt1=7; q=10000001; elsif rst1=0 then state=s5; cnt1=00; cnt0=00; q=
22、10001000; elsif rst2=0 then state=s6; cnt1=00; cnt0=00; q -s1 if cnt1=0 then state=s2; q=10000010; cnt0=3; cnt1=3; else state=s1; cnt0=cnt0-1; cnt1 -s2 if cnt1=0 then state=s3; q=00100100; cnt1=11; cnt0=7; else state=s2; cnt1=cnt1-1; cnt0 -s3 if cnt1=4 then state=s4; q=01000100; cnt0=3; cnt1=3; else
23、 state=s3; cnt1=cnt1-1; cnt0 -s4 if cnt1=0 then state=s1; cnt0=11; cnt1=7; q=10000001; else state=s4; cnt0=cnt0-1; cnt1 -s4 state=s5; cnt0=00; cnt1 -s4 state=s6; cnt0=00; cnt1=00; end case; -end if; end if; end process;l10=cnt0/10; l20=cnt0 rem 10;- JI SUAN SHI WEI ; GE WEIl11=cnt1/10; l21shi0shi0shi0shi0shi0shi0shi0shi0shi0shi0ge0ge0ge0ge0ge0ge0ge0ge0ge0ge0shi1shi1shi1shi1shi1shi1shi1shi1shi1shi1ge1ge1ge1ge1ge1ge1ge1ge1ge1ge1 y=a; w1y=b; w1y=c;w1y=d;w1=11110111; end case; end process;end one; 信号基础教研中心
限制150内