基于VHDL的交通灯控制器设计_第1页
基于VHDL的交通灯控制器设计_第2页
基于VHDL的交通灯控制器设计_第3页
基于VHDL的交通灯控制器设计_第4页
基于VHDL的交通灯控制器设计_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、生物医学工程 王春雨 基于VHDL的交通灯控制器设计应用VHDL语言设计数字系统,大部分设计工作可在计算机上完成,从而缩短系统开发时间,提高工作效率。下面介绍基于VHDL设计交通灯控制器的一种方案,并给出源程序和仿真结果。1 系统功能与要求实现交通繁忙的主路和偶有车行的小路交会路口的交通管理。要求:1、交通灯控制器控制主干道和小路交叉路口的交通。2、小路口来车,主线路口绿灯切换到黄灯5秒钟后变为红灯。3、红灯燃亮20秒后,自动切换为绿灯。4、指示左转弯的绿灯亮12 s,绿灯变至红灯时,黄灯亮3 s。5、主路的交通管制重新切换到绿灯后5分钟内不理睬小路上的车况,即使又有车辆驶入小路路口。上述主路

2、上的灯光显示,小路口的灯信号与之逻辑配合。2 程序设计根据交通灯控制器的功能与要求,将其总体电路分为分频器、信号控制器两个模块。外部脉冲振荡器的频率选为32768 kHz,经分频器分频得1 Hz的信号,1 Hz信号用做信号控制器的计数脉冲,用VHDL设计组成交通灯控制器的分频器、信号控制器两个模块,在MAX+plus 平台上,编译VHDL程序,然后用原理图输入法形成总体框图。实验程序:Library IEEE; Use IEEE.Std_Logic_1164.All; Use IEEE.STd_Logic_Unsigned.All;Entity Frequency10Hz IsPort (Cl

3、k20M: In Std_Logic; Clk10Hz:Out Std_Logic ); End; Architecture Count Of Frequency10Hz IsSignal Tout:Integer Range 0 to ; Signal Clk:Std_Logic; Begin Process(Clk20M) Begin If rising_edge(Clk20M) then If Tout= then Tout=0; Clk=Not Clk; Else Tout=Tout+1; End If; End If;End Process;Clk10Hz=Clk; End;Libr

4、ary IEEE; Use IEEE.Std_Logic_1164.All; Use IEEE.STd_Logic_Unsigned.All;Entity Frequency IsPort (Clk10Hz: In Std_Logic; Clk1Hz:Out Std_Logic); End; Architecture Count Of Frequency IsSignal Tout:Integer Range 0 to 4; Signal Clk:Std_Logic; Begin Process(Clk10Hz) Begin If rising_edge(Clk10Hz) then If To

5、ut=4 then Tout=0; Clk=Not Clk; Else Tout=Tout+1; End If; End If;End Process;Clk1Hz=Clk; End;Library IEEE; Use IEEE.Std_Logic_1164.All; Use IEEE.Std_Logic_Unsigned.All; Entity Controller IsPort (Clock:In Std_Logic;Hold:In Std_Logic;CountNum:IN Integer RANgE 0 TO 49;Flash:Out Std_Logic;NumA,NumB:Out I

6、nteger Range 0 To 25;RedA,GreenA,YellowA:Out Std_Logic;RedB,GreenB,YellowB:Out Std_Logic); End;ARCHITECTURE Behavior OF Controller ISBEGIN PROCESS(CLOCK)Begin If falling_edge(Clock) thenIf Hold=1 then RedA=1; RedB=1; GreenA=0; GreenB=0; YellowA=0; YellowB=0; Flash=1; Else Flash=0; If CountNum=19 the

7、n NumA=20-CountNum; RedA=0; GreenA=1; YellowA=0; Elsif (CountNum=24) then NumA=25-CountNum; RedA=0; GreenA=0; YellowA=1; Else NumA=50-CountNum; RedA=1; GreenA=0; YellowA=0; End If; If CountNum=24 then NumB=25-CountNum; RedB=1; GreenB=0; YellowB=0; Elsif CountNum=44 then NumB=45-CountNum; RedB=0; Gre

8、enB=1; YellowB=0; Else NumB=50-CountNum; RedB=0; GreenB=0; YellowB=1; End If; End If;End If; End Process;End;LIBRARY IEEE;USE IEEE.Std_logic_1164.all;Use IEEE.Std_Logic_Unsigned.All;ENTITY Counter ISPORT (Clock:IN Std_logic;Reset:IN Std_logic;Hold:IN Std_logic;CountNum:BUFFER Integer RANGE 0 TO 49);

9、END;ARCHITECTURE Behavior OF Counter ISBEGIN PROCESS(Reset,Clock) BEGIN IF Reset=1THENCountNum=0; ELSIF rising_edge(Clock) THEN IF Hold=1THEN CountNum=CountNum; ELSE IF CountNum=49 THEN CountNum=0; ELSE CountNum=CountNum+1; END IF; END IF; END IF; END PROCESS;END Behavior;Library IEEE;Use IEEE.Std_L

10、ogic_1164.All;Use IEEE.Std_Logic_Unsigned.All;Entity Display Is Port( Clock:In Std_Logic; Flash:In Std_Logic; Qin:In Std_Logic_Vector(3 Downto 0);Display:Out Std_Logic_Vector(0 to 6);End;Architecture Light Of Display IsSignal Timeout:Integer Range 0 To 11;Begin Process(Clock)Begin If rising_edge(Clock) then If (Flash=0) then Timeout=0; Else If (Timeout=11) then Timeout=0; Else Timeout=Timeout+1; End If; End If; If (TimeoutDisplayDisplayDisplayDisplayDisplayDisplayDispl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论