资源描述:
《数字电路课程设计:基于FPGA和VHDL语言的交通灯控制系统设计 》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、数字电路课程设计题目:基于FPGA和VHDL语言的交通灯控制系统设计设计者:彭钊学号:20080711214同组:李小栋日期:2010年12月20日交通灯控制器功能描述:通过两组交通灯来模拟控制十字路口东西、南北两条道路上的车辆通行,所有功能在实验操作平台上模拟通过,其主要功能如下:1.根据要求显示模拟路口东西、南北两个方向上的红灯、黄灯和绿灯的指示状态。2.在LED指示的同时,实现正常的倒计时功能。3.控制实现两种特殊状态并用交通灯加以显示。4.能实现系统总清零。5.具有一定的扩展功能。设计任务:1
2、.用红、黄、绿三色发光二极管做信号灯,主干道A为东西向,设红、黄、绿三色灯为AR、AG、AY;支干道B为南北向,三色灯为BR、BG、BY。2.主干道上车辆较多,所以亮绿灯的时间设为40s;支干道亮绿灯的时间设为35s。当主干道允许通行亮绿灯时则支干道亮红灯;相反,支干道允许通行亮绿灯时则主干道亮红灯。每次由绿灯转变为红灯时,其间要亮5s的黄灯作为过渡,以便行驶中的车辆有时间停到禁止线以内。3.交通灯正常运行时,在LCD显示屏上显示主干道和支道的倒计时时间,ES主干道在当前状态的剩余时间,SN显示支干道
3、在当前状态的剩余时间。4.能实现系统清0,清0后计数器由初始状态开始计数,指示灯指示主干道亮黄灯。5.能实现特殊状态的显示,用开关S作为特殊信号传感器,S为1时进入特殊状态并实现以下功能:(1)计数器停止计数并保持原来的时间数据。(2)东西、南北方向的三色灯全显示红色状态。(3)特殊状态解除后能继续返回正常工作状态。设计要求1.分析设计任务,拟定多种设计方案,根据当时的制作条件,选定适合的方案绘制框图和设计流程。2.设计各部分单元电路或编写VHDL描述程序。3.对制作的电路进行功能测试,分析各项技术指
4、标;或对设计的电路进行功能仿真,分析仿真波形。4.总结设计资料,但因包括原理电路、VHDL描述、仿真波形的设计报告,校验并演示电路装置。状态顺序与灯亮对应表态序(S1S0)主干道(A)支干道(B)亮灯时间1(00)黄灯亮红灯亮5S2(01)红灯亮绿灯亮35S3(10)红灯亮黄灯亮5S4(11)绿灯亮红灯亮40S交通灯控制状态图5S未到,保持原状态5S到,转到下一状态00状态YA,RB40S未到,保持原状态40S到,转到下一状态35S未到,保持原状态35S到,转到下一状态5S未到,保持原状态5S到,转到
5、下一状态10状态RA,YB01状态RA,GB11状态GA,RB译码器真值表SS1S0AGARAYBGBRBY1XX010010000001010001010100011100010系统设计输入:本实验采用硬件语言输入,其整体VHDL源文件描述如下,其中“S0”“S1”“S2”“S3”为事先设定的四种状态libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityJIAOTONGDENGisport(CP,RS,
6、SPE:INSTD_LOGIC;EWRYG,SNRYG:OUTSTD_LOGIC_VECTOR(2DOWNTO0);EW,SN:OUTSTD_LOGIC_VECTOR(7DOWNTO0));endJIAOTONGDENG;architectureJGTofJIAOTONGDENGISTYPESTATESIS(S0,S1,S2,S3);SIGNALS:STATES;SIGNALA1,A2,B2:STD_LOGIC_VECTOR(7DOWNTO0);--BCD转换输入信号SIGNALC1,C2,C3:ST
7、D_LOGIC_VECTOR(7DOWNTO0);SIGNALA2RYG,A3RYG,B2RYG,B3RYG:STD_LOGIC_VECTOR(2DOWNTO0);--BCD码显示在LCD上的信息FUNCTIONSAM(BIN:STD_LOGIC_VECTOR(7DOWNTO0))--2位16进制转2位BCD码函数RETURNSTD_LOGIC_VECTORISVARIABLESBCD,ADDBCD:STD_LOGIC_VECTOR(7DOWNTO0);--定义BCD转换码中间变量VARIABLEN:
8、INTEGERRANGE0TO8;BEGINN:=0;SBCD:="00000000";IFBIN<"01100100"THEN--当输入BIN大于十进制100时,输出为0LOOPIFBIN(N)='1'THEN--根据BIN的每一位选择加上对应的压缩型BCD码CASENISWHEN0=>ADDBCD:="00000001";WHEN1=>ADDBCD:="00000010";WHEN2=>ADDBCD:="00000100";WHEN3=>ADDBCD