- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于FPGA交通灯控制系统设计
基于FPGA交通灯控制系统设计
【摘要】以可编程逻辑器件(FPGA)为载体,采用状态机的设计思想对十字路口交通灯的状态及其相互转移关系的描述,运用时序和组合逻辑等进程描述硬件模块间的逻辑关系,用Very-High-Speed Integrated Circuit HardwareDescription Language(简称VHDL)编程实现了十字路口交通的控制。经波形仿真,并下载到EPIC3T144C8芯片进行了硬件调试,达到了设定的功能仿真,整个程序设计思路清晰,硬件电路简单,实现过程灵活。
【关键词】FPGA;状态机;交通灯;VHDL
1.引言
目前在教学中运用软件实现交通灯的控制可以用标准逻辑器件、可编程序控制器PLC、单片机等方案来实现。但是这些方法在进行功能修改及调试时,都涉及硬件电路的调整,在一定程度上增加了工作的难度,另外对初学者而言,设计程序也有一定困难,采用可编程逻辑器件FPGA,应用状态机来设计控制系统的控制功能,可根据实际情况对灯亮时间进行自由调整,整个系统通过QuartusⅡ9.0软件平台进行了仿真,同时下载到EP1C3T144C8中进行调试,验证了交通信号灯控制电路预定的功能。采取状态机进行控制,学生容易接受。对初学者而言,有一定的指导意义。利用状态机设计一般步骤:首先将行为状态转换成符号状态,接着将符号状态转换成真值表,利用真值表列出状态转换的组合逻辑、时序逻辑关系,编写程序、芯片选择、引脚锁定和下载调试。
2.交通灯行为分析
任何模型和控制对象建立,均要找出运行规律,将行为语言转换为数字符号,以便于控制。下面以十字路口双向六车道为例介绍交通灯的控制情况,东西方向交通流直行即东西方向交通流左转,南北方向交通流直行,南北方向交通流左转,所有右转方向交通流不予控制。交通灯控制示意图如图1所示。
图1 双向六车道的示意图
根据交通运行规则,在十字路口双向六车道中有下列6种循环的工作状态,顺序为,顺序为:S0→S1→S2→S3→S4→S5。在各方向的交通灯运行状态有绿灯亮、黄灯亮、左转弯亮、红灯亮,详细情况如表1所示。
表1 交通灯的状态转换规律表
工作状态 东西方向 符号 时间(秒) 南北方向 符号 时间(秒)
S0 绿灯亮 GA 40 红灯亮 GB 60
S1 黄灯亮 YA 5 红灯亮 YB
S2 左转弯亮 LTA 15 红灯亮 LTB
S3 红灯亮 RA 60 绿灯亮 RB 40
S4 红灯亮 黄灯亮 5
S5 红灯亮 左转弯亮 15
为了便于利用状态机进行程序设计,用1表示指示灯亮,0指示灯灭,根据状态转换规律转化成真值表如2所示。
3.程序设计
本设计选用有限状态机FSM(finite state machine)来进行设计,状态机,与可完成相同功能的CPU相比,有限状态机有其独特的、难以超越的优越性,利用VHDL的有限状态机设计不同实用逻辑控制系统时,通常采用枚举类型来定义状态机的状态,这样可以获得可综合的、高效的VHDL描述,并且使用多进程方式来描述状态机的内部逻辑。在程序设计中一般由说明部分、组合部分、时序部分组成,用TYPE定义新的数据类型和状态名,以及在此新数据下定义的状态变量。本设计采用状态机来进行顶层文件的设计,状态机的说明语句如下:
type state is(S0,S1,S2,S3,S4,S5);
signal presentstate,nextstate:state;
该程序结构体分成以下四个部分:
3.1 分频器秒脉冲的产生程序
由于选择芯片的某引脚输出信号为4HZ,则进行四分频就可以得到1HZ的信号,clk定义为输入信号,sec为结构体时序转换的逻辑信号,则程序如下:
——get 1 hz clock pulse
process(clk)
begin
if clkevent and clk=1then q=q+1;end if;
sec=q(2);——get 1 hz clock pulse
end process;
3.2 交通灯时序控制程序
根据交通灯的状态转换规律表中需要有40秒、5秒、15秒三个转换时间,为了方便状态转换描述,定义了timeout1、timeout2、timeout3三个时间标致信号,为1时表示时间结束,而且三个时间有先后顺序,Presentstate =nextstate达到了状态在时序条件下转换。则得到了流程图如图2所示。
图2 交通灯时序控制流程图
如下的时序控制程序:
timing:process(sec)
begin
文档评论(0)