基于FPGA技术的交通灯控制系统设计
计数模块的
仿真如图3所示,从图中可以看出,在时钟的驱动下,计数值不断自加,当计数值countnum等于键盘输入值32(key=32)时,计数返回到0,开始下一轮计数。当Hold检测到特殊情况时置‘1’,使计数器暂停计数。
3.2 控制器模块的
仿真
设计
在控制器模块中,红、绿、黄三盏灯工作的总时间由键盘输入,各
交通灯时间分配规则如下:红灯时间占总时间的1/2,绿灯时间占3/8,黄灯时间占1/8,本
设计中键盘输入值为32(key=32),正常情况下红灯亮16 s,绿灯亮12 s,黄灯亮4 s。
![](http://m.amcfsurvey.com/editerupload/fetch/20130906/169505_2_0.jpg)
控制器
仿真情况如图4所示,当hold为低电平,计数值countnum12时,greenA输出高电平,A东西方向绿灯亮起车辆通行,此时与之相对应的redB输出高电平,B方向红灯亮起车辆禁行。A方向显示
交通灯闪烁持续时间的数码管numA从12开始递减,同时B方向显示
交通灯闪烁持续时间的数码管numB从16开始递减。当12countnum16时,yellowA输出高电平,A方向黄灯亮起,numA从数值4开始倒计时,此时greenB仍处于低电平,numB继续倒计时,B方向红灯闪亮车辆仍处于禁行状态。当countnum>16,redA输出高电平,A方向红灯亮起车辆禁行,numA从数值16开始倒计时,此时greenB输出高电平,B方向绿灯亮起车辆通行,numB从数值12开始递减。当16countnum28时,redA继续处于高电平状态,numA继续倒计时,A方向车辆禁行,而此时yellowB输出高电平,B方向黄灯亮起,numB从数值4开始递减。当hold为‘1’时,表示进入紧急状态,FLASH置‘1’,各方向的红灯均亮起,所有机动车禁行。
3.3 分位模块
设计
分位模块的设计主要是将灯亮时间分为十位和个位,通过两个相应的数码管分别显示出来。本设计中灯亮时间最长不超过40 s(numin40),numA,numB分别表示十位、个位上的数字,分位模块程序设计的流程图如图5所示。
评论