网站大量收购独家精品文档,联系QQ:2885784924

基于VHDL交号灯控制器.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于VHDL交号灯控制器

《PLD与现代传感技术应用》 课程论文 基于的的设计 学 院:电信学院 专 业:控制工程 姓 名: 基于的的设计 (辽宁科技大学 电信学院, 电信2010) 摘要:交通灯控制系统在城市交通监管中起着极其重要的作用。应用VHDL语言,在Altera公司的QuartusII软件环境下,通过模块化编程完成了灯亮时间可调的交通灯控制系统设计, 并进行了逻辑综合、 仿真, 系统的软件仿真测试结果满足了设计要求,达到了预期的效果。由于设计采EDA技术,不但大大缩短了开发研制周期, 提高了设计效率,而且使系统具有设计灵活,实现简单, 性能稳定的特点。 关键词:交通灯控制; FPGA; VH DL;仿真 0 引言 交通灯是城市交通监管系统的重要组成部分,对于保证机动车辆的安全运行,维持城市道路的顺畅起到了重要作用。目前很多城市交叉路口的交通灯实行的是 定时控制,灯亮的时间是预先设定好的, 在时间和空间方面的应变性能较差,一定程度上造成了交通资源的浪费,加重了道路交通压力。本文在 EDA 技术的基础 上,利用FPGA 的相关知识设计了交通灯控制系统,可以根据实际情况对灯亮时间进行自由调整,整个设计系统通过Quartus I I软件进行了模拟仿真,并下载到 FPGA 器件中进行硬件的调试, 验证设计的交通信号灯控制电路预定的功能 1 VHDL的特点 随着电子技术的发展 ,数字系统的设计正朝高速度、大容量、小体积的方向发展 ,传统的自底而上的设计方法已难以适应形势。EDA ( Electronic Design Automation)技术的应运而生 ,使传统的电子系统设计发生了根本的变革。EDA 技术就是依赖功能强大的计算机 ,在EDA工具软件平台上 ,对以硬件描述语言VHDL(Very Hieh Speed Integrated Circuit Hardware DescriptionLanguage)为系统逻辑描述手段自顶而下地逐层完成相应的描述、综合、优化、仿真与验证 ,直至生成器件。VHDL 语言是目前应用于数字系统仿真最为实用的语言之一。VHDL 语言最早由美国国防部提出。用VHDL 语言进行数字逻辑电路和数字系统的设计 ,是电子电路设计方法上的一次革命性变革。与传统设计方法相比 ,VHDL 描述电路行为的算法有很多优点: 设计层次较高、 用于较复杂的计算时 ,能尽早发现存在的问题 ,缩短设计周期; (2)独立实现 ,修改方便 ,系统硬件描述能力强; (3)可读性好 ,有利于交流 ,适合于文档保存; (4)VHDL 语言标准、 规范、 移植性强; (5)VHDL 类型众多而且支持用户自定义类型 ,支持自顶而下的设计方法和多种电路的设计。 2 交通灯设计说明 启动交通灯首先将开关 置为高电平则系统就会进入稳定的工作状态。30 秒后 ,均变黄 ,持续秒后,红 , load1为绿。30 秒后 ,均变黄 ,持续秒如此交替循环。3 交通灯设计思路框图4 软件流程图及程序 根据交通灯信号控制的要求,可把它分解为定时器和控制器两部分。CLK:时钟脉冲; :road0红灯;灯;:road1红灯;灯;(如图1所示) 主控制电路设计程序如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; use ieee.std_logic_arith.all; ENTITY fz IS PORT( clk : IN STD_LOGIC; rest : in std_logic; r0,y0,g0,r1,y1,g1: out std_logic ); END ENTITY fz; ARCHITECTURE behavioral OF fz IS constant yellow_time : integer:=5; constant green_time : integer:=30; constant red_time : integer:=30; signal p,f : integer range 0 to 3; signal clk_500 :std_logic; BEGIN temp1: process(clk) variable cnt1 :integer range 0 to 2; variable cnt2 :integer range 0 to 3; BEGIN if clkevent and clk=1 then if cnt

您可能关注的文档

文档评论(0)

owy207 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档