电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

交通信号控制器的VHDL的设计和实现 通信工程专业VIP免费

交通信号控制器的VHDL的设计和实现  通信工程专业_第1页
交通信号控制器的VHDL的设计和实现  通信工程专业_第2页
交通信号控制器的VHDL的设计和实现  通信工程专业_第3页
交通信号控制器的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:负责红绿灯的显示秒数十位。三、设计方案时间显示数据输出红黄绿灯信号输出图2交通信号灯控制器的原理框图采用VHDL语言输入的方式实现交通信号灯控制器CLK时间显示数据输出状态发生器(两位二进制计数器)定时时间到检测电路预置数产生电路计时器1秒时钟脉冲信号发生器红黄绿灯输出控制电路(RYG)秒脉冲信号发生器(进程P1和P2)计数器(进程P3、P4和P5)状态寄存器(进程P6)信号灯输出图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)VARIABLECNT8:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFCLK'EVENTANDCLK='1'THENIFCNT8="11111111"THENCNT8:="01111111";FULL<='1';ELSECNT8:=CNT8+1;FULL<='0';ENDIF;ENDIF;ENDPROCESSP_REG;PROCESS(full)BEGINIFfull'EVENTANDfull='1'THENIFTIME<"1000011"THENTIME<=TIME+1;ELSeTIME<="0000000";次态发生器信号灯输出信号(进程P7)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";t...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

文章天下+ 关注
实名认证
内容提供者

各种文档应有尽有

最新文章

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部