十字路口交通灯控制器的设计.doc_第1页
十字路口交通灯控制器的设计.doc_第2页
十字路口交通灯控制器的设计.doc_第3页
十字路口交通灯控制器的设计.doc_第4页
十字路口交通灯控制器的设计.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

西安工业大学北方信息工程学院课程设计报告课 程 数字系统设计 题 目 十字路口交通灯控制器的设计 专 业 通信工程 班 级 学 号 姓 名 2012年 6 月 23 日目录一、设计目的2二、设计要求和任务2设计任务:2三、方案论证2四、VHDL语言程序描述3五、对VHDL语言进行处理7六、硬件仿真7七、心得体会1010一、设计目的利用MaxplussII平台的VHDL语言设计一个十字交叉路口的交通灯控制器,要求主干道和支道持续的时间各不相同,并能够用倒计时的形式显示。二、设计要求和任务设计任务:有一条主干道和一条支干道的汇合点形成十字交叉路口,主干道为东西向,支干道为南北向。为确保车辆安全,迅速地通行,在交叉道口的每个入口处设置了红、黄、绿3种信号灯(可利用实验板上的LED显示灯表示交通状态,其中O1、O2、O3分别表示主干道红、黄、绿灯,O6、O7、O8分别表示支干道红、黄、绿灯)。要求:(1)主干道绿灯亮时,支干道红灯亮,反之亦然,两者交替允许通行,主干道每次放行35s,支干道每次放行25s。每次由绿灯变为红灯的过程中,亮光的黄灯作为过渡,时间为5s。(2)利用七段数码显示器,实现正常的倒计时显示功能(用数码管1和数码管2显示主干道倒计时时间,用数码管4和数码管5显示支干道倒计时时间)。(3)能实现总体清零功能:计数器由初始状态开始计数,对应状态的指示灯亮。三、方案论证图1交通灯控制器原理图交通灯控制器原理框图如图1所示,包括置数模块、计数模块、主控制器模块和译码器模块。置数模块将交通灯的点亮时间预置到置数电路中,计数模块以秒为单位倒计时,当计数值减为零时,主控电路改变输出状态,电路进入下一个状态的倒计时。其中,核心部分是主控制模块,他负责整个交通灯的运行状态。表1 交通灯控制器的状态转换表状态主干道支干道时间1(00)绿灯亮红灯亮35s2(01)黄灯亮红灯亮5s3(10)红灯亮绿灯亮25s4(11)红灯亮黄灯亮5s(1)控制器模块设计依设计要求,可画出交通灯点亮规律的状态转换表,如表1所示。根据状态图进行主控制器的设计。(2)译码模块由于系统要进行35s,5s,25s三种定时,可以采用一个置数模块由主控模块输出的信号控制定时时间的选择。(3)定时计数器采用倒序计时的方式,由主控模块输出的信号控制定时的开始,定时时间结束时输出定时时间结束信号到主控模块,通过主控模块控制交通灯的亮、灭。(4)译码模块把计数器输出的信号分别进行译码,由数码管显示当前计数。四、VHDL语言程序描述-主干道放行35秒,支干道放行25秒,黄灯过渡时间为5秒的程序示例library ieee; -库说明use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity jiaotongdeng is -实体名称 port( clk_in:instd_logic; -端口定义:时钟信号rst:instd_logic;复位信号light:outstd_logic_vector(7 downto 0);指示灯显示 LED7S0:out STD_LOGIC_VECTOR(6 downto 0); -支干道十位数 LED7S1:out STD_LOGIC_VECTOR(6 downto 0); -支干道个位数 LED7S2:out STD_LOGIC_VECTOR(6 downto 0); -主干道十位数 LED7S3:out STD_LOGIC_VECTOR(6 downto 0) -主干道个位数 );endjiaotongdeng;architecture arc of jiaotongdeng is -结构体 type states is(green_red,yellow_red,red_green,red_yellow); -定义了一个新的类型signalstate:states; signal nextstate:states:=green_red; -定义下一状态 signal data0:integer range 0 to 3; -支干道十位初始值范围 signal data1:integer range 0 to 9; -支干道个位初始值范围 signal data2:integer range 0 to 3; -主干道十位初始值范围 signal data3:integer range 0 to 9; -主干道个位初始值范围signalclock_buffer:std_logic; signal count_time:integer range 0 to 1999999; -时钟技术范围signalclk:std_logic; signal sec0:integer range 0 to 3; -支干道十位显示值范围 signal sec1:integer range 0 to 9; -支干道十位显示值范围 signal sec2:integer range 0 to 3; -主干道十位显示值范围 signal sec3:integer range 0 to 9; -主干道十位显示值范围beginfrequent:process(clk_in) -分频程序beginifclk_inevent and clk_in=1 then if count_time=1999999 then -2M翻转一次count_time=0;clock_buffer=not clock_buffer;elsecount_time=count_time+1;end if;end if;clk=clock_buffer; -输出为1HZ的频率end process;light_statment:process(rst,state) -交通信号灯的显示状态,及状态转换、初始值的设置beginif rst=0 then lightlight=11011011; -主干道绿灯亮,支干道红灯亮(状态一)nextstate=yellow_red; -下一状态为主干道黄灯亮,支干道红灯亮(状态二) data2=0;-下一状态的初始值设置 data3=4; data0=0;data1light=10111011; -主干道黄灯亮,支干道红灯亮(状态二)nextstate=red_green; data2=2; data3=9;data0=2;data1light=01111110; -主干道红灯亮,支干道绿灯亮(状态三)nextstate=red_yellow; data2=0; data3=4;data0=0;data1light=01111101; -主干道红灯亮,支干道黄灯亮(状态四)nextstate=green_red; data2=3; data3=4; data0=3;data1=9;end case;end if;end process;time:process(rst,clk) -记时状态beginifrst=0 then sec0=3;sec1=9;sec2=3;sec3=4; state=green_red; -数码管的初始值,初始状态elsif (rising_edge(clk)then if(sec0=0 )and(sec1=0) )or (sec2=0 )and(sec3=0)then -若支干道十位为0,个位为0或者主干道十位为0,个位为0就跳转到下一个状态state=nextstate; sec2=data2;sec3=data3; -数码管置下一状态的初始值 sec0=data0;sec1=data1;elsesec1=sec1-1; -支干道个位减一sec3=sec3-1; -主干道个位减一 if(sec2/=0)and(sec3=0)then -主干道十位不为0,个位为0则十位减一,个位附为9 sec2=sec2-1; sec3=9;end if; if (sec0/=0)and(sec1=0)then -支干道十位不为0,个位为0则十位减一,个位附为9 sec0=sec0-1; sec1 LED7S0 LED7S0 LED7S0 LED7S0 LED7S0 LED7S1 LED7S1 LED7S1 LED7S1 LED7S1 LED7S1 LED7S1 LED7S1 LED7S1 LED7S1 LED7S2 LED7S2 LED7S2 LED7S2 LED7S2 LED7S3 LED7S3 LED7S3 LED7S3 LED7S3 LED7S3 LED7S3 LED7S3 LED7S3 LED7S3 83,rst-1,LED7S0006-69、70、73、74、75、76、77LED7S1016-60、61、63、64、65、67、68LED7S2026-18、20、21、22、24、25、27LED7S3036-9、10、11、12、15、16、17Light07-58、57、56、55、54、52、51、50(3) 编译:选取窗口菜单File-Project-Save&Compile,即可进行编译,编译完成后的提示信息如图6所示。图6 编译完成后的提示信息(4) 烧写:(a) 启动pof2jed.exe程序,将编译后生成的pof文件转换成jed文件,如图7所示进行设置。设置完毕,点击“Run”按钮。图7 pof文件转换成jed文件(b) 硬件连接:插上电源,下载线一端连接计算机并口端,一端接硬件板上的JTAG端口。为了进行绝缘,在板子下面垫上一张白纸。电源插好以后,POWER灯(红灯)亮。(c) 启动Atmel ISP.exe程序,将转换好的jiaotongdeng.jed文件下载到实际硬件中去。点击File-New,弹出的对话框“Enter Number of :1”,点击OK按钮。在弹出的对话框中按如图8所示进行设置,在JTAG中选择“Program/Verify”,Device选择“ATF1508AS”,Jedec选择刚刚转换好的jiaotongdeng.Jed,点击OK按钮。在PORT中选择所连接的计算机并口号,在Cable types选择下载线的种类为ByteBlaster。一切设置完毕后,点击Run按钮开始烧写,在烧写过程中,硬件板上的PROG灯(绿灯)会一直闪烁,烧写完毕后绿灯熄灭

温馨提示

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

最新文档

评论

0/150

提交评论