基于vhdl状态机设计的智能交通控制灯
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于vhdl状态机设计的智能交通控制灯
1设计方案
十字路口设计两组交通灯分别操纵东西和南北两个方向的交通。
如图1所示,当东西方向的红灯亮时,南北方向对应绿灯亮,过渡时期黄灯亮,即东西方向红灯亮的时刻等于南北方向绿灯和黄灯亮的时刻之和。
交通灯坚持变亮的时刻取决于键盘输入的操纵键值。
同理,当南北方向的红灯变亮时,东西方向的交通灯也遵循此逻辑。
总体上由状态机实现操纵,本设计中使用两个状态机分别操纵东西和南北两个方向的交通。
每个状态机中都设有4个状态,分别对应红灯亮、绿灯亮、黄灯亮和显现紧急状况时两个方向上的红灯同时变亮,停止倒计时的同时数码管上显现闪耀。
路口的繁忙程度是不一样的,白天时的交通比较繁忙,因此,红绿灯要变化快一些以便提升通过效率,减少拥堵时刻;相反,夜晚交通稀疏,就需要红绿灯变化慢一些。
因此,加入键盘操纵程序来操纵交通坚持变亮状态的连续时刻。
2 总体设计结构框图
总体设计结构框图如图2所示,共有11个功能模块,包括操纵东西方向交通灯的状态机和操纵南北方向交通灯的状态机、计数器模块、键盘扫描模块、数字合成模块、三个分位模块、数码管显示模块、动态显示扫描模块。
用VHDL语言对各个模块进行编程,最后形成顶层文件,在M AX+PLUSⅡ环境下进行编译与仿真,检查所编程序是否运行正确。
如果显现错误,需要进行修改,直到完全通过为止。
需要讲明的是,在进行程序编译时,要先从底层程序开始,所有底层程序都正确后,才能开始顶层程序的编译。
这是因为顶层程序是对底层程序的概括,它是把底层程序各个模块连接起来,相当于把每个模块的功能汇聚到一起,实现整个系统的操纵功能,因此底层程序的正确与否关系到顶层程序的运行结果。
VHDL语言编程生成的结构框图如图3所示。
3 VHDL程序设计
3.1 状态机1(东西方向)程序关键代码
用两个状态机分别操纵东西方向和南北方向上的交通。
从键盘获得红、绿、黄灯的总时刻,红灯时刻占1/2,绿灯时刻占3/8,黄灯时刻占1/8。
红灯状态为S0,绿灯状态为S1,黄灯状态为S2,紧急状态为S3。
当计数器时刻为0时,由红灯状态跳转到绿灯状态,当计数器时刻到达3/8时,由绿灯状态跳转到黄灯状态。
当到达一半时刻时,由黄灯状态跳转到红灯状态。
当hold为1时,由任意状态跳转到紧急状态。
3.2 计数器源程序代码
3.3 分位程序源代码
4 仿真结果
东西方向和南北方向状态机仿真结果如图4、5所示,从图4能够看出,getin是从键盘获得的键值,那个地点输入的是40 s,初始状态为S 0状态.红灯亮。
从S0状态跳转到S1状态即由红灯状态跳转到绿灯状态时,数码管显示的倒计时从15 s开始;当由S1状态跳转到S2状态即由绿灯状态跳转到黄灯状态时,GREENA由高电平变为低电平,YELLOWA由低电平变为高电平。
倒计时时刻从5s开始。
南北方向仿真图与东西方向类似,
那个地点不再赘述。
计数器从键盘上得到的键值为40 s,从仿真图(图6所示)上能够看出,计数器能正常计数。
从仿真结果能够看出,计数器能够正常计数,状态机状态能够正确状态变换。
东西方向初始状态为绿灯,从15开始倒计时,南北方向初始状态为红灯,从20开始倒计时。
该系统硬件电路包含了1个CPLD,6个7段LED数码显示器,分别表示各个方向上的红、黄、绿灯,以及相应的限流电阻。
与其他操纵方法相比,所用器件能够讲是比较简单经济的。
通过实验,实现了预定的交通灯系统的操纵功能。
数码显示器采纳动态扫描方式,大大节约了资源。
5 终止语
该交通灯操纵逻辑能够实现3种颜色灯的交替点亮以及时刻的倒计时,指挥车辆和行人安全通行。
本文介绍的是一种最差不多和简单的交通灯设计情形,同时提供了一些模块的源程序代码。
在此基础上能够举一反三,从而用VHDL语言实现其它交通灯的操纵设计。
随着EDA技术的进展,在今后的电子产品研究开发中,EDA技术具有更好的开发手段和性价比,拥有广泛的市场应用前景。