《EDA报告-交通灯控制器》由会员分享,可在线阅读,更多相关《EDA报告-交通灯控制器(17页珍藏版)》请在金锄头文库上搜索。
1、天津工业大学EDA课程设计报告题目: 交通灯控制器 班级: 电子1301 学号: 姓名: 一、设计目的1.了解交通灯的变化规律;2.掌握VHDL编程语言,了解实际设计中的优化方案。二、开发软件Quartus II三、设计任务及分析 1.设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。 2.红、绿、黄发光二极管作信号灯。 3.主干道处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。 4.主、支干道均有车时,两者
2、交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。5.在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。题目分析:根据题目要求可以知道,系统需要在几种不同的状态之间进行切换,为了设计的方便,并且实现高效率和高可靠的逻辑控制,这里我们采用状态机的方法进行设计。四、设计方案主控电路是一个单进程Moore型有限状态机,通过接收计数器发送的“时间到”(进位)信号以及根据s(用来指示支干道是否有车来,1表示支干道没有车来,0 支干道有车来)的值进行状态的切换,实现对十字路口主干道、支干道两个方向的
3、红、黄、绿灯状态的控制。系统框图如图一所示。图一 系统整体框图具体控制过程为:当s=1时,支干道没有车来,主干道处于常允许通行的状态,此时主干道亮绿灯,支干道亮红灯;当s=0时,支干道有车来,即主、支干道均有车,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,且在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡。变化规律为:主干道绿灯亮,支干道红灯亮主干道黄灯亮,支干道红灯亮主干道红灯亮,支干道绿灯亮主干道红灯亮,支干道黄灯亮主干道绿灯亮,支干道红灯亮,这样依次循环。由于主、支干道有45秒和25秒的放行时间,以及每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,所以设
4、计45秒、25秒和5秒计时电路,均采用倒计时。关于显示的问题,译码电路是把对应的二进制码直接转换成数码管显示时的码字,并且由于实验箱上采用的是8位数码管,所以必须采用数码管的动态扫描。五、各模块功能介绍1.顶层原理图及基本原理如图1-1所示,系统时钟(48M)经过分频得到1HZ方波,为状态机和计数器提供时钟,lsdsn5.0六位总线分别表示主干道和支干道的绿灯、黄灯、红灯。ledsn5:主干道绿灯,ledsn4:主干道黄灯,ledsn3:主干道红灯,ledsn2:支干道绿灯,ledsn1:支干道黄灯,ledsn0:支干道红灯。当系统复位后,如果s输入一个低电平(主、支干道均有车时,两者交替允许
5、通行,主干道每次放行45秒,支干道每次放行25秒)状态机进入s0,主控电路c45输出一个高电平使能45s倒计时计数器(此时主干道绿灯亮,支干道红灯亮);当计数结束后,45s倒计时计数器的cout输出一个进位信号,使状态机进入下一个状态s1,此时主控电路(状态机)c545输出一个高电平使能主干道5s倒计时计数器(此时主干道黄灯亮,支干道红灯亮);当计数结束后,5s倒计时计数器的cout输出一个进位信号,使状态机进入下一个状态s2,此时主控电路c25输出一个高电平使能25s倒计时计数器(此时主干道红灯亮,支干道绿灯亮);当计数结束后,25s倒计时计数器的cout输出一个进位信号,使状态机进入下一个
6、状态s3,此时主控电路c525输出一个高电平使能支干道5s倒计时计数器(干道红灯亮,支干道黄灯亮);当计数结束后, 5s倒计时计数器的cout输出一个进位信号,使状态机重新进入下一个状态s0,依次循环.当系统复位后,如果s输入一个高电平(主干道处于常允许通行的状态),此时状态机一直保持在s0状态。图1-1 顶层原理图图1-2 s=0时原理图仿真结果 当s=0时,表示主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,从仿真波形图上可以看到,ledsn5.0分别表示主干道绿、黄、红灯,支干道绿、黄、红灯,当复位后,主干道绿灯(ledsn5=1),支干道红灯(leds
7、n0=1);计满45秒后进入下个状态,主干道黄灯(ledsn4=1),支干道红灯(ledsn0=1);计满5秒后进入下个状态,主干道红灯(ledsn3=1),支干道绿灯(ledsn2=1);计满25秒后进入下个状态,主干道红灯(ledsn3=1),支干道黄灯(ledsn1=1);计满5秒后进入下个状态,主干道绿灯(ledsn5=1),支干道红灯(ledsn0=1),依次循环.(sg和bt为译码电路的仿真结果,在此可以忽略)图1-3 s=1时原理图仿真结果当s=1时,表示主干道处于常允许通行的状态,此时从仿真图上可以看到状态一直保持在主干道绿灯(ledsn5=1),支干道红灯(ledsn0=1)
8、。2.分频器如图2-1所示,这次交通灯的设计用到了两个分频器,一个是将系统时钟进行48M分频得到1HZ的时钟提供给状态机和计数器;另一个分频器是将系统时钟进行48K分频得到1KHZ的时钟,给数码管动态显示模块作为扫频时钟用。这里采用的是事先写好的通用程序,分频系数可以根据具体需要进行修改,在此只给出原理图及VHDL源代码。图2-1 分频器原理图其VHDL代码如下:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.NUMERIC_B
9、IT.ALL;-包含移位函数等.ENTITY int_div2ISGENERIC(F_DIV:Integer:=48000;-分频系数F_DIV_WIDTH:Integer:=32-分频计数器宽度);PORT(clock :INSTD_LOGIC;clock_out:OUTSTD_LOGIC);END;ARCHITECTURE one OFint_div2ISSIGNAL clk_p_r:STD_LOGIC;-上升沿输出时钟SIGNAL clk_n_r:STD_LOGIC;-下降沿输出时钟SIGNAL count_p:STD_LOGIC_VECTOR(f_div_width-1DOWNTO 0
10、);-上升沿脉冲计数器SIGNAL count_n:STD_LOGIC_VECTOR(f_div_width-1DOWNTO 0);-下降沿脉冲计数器-SIGNAL f_div_width_r:STD_LOGIC_VECTOR(f_div_width-1DOWNTO 0);SIGNAL clock_out_r:STD_LOGIC;SIGNAL full_div_p:STD_LOGIC;-上升沿计数满标志SIGNAL half_div_p:STD_LOGIC;-上升沿计数半满标志SIGNAL full_div_n:STD_LOGIC;-下降沿计数满标志SIGNAL half_div_n:STD_
11、LOGIC;-下降沿计数半满标志BEGINclock_out=clock_out_r;-clock_out=clock WHEN (F_DIV=1) ELSE (clk_p_r=1 AND clk_n_r=1) WHEN (F_DIV(0)=1) clk_p_r);-判断计数标志位置位与否.full_div_p=1 WHEN (count_pF_DIV-1) ELSE 0;half_div_p=1 WHEN (count_p(F_DIV/2 )-1) ELSE 0;full_div_n=1 WHEN (count_nF_DIV -1) ELSE 0;half_div_n=1 WHEN (cou
12、nt_n(F_DIV/2)-1)ELSE 0;PROCESS(clock)-上升沿脉冲计数-VARIABLE i:Integer RANGE 0 TO 31;BEGINIFRISING_EDGE(clock)THENIF full_div_p=1 THENcount_p=count_p+1;IF (half_div_p=1) THENclk_p_r=0;ELSEclk_p_r=1;END IF;ELSEcount_p0);clk_p_r= 0;END IF;END IF;END PROCESS;PROCESS(clock)-下降沿脉冲计数BEGINIFFALLING_EDGE(clock)TH
13、ENIF full_div_n=1 THENcount_n=count_n+1;IF half_div_n=1 THENclk_n_r=0;ELSEclk_n_r=1;END IF;ELSEcount_n0);clk_n_r = 0;END IF;END IF;END PROCESS;PROCESS(clock)BEGINIFRISING_EDGE(clock)THENIF F_DIV= 1 THENclock_out_r=clock;ELSEIF (F_DIV REM 2) =1 THENclock_out_r= clk_p_r AND clk_n_r;ELSEclock_out_r=clk_p_r;END IF;END IF;END IF;END PROCESS;END;3.主控电路(状态机)主控电路是一个单进程的Moore型有限状态机,状态转换图如图3-1所示。图3-1 状态转换图每种状态说明如下:原状态目的状态转换条件状态输出s0s1s=1且s45=1ledsn=100001;c45=1;c25=0;c545=0;c525=0;s1s2s545=1ledsn=010001;c45=0;c25=0;c545=1;c525=0;s2