您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > EDA课程设计报告(交通信号控制器的VHDL的设计)
交通信号控制器的VHDL的设计一、设计任务模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器。能达到的要求:(1)交通灯从绿变红时,有4秒黄灯亮的间隔时间;(2)交通灯红变绿是直接进行的,没有间隔时间;(3)主干道上的绿灯时间为40秒,支干道的绿灯时间为20秒;(4)在任意时间,显示每个状态到该状态结束所需的时间。支干道主干道图1路口交通管理示意图ABCD主干道交通灯绿(40秒)黄(4秒)红(20秒)红(4秒)支干道交通灯红红绿黄表1交通信号灯的4种状态二、设计原理1、设计目的:学习DEA开发软件和QuartusII的使用方法,熟悉可编程逻辑器件的使用。通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制2、设计说明(1)第一模块:clk时钟秒脉冲发生电路在红绿灯交通信号系统中,大多数情况是通过自动控制的方式指挥交通的。因此为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。模块说明:系统输入信号:Clk:由外接信号发生器提供256的时钟信号;系统输出信号:full:产生每秒一个脉冲的信号;(2)第二模块:计数秒数选择电路计数电路最主要的功能就是记数负责显示倒数的计数值,对下一个模块提供状态转换信号。模块说明:系统输入:full:接收由clk电路的提供的1hz的时钟脉冲信号;系统输出信号:tm:产生显示电路状态转换信号tl:倒计数值秒数个位变化控制信号th:倒计数值秒数十位变化控制信号(3)第三模块:红绿灯状态转换电路本电路负责红绿灯的转换。模块说明:系统输入信号:full:接收由clk电路的提供的1hz的时钟脉冲信号;tm:接收计数秒数选择电路状态转换信号;系统输出信号:comb_out:负责红绿灯的状态显示。(4)第四模块:时间显示电路本电路负责红绿灯的计数时间的显示。模块说明:系统输入信号:tl:倒计数值秒数个位变化控制信号;th:倒计数值秒数十位变化控制信号;系统输出信号:led7s1:负责红绿灯的显示秒数个位。led7s2:负责红绿灯的显示秒数十位。三、设计方案时间显示数据输出红黄绿灯信号输出状态发生器(两位二进制计数器)定时时间到检测电路预置数产生电路计时器1秒时钟脉冲信号发生器红黄绿灯输出控制电路(RYG)图2交通信号灯控制器的原理框图采用VHDL语言输入的方式实现交通信号灯控制器CLK时间显示数据输出信号灯输出图3交通信号灯控制器程序原理框图该程序由7个进程组成,进程P1和P2将CLK信号分频后产生1秒信号,进程P3、P4、P5构成两个带有预置数功能的十进制计数器,其中P4产生允许十位计数器计数的控制信号。进程P6实现状态转换和产生状态转换的控制信号,进程P7产生次态信号和信号灯输出信号,以及每一个状态的时间值。四、VHDL程序:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYtrafficISPORT(clk:instd_logic;led7s1:outstd_logic_vector(6downto0);led7s2:outstd_logic_vector(6downto0);comb_out:outstd_logic_vector(5downto0));END;ARCHITECTUREoneOFtrafficISTYPEdmIS(s0,s1,s2,s3);SIgnalcurrent_state,next_state:dm;SIGNALFULL:STD_LOGIC;SIGNALtl:STD_LOGIC_VECTOR(6DOWNTO0);SIGNALth:STD_LOGIC_VECTOR(1DOWNTO0);SIGNALtm:STD_LOGIC_VECTOR(6DOWNTO0);SIGNALTIME:STD_LOGIC_VECTOR(6DOWNTO0);BEGINP_REG:PROCESS(CLK)秒脉冲信号发生器(进程P1和P2)计数器(进程P3、P4和P5)状态寄存器(进程P6)次态发生器信号灯输出信号(进程P7)VARIABLECNT8:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFCLK'EVENTANDCLK='1'THENIFCNT8=11111111THENCNT8:=01111111;FULL='1';ELSECNT8:=CNT8+1;FULL='0';ENDIF;ENDIF;ENDPROCESSP_REG;PROCESS(full)BEGINIFfull'EVENTANDfull='1'THENIFTIME1000011THENTIME=TIME+1;ELSeTIME=0000000;ENDIF;ENDIF;ENDPROCESS;REG:process(full,current_state)BEGINIFfull='1'ANDfull'EVENTTHENcurrent_state=next_state;ENDIF;ENDprocess;COM:process(current_state,time)begincasecurrent_stateiswhens0=comb_out=001100;tm=39-time;iftime=39thennext_state=s1;elsenext_state=s0;endif;whens1=comb_out=010100;tm=43-time;iftime=43thennext_state=s2;elsenext_state=s1;endif;whens2=comb_out=100010;tm=63-time;iftime=63thennext_state=s3;elsenext_state=s2;endif;whens3=comb_out=100001;tm=67-time;iftime=67thennext_state=s0;elsenext_state=s3;endif;endcase;endprocess;PROCESS(tm)BEGINIFtm=30THENth=11;tl=tm-30;ELSIFtm=20THENth=10;tl=tm-20;ELSIFtm=10THENth=01;tl=tm-10;ELSEth=00;tl=tm;ENDIF;ENDPROCESS;process(th,tl)begincasethiswhen00=led7s1=0111111;when01=led7s1=0000110;when10=led7s1=1011011;when11=led7s1=1001111;whenothers=null;endcase;casetliswhen0000000=led7s2=0111111;when0000001=led7s2=0000110;when0000010=led7s2=1011011;when0000011=led7s2=1001111;when0000100=led7s2=1100110;when0000101=led7s2=1101101;when0000110=led7s2=1111101;when0000111=led7s2=0000111;when0001000=led7s2=1111111;when0001001=led7s2=1101111;whenothers=null;endcase;endprocess;end;五、仿真结果(如下图)六引脚设置选择的引脚锁定方法如下图所示。将未使用的管脚设置为三态输入调试过程中,由于在实验室时间仓促,未能达到理想效果,程序有待改进。七、实验心得体会通过这次课程设计,我进一步加深了对电子设计自动化的了解。并进一步熟练了对QuartusII软件的操作。在编写程序的过程中,遇到了很多问题,使我发现自己以前学习上存在的不足。通过与同学探讨,终于把问题都解决了,并加深了对交通灯原理和设计思路的了解。同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。总之,通过这次的设计,进一步了解了EDA技术,收获很大,对软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。
本文标题:EDA课程设计报告(交通信号控制器的VHDL的设计)
链接地址:https://www.777doc.com/doc-309586 .html